<div class="find-courses hidden" data-behaviour="pre-req-modal" data-pre-req-check="true">
    <button class="lightbox-overlay__close" id="close">
        <span class="visually-hidden">Close dialog</span>
    </button>
    <div class="find-courses__image-wrapper">
        <img src="/assets/example-content/find-courses-bg.png" loading="lazy">
    </div>
    <div class="find-courses__search">
        <div class="find-courses__search--pin"></div>
        <div class="steps search-step-1">
            <h2>Checking your eligibility</h2>
            <p>
                We’re checking that you meet the Pre-requisites for [course name]
            </p>
            <div class="loading">
                <div class="loader"></div>
                <div class="efl-logo"></div>
            </div>
        </div>
        <div class="steps search-step-2 hidden">
            <h2>You’re eligible</h2>
            <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vestibulum
            </p>
            <img src="/assets/example-content/green-tick.svg" alt="tick" loading="lazy">
            <a href="/" class="cta cta--primary  confirmation-payment" id="confirmation-payment" tabindex="0">Confirmation and Payment</a>

        </div>
        <div class="steps search-step-3 hidden">
            <div class="error-steps ">
                <h2>Sorry you aren’t eligible to begin [Course Name]</h2>
                <p>
                    You must first complete [<a href="/" class="redlink" target="_blank">Requirement 1</a>], [<a href="/" class="redlink" target="_blank">Requirement 2</a>], and [<a href="/" class="redlink" target="_blank">Requirement 3</a>]
                </p>
                <p>
                    If You Have Completed These And Our Records Are incorrect Please,
                    <a href="/" target="_blank">Contact Us.</a>
                </p>
            </div>
        </div>
    </div>
</div>

No notes defined.

{
  "confirmation-payment": {
    "copy": "Confirmation and Payment",
    "modifier": "primary",
    "id": "confirmation-payment",
    "additionalClass": "confirmation-payment"
  }
}
  • Content:
    import { Dialog } from '../lightbox-overlay/lightbox-overlay';
    
    export default parentElement => {
      const DIALOG_ID = 'pre-req-global-access-dialog';
      const { preReqCheck } = parentElement.dataset;
    
      const generateLightBox = labelId => {
        let html = parentElement.outerHTML;
    
        html = html.replace('find-courses hidden', 'find-courses');
        return `
        <div role="dialog" id="${DIALOG_ID}" aria-labelledby="${labelId}" aria-modal="true" class="lightbox-overlay">
          ${html}
        </div>`;
      };
    
      const removeLightBox = () => {
        document.getElementById(DIALOG_ID).remove();
        if (document.querySelector('#find-course-near-me')) {
          document
            .querySelector('#find-course-near-me')
            .closest('a')
            .focus();
        }
      };
    
      const preReqButton = document.querySelector('#find-course-near-me');
      const preReqButtonAll = document.querySelectorAll('.pre-req-global-access');
      // const onlineCTA = document.querySelector('#efl-online-book-course');
    
      if (!preReqButton && !preReqButtonAll.length) {
        return;
      }
    
      if (preReqButton && preReqCheck === 'true') {
        parentElement.remove();
        return;
      }
    
      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(),
        });
    
        if (
          focusBtn.classList.contains('pre-req-global-access') &&
          preReqCheck === 'true'
        ) {
          const eligibleCta = lightboxContainer.querySelector(
            '.confirmation-payment'
          );
    
          eligibleCta.setAttribute('href', focusBtn.getAttribute('href'));
        }
    
        lightboxContainer.querySelector('#close').focus();
      };
    
      /* if (onlineCTA) {
        onlineCTA.addEventListener('click', event => {
          event.preventDefault();
          const allSteps = parentElement.querySelector('.find-courses__search');
          const screen = allSteps.querySelector('.search-step-5');
    
          if (screen) {
            openLightbox(onlineCTA);
          }
        });
      } */
    
      const openPreReqModal = (event, preReqCta) => {
        event.preventDefault();
        openLightbox(preReqCta);
    
        const modalDiv = document.querySelector(`#${DIALOG_ID}`);
        const allSteps = modalDiv.querySelector('.find-courses__search');
        const screen1 = allSteps.querySelector('.search-step-1');
        const screen2 = allSteps.querySelector('.search-step-2');
        const screen3 = allSteps.querySelector('.search-step-3');
    
        screen1.classList.remove('hidden');
        screen2.classList.add('hidden');
        screen3.classList.add('hidden');
    
        if (preReqCheck === 'true') {
          setTimeout(() => {
            screen1.classList.add('hidden');
            screen2.classList.remove('hidden');
          }, 1000);
        } else {
          setTimeout(() => {
            screen1.classList.add('hidden');
            screen3.classList.remove('hidden');
          }, 1000);
        }
      };
    
      if (preReqButton) {
        preReqButton.addEventListener('click', event => {
          openPreReqModal(event, preReqButton);
        });
      }
    
      if (preReqButtonAll.length) {
        preReqButtonAll.forEach(preReqCta => {
          preReqCta.addEventListener('click', event => {
            openPreReqModal(event, preReqCta);
          });
        });
      }
    };
    
  • URL: /components/raw/pre-req-modal/pre-req-modal.js
  • Filesystem Path: src/library/components/pre-req-modal/pre-req-modal.js
  • Size: 3.5 KB
<div class="find-courses hidden"  data-behaviour="pre-req-modal" data-pre-req-check="true">
    <button class="lightbox-overlay__close" id="close">
        <span class="visually-hidden">Close dialog</span>
    </button>
    <div class="find-courses__image-wrapper">
        <img src="/assets/example-content/find-courses-bg.png" loading="lazy">
    </div>
    <div class="find-courses__search">
        <div class="find-courses__search--pin"></div>
        <div class="steps search-step-1">
            <h2>Checking your eligibility</h2>
            <p>
                We’re checking that you meet the Pre-requisites for [course name]
            </p>
            <div class="loading">
                <div class="loader"></div>
                <div class="efl-logo"></div>
            </div>
        </div>
        <div class="steps search-step-2 hidden">
            <h2>You’re eligible</h2>
            <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vestibulum
            </p>
            <img src="/assets/example-content/green-tick.svg" alt="tick" loading="lazy">
            {{render '@cta' confirmation-payment merge="true"}}
        </div>
        <div class="steps search-step-3 hidden">
            <div class="error-steps ">
                <h2>Sorry you aren’t eligible to begin [Course Name]</h2>
                <p>
                    You must first complete [<a href="/" class="redlink" target="_blank">Requirement 1</a>], [<a href="/" class="redlink" target="_blank">Requirement 2</a>], and [<a href="/" class="redlink" target="_blank" >Requirement 3</a>]
                </p>
                <p>
                    If You Have Completed These And Our Records Are incorrect Please,
                    <a href="/" target="_blank">Contact Us.</a>
                </p>
            </div>
        </div>
    </div>
</div>