<section class="course-availability-pro-level" data-behavior="course-availability-pro-level" data-course-name="W1VC" data-course-blockid="" data-course-isprocourse="true">
    <div class="pro-level-1">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <h2>Find courses in your preferabel region or location</h2>
                <div class="pro-level-copy">This block will be used so that the content manager
                    can put in caveats around travel/distances etc for UEFA C/B
                    and the A license as the 'ruleset' is different for each
                </div>
                <hr>
                <div class="pro-level-location">
                    <p>1. Select desired location:</p>
                    <label>Use your current location or type in a location</label>
                    <button class="cta cta--primary  pro-level-current-location" id="pro-level-current-location" aria-label="use current location">Use current location</button>
                    <button class="cta cta--primary  current-location-found hidden" id="current-location-found" aria-label="location found">Location found</button>
                    <button class="cta cta--primary  location-not-found hidden" aria-label="select desired location">Location Not Found, manually enter below</button>
                    <button class="cta cta--primary  pro-enter-location-cta" aria-label="enter location">Enter Location</button>
                    <div class="pro-level-location__postcode hidden">
                        <div id="proLevelSearchBoxContainer">
                            <input type="text" id="proLevelSearchBox" class="pro-level-location__postcode-input" placeholder="Enter Location" autocomplete="off" />
                        </div>
                    </div>
                </div>
                <hr>
                <div class="pro-level-location">
                    <p>2. Select desired travel distance:</p>
                    <label>Choose the maximum distance you wish to travel</label>
                    <div class="pro-level-location__distance">
                        <div class="pro-level-location__distance--label" aria-label="select desired travel distance" role="combobox" tabindex="0" aria-labelledby="pro-level-distance" aria-expanded="false">
                            <span class="filter">Select distance</span>
                        </div>
                        <div aria-expanded="false" class="pro-level-location__distance--list">
                            <ul>
                                <li tabindex="0" data-value="">Select distance</li>
                                <li tabindex="0" data-value="5">5 Miles</li>
                                <li tabindex="0" data-value="10">10 Miles</li>
                                <li tabindex="0" data-value="20">20 Miles</li>
                                <li tabindex="0" data-value="25">25 Miles +</li>
                            </ul>
                        </div>
                        <select class="pro-level-location__distance--select">
                            <option value="">Select distance</option>
                            <option value="5">5 Miles</option>
                            <option value="10">10 Miles</option>
                            <option value="20">20 Miles</option>
                            <option value="25">25 Miles +</option>
                        </select>
                    </div>
                </div>
                <hr style="margin-bottom: 2.4rem;">
                <button class="cta cta--efl  search-pro-level-course" aria-label="search course" disabled="disabled">Search</button>
            </div>
        </div>
        <input type="hidden" class="search-longitude" value="" />
        <input type="hidden" class="search-latitude" value="" />
        <input type="hidden" class="search-distance" value="" />
        <input type="hidden" class="search-place" value="" />
    </div>
    <div class="pro-level-2 hidden">
        <div class="loading">
            <div class="loader"></div>
            <div class="efl-logo"></div>
        </div>
    </div>
    <div class="pro-level-3 hidden">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <h2>Your nearest UEFA B course locations</h2>
                <div class="pro-level-copy">
                    Showing UEFA B courses <span class="range"></span>
                </div>
                <hr>
                <div class="pro-level-location__clear" role="button" tabindex="0" aria-label="clear results">Clear results</div>
                <div class="course-venue-list__list">
                    <div class="course-venue-individual  hidden" data-behaviour="course-venue-item">
                        <div class="course-venue-individual__inner">
                            <div class="course-venue-individual__information">
                                <div>
                                    <h3 class="venue-dt">Monday 05 Feb 2022</h3>
                                </div>
                                <div class="course-venue-individual__distance venue-dist">35M</div>
                            </div>
                            <div class="course-venue-individual__information">
                                <div>
                                    <p>Address</p>
                                    <h3>
                                        <div class="venue-name">VenueName 1</div>
                                    </h3>
                                </div>
                            </div>
                            <div class="course-venue-individual__showhide">
                                <div class="schedule-cta" role="button" tabindex="0" aria-label="show schedule" aria-expanded="false" aria-level="expand" data-show="Show Schedule" data-hide="Hide Schedule">
                                    <p>Show Schedule</p>
                                </div>
                            </div>
                            <div aria-expanded="false" class="course-venue-individual__content">
                                <div class="course-venue-individual__days">
                                    <h3>Day One</h3>
                                    <p>
                                        <span class="venue-sche-dt">Wednesday 12 Sep</span>
                                        <span class="middle-seperator">|</span>
                                        <span class="venue-sche-time">5:00 PM - 6:00PM</span>
                                    </p>
                                </div>
                                <div class="note">
                                    <h3>
                                        + Blended Learning, Face to Face online with Teachers, Webinars &amp; Journalling
                                    </h3>
                                </div>
                            </div>
                            <a href="/" class="cta cta--efl  " tabindex="0">APPLY TO ATTEND</a>

                        </div>
                    </div>

                </div>
                <button class="pro-level-location__show-more" data-show="Show More" data-hide="Show less">Show More</button>
            </div>
        </div>
    </div>
    <div class="pro-level-4 hidden">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <div class="pro-level-location__alert">
                    <div class="pro-level-location__alert--title">No Courses Found</div>
                    <div class="pro-level-location__alert--info">There are currently no courses available</div>
                    <p>Course currently not available in desired location. Try expanding your location radius </p>
                    <div class="pro-level-location__distance">
                        <div class="pro-level-location__distance--label" role="combobox" tabindex="0" aria-labelledby="pro-level-distance" aria-expanded="false">
                            <span class="filter">5 Miles</span>
                        </div>
                        <div aria-expanded="false" class="pro-level-location__distance--list">
                            <ul>
                                <li tabindex="0" data-value="5">5 Miles</li>
                                <li tabindex="0" data-value="10">10 Miles</li>
                                <li tabindex="0" data-value="20">20 Miles</li>
                                <li tabindex="0" data-value="25">25 Miles +</li>
                            </ul>
                        </div>
                        <select class="pro-level-location__distance--select">
                            <option value="5">5 Miles</option>
                            <option value="10">10 Miles</option>
                            <option value="20">20 Miles</option>
                            <option value="25">25 Miles +</option>
                        </select>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="pro-level-5 hidden">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <div class="pro-level-location__alert">
                    <div class="pro-level-location__alert--title">No Courses Found</div>
                    <div class="pro-level-location__alert--info">Check back again later</div>
                    <p>Course currently not available in desired location. Try expanding your location radius</p>
                    <button class="cta cta--efl  start-new-search" aria-label="no sourse found, start new search">START A NEW SEARCH</button>
                </div>
            </div>
        </div>
    </div>
    <div class="pro-level-6 hidden">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <div class="pro-level-location__alert">
                    <div class="pro-level-location__alert--title">DISTANCE ALERT</div>
                    <div class="pro-level-location__alert--info">Please note that you are advised apply
                        for a course close to your location</div>
                    <p>If you are applying for a course that is a sigificant distance from your location there is a higher chance your application may be rejected</p>
                    <button class="cta cta--efl  distance-range-alert" aria-label="next">Next</button>
                </div>
            </div>
        </div>
    </div>
</section>

No notes defined.

{
  "cta1": {
    "copy": "Use current location",
    "modifier": "primary",
    "id": "pro-level-current-location",
    "additionalClass": "pro-level-current-location"
  },
  "cta2": {
    "copy": "Search",
    "modifier": "efl",
    "href": "",
    "additionalClass": "search-pro-level-course"
  },
  "cta3": {
    "copy": "Location found",
    "modifier": "primary",
    "id": "current-location-found",
    "additionalClass": "current-location-found hidden"
  },
  "cta4": {
    "copy": "START A NEW SEARCH",
    "modifier": "efl",
    "href": "",
    "additionalClass": "start-new-search"
  },
  "cta5": {
    "copy": "Next",
    "modifier": "efl",
    "href": "",
    "additionalClass": "distance-range-alert"
  },
  "cta6": {
    "copy": "Location Not Found, manually enter below",
    "modifier": "primary",
    "href": "",
    "additionalClass": "location-not-found hidden"
  },
  "cta7": {
    "copy": "Enter Location",
    "modifier": "primary",
    "href": "",
    "additionalClass": "pro-enter-location-cta"
  },
  "course-availability": {
    "signed-in-online-cta": {
      "copy": "APPLY TO ATTEND",
      "modifier": "efl"
    },
    "hide-space-left": true
  }
}
  • Content:
    import { Dialog } from '../lightbox-overlay/lightbox-overlay';
    import courseVenueItem from '../course-venue-result/individual/course-venue-individual';
    
    export default parentElement => {
      const DIALOG_ID = 'pro-level-courses-dialog';
      const {
        courseName,
        courseBlockid,
        courseIsprocourse,
      } = parentElement.dataset;
      const headers = {
        // 'Ocp-Apim-Subscription-Key': '8279c7fab35f432daf1a0bd395a9ae48',
      };
      const currentBtn = parentElement.querySelector('.pro-level-current-location');
      const locationFound = parentElement.querySelector('.current-location-found');
      const locationNotFound = parentElement.querySelector('.location-not-found');
      const enterLocationCta = parentElement.querySelector(
        '.pro-enter-location-cta'
      );
      const map = parentElement.querySelector('.MicrosoftMap');
      const dropdownDivAll = parentElement.querySelectorAll(
        '.pro-level-location__distance--label'
      );
      const MOBILE_BREAKPOINT = 820;
      const selectAll = parentElement.querySelectorAll(
        '.pro-level-location__distance--select'
      );
      const searchBlock = parentElement.querySelector(
        '.pro-level-location__postcode'
      );
      const searchBox = parentElement.querySelector('#proLevelSearchBox');
      const longitudeInput = parentElement.querySelector('.search-longitude');
      const latitudeInput = parentElement.querySelector('.search-latitude');
      const distanceVal = parentElement.querySelector('.search-distance');
      const searchPlace = parentElement.querySelector('.search-place');
      const searchBtn = parentElement.querySelector('.search-pro-level-course');
      const step1 = parentElement.querySelector('.pro-level-1');
      const step2 = parentElement.querySelector('.pro-level-2');
      const step3 = parentElement.querySelector('.pro-level-3');
      const step4 = parentElement.querySelector('.pro-level-4');
      const step5 = parentElement.querySelector('.pro-level-5');
      const loadMoreCta = parentElement.querySelector(
        '.pro-level-location__show-more'
      );
      const defaultCount = 3;
      let totalPage = 0;
      const htmlClone = parentElement.querySelector('.course-venue-individual');
      const clearBtn = parentElement.querySelector('.pro-level-location__clear');
      const startNewSearch = parentElement.querySelector('.start-new-search');
      let distance1 = true;
      let distance2 = true;
      let distance3 = true;
      let distance4 = true;
    
      const dateFormater = (dateStr, year) => {
        const stDate = new Date(dateStr);
        const weekday = [
          'Sunday',
          'Monday',
          'Tuesday',
          'Wednesday',
          'Thursday',
          'Friday',
          'Saturday',
        ];
        const month = [
          'Jan',
          'Feb',
          'Mar',
          'Apr',
          'May',
          'Jun',
          'Jul',
          'Aug',
          'Sep',
          'Oct',
          'Nov',
          'Dec',
        ];
        const stDay = weekday[stDate.getDay()];
        const stDt =
          stDate.getDate() > 10 ? stDate.getDate() : `0${stDate.getDate()}`;
        const stMonth = month[stDate.getMonth()];
    
        if (year) {
          return `${stDay} ${stDt} ${stMonth} ${stDate.getFullYear()}`;
        }
        return `${stDay} ${stDt} ${stMonth}`;
      };
    
      const numToWord = num => {
        const str = [
          '',
          'One',
          'Two',
          'Three',
          'Four',
          'Five',
          'Six',
          'Seven',
          'Eight',
          'Nine',
          'Ten',
        ];
    
        return str[num] ? str[num] : num;
      };
    
      const validateForm = () => {
        if (!longitudeInput.value || !latitudeInput.value || !distanceVal.value) {
          searchBtn.setAttribute('disabled', 'disabled');
          return;
        }
        searchBtn.removeAttribute('disabled');
      };
    
      const searchByCurrentLocation = target => {
        if (navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(
            position => {
              longitudeInput.value = position.coords.longitude;
              latitudeInput.value = position.coords.latitude;
              searchPlace.value = '';
    
              target.querySelector('.loading').remove();
              target.classList.remove('searching');
              target.classList.add('hidden');
              locationFound.classList.remove('hidden');
              locationFound.focus();
              validateForm();
            },
            error => {
              console.log(error);
              target.classList.remove('searching');
              target.querySelector('.loading').remove();
              target.classList.add('hidden');
              locationNotFound.classList.remove('hidden');
              searchBlock.classList.remove('hidden');
            }
          );
        } else {
          // eslint-disable-next-line no-console
          console.log('Geolocation is not supported by this browser.');
        }
      };
    
      const searchByLocation = event => {
        event.preventDefault();
        const { target } = event;
    
        if (!target.classList.contains('searching')) {
          target.classList.add('searching');
          target.insertAdjacentHTML(
            'beforeend',
            '<div class="loading"><span class="efl-logo"></span><span class="loader"></span></div>'
          );
        }
        searchByCurrentLocation(target);
      };
    
      function loadMapScenario() {
        function selectedSuggestion(suggestionResult) {
          // eslint-disable-next-line  no-unused-vars
          const { location, formattedSuggestion } = suggestionResult;
          const { longitude, latitude } = location;
    
          longitudeInput.value = longitude;
          latitudeInput.value = latitude;
          searchPlace.value = formattedSuggestion;
          searchBox.classList.add('location-added');
          // currentBtn.classList.remove('hidden');
          // locationFound.classList.add('hidden');
    
          validateForm();
        }
    
        function searchLoad() {
          const options = { maxResults: 4 };
          const manager = new window.Microsoft.Maps.AutosuggestManager(options);
    
          manager.attachAutosuggest(
            `#proLevelSearchBox`,
            `#proLevelSearchBoxContainer`,
            selectedSuggestion
          );
        }
    
        function onError(message) {
          // eslint-disable-next-line  no-console
          console.log(message);
        }
    
        const mapIntervel = setInterval(() => {
          if (window.Microsoft.Maps.loadModule) {
            window.Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {
              callback: searchLoad,
              errorCallback: onError,
            });
            clearInterval(mapIntervel);
          }
        }, 100);
      }
    
      const loadBingMapSerch = () => {
        const tag = document.createElement('script');
        // eslint-disable-next-line no-undef
        const mapScriptUrl = `//www.bing.com/api/maps/mapcontrol?key=${bingMapKey}`;
    
        tag.setAttribute('defer', '');
        tag.setAttribute('async', '');
        tag.setAttribute('type', 'text/javascript');
        tag.setAttribute('src', mapScriptUrl);
        const firstScriptTag = document.getElementsByTagName('script')[0];
    
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
        tag.onload = () => {
          loadMapScenario();
        };
      };
    
      async function searchVenueCallback(longitude, latitude) {
        // replace url with `/seachVenue/` in development to see results
        // const url = `/Courses/GetAvailableCourses/?postCodeLon=${longitude}
        // &postCodeLat=${latitude}&courseName=${courseName}`;
    
        let blockid = '';
    
        if (courseBlockid) {
          blockid = `&blockId=${courseBlockid}`;
        }
    
        const distance = distanceVal.value;
    
        const url = `${
          window.location.origin
        }/Courses/GetAvailableCourses/?postCodeLon=${longitude}&postCodeLat=${latitude}&courseName=${courseName}&distance=${distance}&isProCourse=${courseIsprocourse}${blockid}`;
        // eslint-disable-next-line compat/compat
        const response = await fetch(url, {
          headers,
        });
    
        return response.json();
      }
    
      const formatVenueList = sortCoursesList => {
        if (sortCoursesList.length) {
          const lists = parentElement.querySelectorAll('.course-venue-individual');
    
          lists.forEach((list, index) => {
            if (index) {
              list.remove();
            }
          });
          sortCoursesList.forEach(course => {
            const copyHtml = htmlClone.cloneNode(true);
            const listDiv = parentElement.querySelector('.course-venue-list__list');
            const startDate = dateFormater(course.courseStartDate, true);
    
            copyHtml.classList.remove('hidden');
            copyHtml.querySelector('.venue-dt').innerText = startDate;
            // eslint-disable-next-line radix
            copyHtml.querySelector('.venue-dist').innerText = `${course.distance}M`;
            copyHtml.querySelector('.venue-name').innerText = course.venueName;
            // copyHtml.querySelector('.venue-addr').innerText = course.address;
            const sessionHtml = copyHtml.querySelector(
              '.course-venue-individual__days'
            );
    
            course.sessions.forEach((session, index) => {
              const sessionsClone = sessionHtml.cloneNode(true);
    
              // eslint-disable-next-line no-param-reassign
              sessionsClone.querySelector('h3').innerText = `Day ${numToWord(
                index + 1
              )}`;
    
              const dateStringArray = session.startDate.split(' ');
              const monthStr = dateStringArray[dateStringArray.length - 1].slice(
                0,
                3
              );
    
              dateStringArray[dateStringArray.length - 1] = monthStr;
    
              const formattedDateStr = dateStringArray.join(' ');
    
              // eslint-disable-next-line no-param-reassign
              sessionsClone.querySelector(
                '.venue-sche-dt'
              ).innerText = formattedDateStr;
              // eslint-disable-next-line no-param-reassign
              sessionsClone.querySelector('.venue-sche-time').innerText = `${
                session.startTime
              } - ${session.endTime}`;
              copyHtml
                .querySelector('.course-venue-individual__content')
                .insertBefore(sessionsClone, sessionHtml);
            });
            // remove clone object
            sessionHtml.remove();
            copyHtml.querySelector('.cta').href = decodeURIComponent(
              course.booklinkUrl
            );
            listDiv.appendChild(copyHtml);
          });
    
          const courseVenueItemElements = document.querySelectorAll(
            '[data-behaviour=course-venue-item]'
          );
    
          if (courseVenueItemElements) {
            courseVenueItemElements.forEach(courseVenueItemElement =>
              courseVenueItem(courseVenueItemElement)
            );
            if (totalPage <= defaultCount) {
              loadMoreCta.classList.add('hidden');
            } else {
              loadMoreCta.classList.remove('hidden');
              const items = parentElement.querySelectorAll(
                '.course-venue-individual:not(.hidden)'
              );
    
              items.forEach((item, index) => {
                if (index >= defaultCount) {
                  item.classList.add('showhide');
                }
              });
            }
          }
        }
      };
    
      const setDistanceFlag = () => {
        const dist = distanceVal.value;
    
        switch (dist) {
          case '5':
            distance1 = false;
            break;
          case '10':
            distance2 = false;
            break;
          case '20':
            distance3 = false;
            break;
          case '25':
            distance4 = false;
            break;
          default:
            console.log(`Sorry, we are out of ${dist}.`);
        }
      };
    
      const swithScreen = current => {
        step1.classList.add('hidden');
        step2.classList.add('hidden');
        step3.classList.add('hidden');
        step4.classList.add('hidden');
        step5.classList.add('hidden');
    
        current.classList.remove('hidden');
      };
    
      const resetProLevelSearch = () => {
        swithScreen(step1);
        distance1 = true;
        distance2 = true;
        distance3 = true;
        distance4 = true;
        longitudeInput.value = '';
        latitudeInput.value = '';
        searchPlace.value = '';
        distanceVal.value = '';
        searchBox.value = '';
        searchBox.classList.remove('location-added');
        currentBtn.classList.remove('hidden');
        locationFound.classList.add('hidden');
        locationNotFound.classList.add('hidden');
        searchBlock.classList.add('hidden');
        enterLocationCta.classList.remove('hidden');
        const distDiv = parentElement.querySelector('.pro-level-1');
        const selectDiv = distDiv.querySelector(
          '.pro-level-location__distance--label span.filter'
        );
        const select = distDiv.querySelector(
          '.pro-level-location__distance--select'
        );
    
        select.value = '';
        select.dispatchEvent(new Event('change'));
        selectDiv.innerText = select.options[select.selectedIndex].innerText;
    
        validateForm();
      };
    
      const checkVenueAvailable = firstScreen => {
        const longitude = longitudeInput.value;
        const latitude = latitudeInput.value;
    
        try {
          searchVenueCallback(longitude, latitude).then(response => {
            swithScreen(step2);
            if (response && response.isCourseAvailable) {
              // venueListData = response;
              let locationPlace;
    
              if (searchPlace.value) {
                locationPlace = searchPlace.value;
              } else {
                locationPlace = 'your location';
              }
              if (distanceVal.value === '25') {
                step3.querySelector('.range').innerText = `more than ${
                  distanceVal.value
                } miles of, ${locationPlace}`;
              } else {
                step3.querySelector('.range').innerText = `within ${
                  distanceVal.value
                } miles of, ${locationPlace}`;
              }
              swithScreen(step3);
              setTimeout(() => {
                clearBtn.focus();
              }, 100);
    
              const coursesList = response.offlineCourses;
    
              totalPage = coursesList.length;
              formatVenueList(coursesList);
              // console.log(response);
            } else {
              setDistanceFlag();
              if (!distance1 && !distance2 && !distance3 && !distance4) {
                swithScreen(step5);
              } else {
                if (firstScreen === 'true') {
                  const selectDiv = step4.querySelector(
                    '.pro-level-location__distance--label span.filter'
                  );
                  const select = step4.querySelector(
                    '.pro-level-location__distance--select'
                  );
                  const select1 = step1.querySelector(
                    '.pro-level-location__distance--select'
                  );
    
                  select.value = select1.value;
                  selectDiv.innerText =
                    select1.options[select1.selectedIndex].innerText;
                }
    
                swithScreen(step4);
                // swithScreen(step5);
              }
            }
          });
        } catch (e) {
          throw new Error('Uable to retrive match score ::', e);
        }
      };
    
      const generateLightBox = labelId => {
        let html = parentElement.querySelector('.pro-level-6').outerHTML;
    
        html = html.replace('class="pro-level-6 hidden"', 'class="pro-level-6"');
        return `
        <div role="dialog" id="${DIALOG_ID}" aria-labelledby="${labelId}" aria-modal="true" class="lightbox-overlay">
          <div class="course-availability-pro-level modal-no-bg">
              ${html}
          </div>
        </div>`;
      };
    
      const removeLightBox = () => {
        document.getElementById(DIALOG_ID).remove();
      };
    
      const openLightbox = focusBtn => {
        // Create the lightbox
        const lightboxContainer = document.createElement('div');
    
        lightboxContainer.innerHTML = generateLightBox({
          labelId: focusBtn.getAttribute('id'),
        });
        document.body.appendChild(lightboxContainer);
        // eslint-disable-next-line no-new
        new Dialog({
          dialogId: DIALOG_ID,
          focusAfterClosed: focusBtn,
          focusFirst: 'close',
          closeCallBack: () => removeLightBox(),
        });
    
        // lightboxContainer.querySelector('#close').focus();
    
        const alertBtn = lightboxContainer.querySelector('.distance-range-alert');
    
        alertBtn.addEventListener('click', e => {
          e.preventDefault();
          removeLightBox();
        });
      };
    
      const loadMoreVenue = () => {
        const items = parentElement.querySelectorAll(
          '.course-venue-individual.showhide'
        );
    
        items.forEach((item, index) => {
          if (index < defaultCount) {
            item.classList.remove('showhide');
          }
        });
    
        if (items.length <= defaultCount) {
          loadMoreCta.classList.add('hidden');
        }
      };
    
      // Find current location coordinates
      currentBtn.addEventListener('click', e => {
        longitudeInput.value = '';
        latitudeInput.value = '';
        searchBox.value = '';
        searchBox.classList.remove('location-added');
        searchBlock.classList.add('hidden');
        enterLocationCta.classList.add('hidden');
        searchByLocation(e);
      });
    
      if (!map) {
        loadBingMapSerch();
      }
    
      searchBox.addEventListener('focus', () => {
        currentBtn.classList.add('hidden');
        locationNotFound.classList.add('hidden');
      });
    
      searchBox.addEventListener('keydown', () => {
        currentBtn.classList.add('hidden');
        locationNotFound.classList.add('hidden');
      });
    
      searchBox.addEventListener('input', e => {
        if (!e.target.value) {
          longitudeInput.value = '';
          latitudeInput.value = '';
          locationFound.classList.add('hidden');
          locationNotFound.classList.add('hidden');
          searchBox.classList.remove('location-added');
        }
      });
    
      const setSelectedListItem = e => {
        const { target } = e;
        const distDiv = target.closest('.pro-level-location__distance');
        const selectDiv = distDiv.querySelector(
          '.pro-level-location__distance--label span.filter'
        );
        const select = distDiv.querySelector(
          '.pro-level-location__distance--select'
        );
    
        selectDiv.innerText = target.innerText;
        select.value = target.getAttribute('data-value');
        distanceVal.value = target.getAttribute('data-value');
        select.dispatchEvent(new Event('change'));
    
        validateForm();
      };
    
      const closeList = event => {
        const { target } = event;
        const distDiv = target.closest('.pro-level-location__distance');
        const selectDiv = distDiv.querySelector(
          '.pro-level-location__distance--label span.filter'
        );
        const dropdown = distDiv.querySelector(
          '.pro-level-location__distance--list'
        );
        const dropdownDiv = distDiv.querySelector(
          '.pro-level-location__distance--label'
        );
    
        selectDiv.classList.remove('active');
        dropdown.setAttribute('aria-expanded', 'false');
        dropdownDiv.setAttribute('aria-expanded', 'false');
      };
    
      dropdownDivAll.forEach(dropdownDiv => {
        const dropdown = dropdownDiv.nextElementSibling;
        const dropdownListItems = dropdown.querySelectorAll('li');
    
        dropdownDiv.addEventListener('click', e => {
          const { target } = e;
          const distDiv = target.closest('.pro-level-location__distance');
          const selectDiv = distDiv.querySelector(
            '.pro-level-location__distance--label span.filter'
          );
    
          if (window.innerWidth >= MOBILE_BREAKPOINT) {
            const isExpanded = dropdown.getAttribute('aria-expanded') === 'true';
            const isExpandedDiv =
              dropdownDiv.getAttribute('aria-expanded') === 'true';
    
            if (!isExpanded && !isExpandedDiv) {
              dropdown.setAttribute('aria-expanded', 'true');
              dropdownDiv.setAttribute('aria-expanded', 'true');
              selectDiv.classList.add('active');
            } else {
              dropdown.setAttribute('aria-expanded', 'false');
              dropdownDiv.setAttribute('aria-expanded', 'false');
              selectDiv.classList.remove('active');
            }
          }
        });
    
        dropdownDiv.addEventListener('keydown', event => {
          if (event.keyCode === 13) {
            event.preventDefault();
    
            dropdownDiv.click();
          } else if (event.keyCode === 40) {
            dropdownListItems[0].focus();
          }
        });
    
        dropdownListItems.forEach((item, index) => {
          item.addEventListener('click', e => {
            const { target } = e;
    
            setSelectedListItem(e);
            closeList(e);
    
            if (target.closest('.pro-level-4')) {
              swithScreen(step2);
              checkVenueAvailable('false');
            }
    
            setTimeout(() => {
              dropdownDiv.focus();
            }, 10);
          });
    
          item.addEventListener('keydown', e => {
            if (e.keyCode === 40) {
              if (dropdownListItems[index + 1]) {
                dropdownListItems[index + 1].focus();
              }
            } else if (e.keyCode === 38) {
              if (dropdownListItems[index - 1]) {
                dropdownListItems[index - 1].focus();
              }
            } else if (e.keyCode === 13) {
              item.click();
            }
          });
        });
      });
    
      selectAll.forEach(select => {
        select.addEventListener('change', event => {
          const { target } = event;
          const distDiv = target.closest('.pro-level-location__distance');
          const selectDiv = distDiv.querySelector(
            '.pro-level-location__distance--label span.filter'
          );
    
          setTimeout(() => {
            target.classList.remove('active');
            selectDiv.innerText = target.options[target.selectedIndex].innerText;
            distanceVal.value = target.value;
            if (target.value === '25' && target.closest('.pro-level-1')) {
              openLightbox(searchBtn);
            }
            validateForm();
    
            if (target.closest('.pro-level-4')) {
              swithScreen(step2);
              checkVenueAvailable('false');
            }
          }, 100);
        });
      });
    
      selectAll.forEach(select => {
        select.addEventListener('click', event => {
          const { target } = event;
          const distDiv = target.closest('.pro-level-location__distance');
          const selectDiv = distDiv.querySelector(
            '.pro-level-location__distance--label span.filter'
          );
    
          if (select.classList.contains('active')) {
            selectDiv.classList.remove('active');
            target.classList.remove('active');
          } else {
            selectDiv.classList.add('active');
            target.classList.add('active');
          }
        });
      });
    
      searchBtn.setAttribute('disabled', 'disabled');
    
      searchBtn.addEventListener('click', e => {
        e.preventDefault();
        if (!longitudeInput.value || !latitudeInput.value || !distanceVal.value) {
          return;
        }
        swithScreen(step2);
        checkVenueAvailable('true');
      });
    
      searchBtn.addEventListener('keydown', event => {
        if (event.keyCode === 13) {
          event.preventDefault();
    
          searchBtn.click();
        }
      });
    
      clearBtn.addEventListener('click', e => {
        e.preventDefault();
        resetProLevelSearch();
        setTimeout(() => {
          currentBtn.focus();
        }, 10);
      });
    
      clearBtn.addEventListener('keydown', event => {
        if (event.keyCode === 13) {
          event.preventDefault();
    
          clearBtn.click();
        }
      });
    
      startNewSearch.addEventListener('click', e => {
        e.preventDefault();
        resetProLevelSearch();
      });
    
      startNewSearch.addEventListener('keydown', event => {
        if (event.keyCode === 13) {
          event.preventDefault();
    
          startNewSearch.click();
        }
      });
    
      loadMoreCta.addEventListener('click', e => {
        e.preventDefault();
        loadMoreVenue();
        clearBtn.focus();
      });
    
      loadMoreCta.addEventListener('keydown', event => {
        if (event.keyCode === 13) {
          event.preventDefault();
    
          loadMoreCta.click();
        }
      });
    
      enterLocationCta.addEventListener('click', e => {
        e.preventDefault();
        searchBlock.classList.remove('hidden');
        enterLocationCta.classList.add('hidden');
        currentBtn.classList.add('hidden');
        locationNotFound.classList.add('hidden');
        locationFound.classList.add('hidden');
        longitudeInput.value = '';
        latitudeInput.value = '';
        searchBox.setAttribute('aria-label', 'select desired location');
        searchBox.focus();
      });
    
      enterLocationCta.addEventListener('keydown', event => {
        if (event.keyCode === 13) {
          event.preventDefault();
    
          enterLocationCta.click();
        }
      });
    };
    
  • URL: /components/raw/course-availability-pro-level/course-availability-pro-level.js
  • Filesystem Path: src/library/components/course-availability-pro-level/course-availability-pro-level.js
  • Size: 23.6 KB
  • Content:
    .course-availability-pro-level {
      display: flex;
      flex-direction: column;
      position: relative;
      padding: 5.2rem 3.2rem;
      padding-bottom: 13.2rem;
      background: url('./assets/images/course-pro-level-mob.png') left bottom
        no-repeat;
      background-color: $blue-accent3;
      min-height: 82rem;
    
      &__container {
        margin: 0 auto;
        max-width: 95.2rem;
      }
    
      h2 {
        font-family: $text-font-ef;
        font-size: 3.2rem;
        font-style: normal;
        font-weight: bold;
        line-height: 3.6rem;
        letter-spacing: 0.01em;
        color: $white;
        &::after {
          content: '';
          border-bottom: 0.2rem solid $red;
          width: 3.2rem;
          display: block;
          margin-top: 0.8rem;
        }
      }
      .pro-level-copy {
        @extend .efl-p-medium;
    
        color: $light-blue;
        margin-top: 1.2rem;
      }
      hr {
        border-color: $light-blue;
        opacity: 0.4;
        margin: 1.6rem 0;
      }
      .loading {
        position: relative;
        margin: 0 auto;
        width: 10.4em;
        height: 10.4em;
        &.show {
          display: block;
        }
        .efl-logo {
          background-image: url('./assets/images/efl-loader-logo.svg');
          background-repeat: no-repeat;
          background-position: center;
          position: absolute;
          z-index: 2;
          top: 0;
          left: 0;
          background-size: 4.2rem 5.1rem;
          width: 100%;
          height: 100%;
        }
        .loader {
          font-size: 10px;
          text-indent: -9999em;
          width: 100%;
          height: 100%;
          border-radius: 100%;
          overflow: hidden;
          background: rgb(236, 238, 243);
          position: relative;
          -webkit-animation: load3 1.4s infinite linear;
          animation: load3 1.4s infinite linear;
          -webkit-transform: translateZ(0);
          -ms-transform: translateZ(0);
          transform: translateZ(0);
        }
        .loader::before {
          width: 100%;
          height: 50%;
          background: -linear-gradient(0deg, #004aa3 0%, #eceef3 50%);
          background: -moz-linear-gradient(0deg, #004aa3 0%, #eceef3 50%);
          background: -o-linear-gradient(0deg, #004aa3 0%, #eceef3 50%);
          background: -ms-linear-gradient(0deg, #004aa3 0%, #eceef3 50%);
          background: -webkit-linear-gradient(0deg, #004aa3 0%, #eceef3 50%);
          transform-origin: bottom right;
          position: absolute;
          top: 0;
          left: 0;
          content: '';
        }
        .loader::after {
          background: $blue-accent3;
          width: 90%;
          height: 90%;
          border-radius: 50%;
          content: '';
          margin: auto;
          position: absolute;
          top: 0;
          left: 0;
          bottom: 0;
          right: 0;
        }
    
        @-webkit-keyframes load3 {
          0% {
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
          }
          100% {
            -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
          }
        }
    
        @keyframes load3 {
          0% {
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
          }
          100% {
            -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
          }
        }
      }
      .pro-level-2 {
        .loading {
          position: absolute;
          top: calc(50% - 5.2rem);
          left: calc(50% - 5.2rem);
        }
      }
      .pro-level-location {
        p {
          @extend .efl-p-large;
    
          color: $white;
          font-weight: 700;
        }
        label {
          @extend .efl-p-small;
    
          color: $light-blue;
          display: block;
        }
        &__postcode {
          padding-bottom: 0.8rem;
        }
        &__clear {
          @extend .efl-p-medium;
    
          color: $white;
          display: flex;
          justify-content: flex-start;
          margin-bottom: 2.1rem;
          text-decoration: underline;
          cursor: pointer;
        }
        &__distance {
          @extend .efl-p-1;
    
          position: relative;
          margin-top: 1.6rem;
          padding-bottom: 0.8rem;
          &--label {
            background-color: $white;
            color: $blue;
            padding: 1rem 4rem;
            width: 100%;
            display: flex;
            border-radius: 2px;
            border: 2px solid $light-blue;
            position: relative;
            justify-content: center;
            cursor: pointer;
            &::after {
              content: '';
              background: url('./assets/images/chevron.svg') no-repeat center;
              background-color: $grey-light;
              width: 4.4rem;
              position: absolute;
              right: 0;
              height: 4.4rem;
              top: 0;
              background-size: 1rem;
              transform: rotate(90deg);
            }
          }
    
          &--select {
            @extend .efl-p-1;
    
            padding: 0.8rem 1.6rem;
            -webkit-appearance: none;
            -moz-appearance: none;
            appearance: none;
            width: 100%;
            opacity: 0;
            position: absolute;
            top: 0;
            option {
              padding: 0.8rem 1.6rem;
            }
            &.active {
              opacity: 1;
            }
          }
          &--list {
            & > ul {
              width: 100%;
              & > li {
                @extend .efl-p-1;
    
                padding: 1.2rem 3rem;
                color: $blue;
                cursor: pointer;
                &:hover {
                  background-color: $grey-light;
                }
              }
            }
            &[aria-expanded='false'] {
              display: none;
            }
          }
        }
        &__show-more {
          font-family: $text-font-ef;
          color: $white;
          font-size: 1.6rem;
          font-weight: 400;
          text-transform: uppercase;
          letter-spacing: 0.06rem;
          background: none;
          border: 1px solid $white;
          border-radius: 0.25rem;
          margin-top: 0.4rem;
          padding: 1.5rem;
          transition: background 0.2s ease-in;
          width: 100%;
          &:hover {
            background: $white;
            color: $blue-accent3;
          }
        }
        &__alert {
          background: $white;
          border-radius: 0.8rem;
          max-width: 46.4rem;
          padding: 2.4rem 2.8rem;
          margin-top: 22.9rem;
          &--title {
            @extend .efl-p-small;
    
            color: $red;
            padding-left: 3.5rem;
            position: relative;
            display: flex;
            align-items: center;
            letter-spacing: 0.16em;
            text-transform: uppercase;
            padding-bottom: 1.1rem;
            &::before {
              content: '';
              background: url('./assets/images/alert-icon.svg') no-repeat center;
              width: 3rem;
              height: 3rem;
              position: absolute;
              left: 0;
            }
            &::after {
              content: '';
              border-bottom: 1px solid $grey-light;
              width: 100%;
              position: absolute;
              left: 0;
              bottom: 0;
            }
          }
          &--info {
            @extend .efl-p-2;
    
            font-weight: 500;
            margin-top: 1.6rem;
            color: $blue;
          }
          p {
            @extend .efl-p-small;
    
            margin-top: 0.8rem;
            color: $color-interface-light;
            margin-bottom: 1.6rem;
          }
          .pro-level-location__distance--label {
            border: 1px solid $grey-light;
            padding-left: 3.5rem;
          }
          .start-new-search {
            margin-top: 1rem;
            justify-content: center;
          }
        }
      }
      .cta {
        width: 100%;
        max-width: 100%;
        font-size: 1.6rem;
        line-height: 2.4rem;
        &.pro-level-current-location {
          position: relative;
          background-color: $white;
          color: $blue;
          margin-top: 1.6rem;
          text-transform: initial;
          padding: 1rem 4rem;
          &::after {
            content: '';
            background: url('./assets/images/map-pin-dark.svg') no-repeat center
              right;
            width: 2.4rem;
            height: 2.4rem;
            position: absolute;
            right: 1rem;
            left: initial;
            bottom: initial;
            top: initial;
          }
          .loading {
            position: absolute;
            width: 3.2rem;
            height: 3.2rem;
            right: 1.1rem;
            .efl-logo {
              background-image: url('./assets/images/ef-logo.svg');
              background-size: 1.13rem 1.37rem;
            }
            .loader {
              position: absolute;
              left: 0;
              &::after {
                background: $white;
              }
            }
          }
          &.searching {
            &::after {
              display: none;
            }
          }
        }
        &.current-location-found {
          background-color: $white;
          color: $blue;
          margin-top: 1.6rem;
          text-transform: initial;
          padding: 1rem 4rem;
          &::after {
            content: '';
            background: url('./assets/images/tick-circle-blue.svg') no-repeat center
              right;
            width: 3rem;
            height: 3rem;
            position: absolute;
            right: 1.1rem;
            left: initial;
            bottom: initial;
            top: initial;
          }
        }
    
        &.location-not-found {
          background-color: $white;
          color: $red;
          border-color: $white;
          margin-top: 1.6rem;
          text-transform: initial;
          padding: 1rem 4rem;
        }
    
        &.confirmation-and-payment {
          &::after {
            content: '';
            background: url('./assets/images/tick-circle.svg') no-repeat center
              right;
            width: 2.1rem;
            height: 2.1rem;
            position: absolute;
            right: 1.6rem;
            left: initial;
            bottom: initial;
            top: initial;
          }
        }
        &.search-pro-level-course {
          border: none;
          &:hover {
            background-color: $white;
            color: $red;
          }
          &[disabled] {
            border: none;
            color: $light-blue;
            background-color: $grey-light;
            cursor: default;
          }
        }
        /* stylelint-disable no-descending-specificity */
        &.search-pro-level-course,
        &.distance-range-alert {
          text-align: center;
          justify-content: center;
        }
        &.pro-enter-location-cta {
          @extend .efl-p-1;
    
          color: $white;
          background-color: transparent;
          border: 2px solid $white;
          margin-top: 1.6rem;
          text-transform: initial;
          &:hover {
            background-color: transparent;
            color: $white;
          }
        }
      }
      input {
        @extend .efl-p-1;
    
        color: $white;
        padding: 1.2rem 4rem 1.1rem 2.4rem;
        width: 100%;
        border: 2px solid $white;
        margin-top: 1.6rem;
        background-color: transparent !important;
        box-sizing: border-box !important;
        line-height: 1.6rem;
        border-radius: 2px;
        text-align: left;
        -webkit-appearance: none;
        &:focus {
          background: url('./assets/images/search-icon-white.svg') no-repeat 98%
            center;
        }
    
        &::-webkit-search-cancel-button {
          -webkit-appearance: none;
          background: url('./assets/images/icon-close-white.svg') no-repeat 98%
            center;
          width: 1.4rem;
          height: 1.4rem;
          padding: 0.5rem;
          background-size: 1.6rem;
          background-color: $blue-accent3;
          margin-right: -2.8rem;
          display: none;
          cursor: pointer;
        }
        &::-webkit-input-placeholder {
          /* Edge */
          color: $white;
        }
        &:-ms-input-placeholder {
          /* Internet Explorer 10-11 */
          color: $white;
        }
        &::placeholder {
          color: $white;
        }
      }
    
      // bing map style
      #proLevelSearchBoxContainer {
        position: relative;
        .MicrosoftMap {
          position: initial !important;
        }
        .MicrosoftMap .as_container_search {
          width: 100% !important;
          text-align: left;
        }
        .MicrosoftMap .as_container .line1 {
          @extend .efl-p-1;
    
          color: $black;
        }
        .MicrosoftMap .as_container .line2 {
          @extend .efl-p-1;
    
          color: $color-interface-light;
          margin-top: 0.1rem;
        }
        .MicrosoftMap .as_img.maps_address {
          background-image: url('./assets/images/location-pin.svg');
          width: 1.5rem !important;
          height: 2.2rem !important;
          margin-right: 0.8rem;
        }
        .MicrosoftMap .as_container .as_suggestion_root_inside {
          align-items: center;
        }
        .MicrosoftMap .as_container .suggestLink {
          padding: 0.8rem 2.4rem;
          &:hover {
            background-color: $grey-light;
          }
        }
      }
      &.modal-no-bg {
        background: none;
        padding: 0;
      }
      .course-venue-list__list {
        & > div {
          margin-bottom: 2rem;
          &:nth-child(3) {
            margin-bottom: 2.5rem;
          }
        }
      }
      .course-venue-individual__days p {
        grid-template-columns: 0.9fr auto 1fr;
      }
      .course-venue-individual.showhide {
        display: none;
      }
    
      @media screen and (min-width: $mq-medium) {
        padding: 6.2rem 3.2rem;
        background: url('./assets/images/course-pro-level-desk.png') right bottom
          no-repeat;
        background-color: $blue-accent3;
        min-height: 48.4rem;
        &__inner {
          max-width: 58.6rem;
        }
        .pro-level-3 {
          .course-availability-pro-level__inner {
            max-width: 100%;
          }
        }
        h2 {
          &::after {
            margin-top: 1.6rem;
          }
        }
        .pro-level-location {
          &__distance {
            &--list {
              border: 2px solid $grey-light;
              box-sizing: border-box;
              border-radius: 0 0 4px 4px;
              filter: drop-shadow(0 4px 4px rgba(0, 0, 0, 0.25));
              position: absolute;
              width: 100%;
              background-color: $white;
              z-index: 1;
            }
            &--select {
              display: none;
            }
          }
          &__alert {
            margin-top: 51.5px;
          }
          &__clear {
            justify-content: flex-end;
          }
        }
        input {
          justify-content: flex-start;
          padding: 1rem 4rem 1rem 3.2rem;
        }
      }
    
      @media screen and (min-width: $mq-large) {
        .course-venue-individual {
          min-width: 30.1rem;
        }
        .course-venue-list__list {
          gap: 2rem;
        }
        .course-venue-individual__inner {
          padding: 2.5rem 2.2rem 2.4rem 2.2rem;
        }
      }
    }
    
  • URL: /components/raw/course-availability-pro-level/course-availability-pro-level.scss
  • Filesystem Path: src/library/components/course-availability-pro-level/course-availability-pro-level.scss
  • Size: 13.5 KB
<section class="course-availability-pro-level" data-behavior="course-availability-pro-level" data-course-name="W1VC" data-course-blockid="" data-course-isprocourse="true">
    <div class="pro-level-1">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <h2>Find courses in your preferabel region or location</h2>
                <div class="pro-level-copy">This block will be used so that the content manager 
                    can put in caveats around travel/distances etc for UEFA C/B 
                    and the A license as the 'ruleset' is different for each
                </div>
                <hr>
                <div class="pro-level-location">
                    <p>1. Select desired location:</p>
                    <label>Use your current location or type in a location</label>
                    <button class="cta cta--primary  pro-level-current-location" id="pro-level-current-location" aria-label="use current location">Use current location</button>
                    <button class="cta cta--primary  current-location-found hidden" id="current-location-found" aria-label="location found">Location found</button>
                    <button class="cta cta--primary  location-not-found hidden" aria-label="select desired location">Location Not Found, manually enter below</button>
                    <button class="cta cta--primary  pro-enter-location-cta" aria-label="enter location">Enter Location</button>
                    <div class="pro-level-location__postcode hidden">
                        <div id="proLevelSearchBoxContainer">
                            <input type="text" id="proLevelSearchBox" class="pro-level-location__postcode-input" placeholder="Enter Location" autocomplete="off"/>
                        </div>
                    </div>
                </div>
                <hr>
                <div class="pro-level-location">
                    <p>2. Select desired travel distance:</p>
                    <label>Choose the maximum distance you wish to travel</label>
                    <div class="pro-level-location__distance">
                        <div class="pro-level-location__distance--label" aria-label="select desired travel distance" role="combobox" tabindex="0" aria-labelledby="pro-level-distance" aria-expanded="false">
                            <span class="filter">Select distance</span>
                        </div>
                        <div aria-expanded="false" class="pro-level-location__distance--list">
                            <ul>
                                <li tabindex="0" data-value="">Select distance</li>
                                <li tabindex="0" data-value="5">5 Miles</li>
                                <li tabindex="0" data-value="10">10 Miles</li>
                                <li tabindex="0" data-value="20">20 Miles</li>
                                <li tabindex="0" data-value="25">25 Miles +</li>
                            </ul>
                        </div>
                        <select class="pro-level-location__distance--select">
                            <option value="">Select distance</option>
                            <option value="5">5 Miles</option>
                            <option value="10">10 Miles</option>
                            <option value="20">20 Miles</option>
                            <option value="25">25 Miles +</option>
                        </select>
                    </div>
                </div>
                <hr style="margin-bottom: 2.4rem;">
                <button class="cta cta--efl  search-pro-level-course" aria-label="search course" disabled="disabled">Search</button>        
            </div>
        </div>
        <input type="hidden" class="search-longitude" value=""/>
        <input type="hidden" class="search-latitude" value=""/>
        <input type="hidden" class="search-distance" value=""/>
        <input type="hidden" class="search-place" value=""/>
    </div>
    <div class="pro-level-2 hidden">
        <div class="loading">
            <div class="loader"></div>
            <div class="efl-logo"></div>
        </div>
    </div>
    <div class="pro-level-3 hidden">
         <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <h2>Your nearest UEFA B course locations</h2>
                <div class="pro-level-copy">
                    Showing UEFA B courses <span class="range"></span>
                </div>
                <hr> 
                <div class="pro-level-location__clear" role="button" tabindex="0" aria-label="clear results">Clear results</div>          
                <div class="course-venue-list__list">
                    {{render '@course-venue-individual' course-availability merge="true"}}
                </div>
                <button class="pro-level-location__show-more" data-show="Show More" data-hide="Show less">Show More</button>
            </div>
        </div>
    </div>
    <div class="pro-level-4 hidden">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <div class="pro-level-location__alert">
                    <div class="pro-level-location__alert--title">No Courses Found</div>
                    <div class="pro-level-location__alert--info">There are currently no courses available</div>
                    <p>Course currently not available in desired location. Try expanding your location radius </p>
                    <div class="pro-level-location__distance">
                        <div class="pro-level-location__distance--label" role="combobox" tabindex="0" aria-labelledby="pro-level-distance" aria-expanded="false">
                            <span class="filter">5 Miles</span>
                        </div>
                        <div aria-expanded="false" class="pro-level-location__distance--list">
                            <ul>
                                <li tabindex="0" data-value="5">5 Miles</li>
                                <li tabindex="0" data-value="10">10 Miles</li>
                                <li tabindex="0" data-value="20">20 Miles</li>
                                <li tabindex="0" data-value="25">25 Miles +</li>
                            </ul>
                        </div>
                        <select class="pro-level-location__distance--select">
                            <option value="5">5 Miles</option>
                            <option value="10">10 Miles</option>
                            <option value="20">20 Miles</option>
                            <option value="25">25 Miles +</option>
                        </select>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="pro-level-5 hidden">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <div class="pro-level-location__alert">
                    <div class="pro-level-location__alert--title">No Courses Found</div>
                    <div class="pro-level-location__alert--info">Check back again later</div>
                    <p>Course currently not available in desired location. Try expanding your location radius</p>
                    <button class="cta cta--efl  start-new-search" aria-label="no sourse found, start new search">START A NEW SEARCH</button>  
                </div>
            </div>
        </div>
    </div>
    <div class="pro-level-6 hidden">
        <div class="course-availability-pro-level__container">
            <div class="course-availability-pro-level__inner">
                <div class="pro-level-location__alert">
                    <div class="pro-level-location__alert--title">DISTANCE ALERT</div>
                    <div class="pro-level-location__alert--info">Please note that you are advised apply 
for a course close to your location</div>
                    <p>If you are applying for a course that is a sigificant distance from your location there is a higher chance your application may be rejected</p>
                    <button class="cta cta--efl  distance-range-alert" aria-label="next">Next</button>
                </div>
            </div>
        </div>
    </div>
</section>