scripts.js 5.16 KB
(()=>{"use strict";class t{constructor(t){this.tablistNode=t,this.tabs=Array.from(this.tablistNode.querySelectorAll("[role=tab]")),this.tabpanels=[],0!==this.tabs.length&&(this.firstTab=null,this.lastTab=null,this.tabs.forEach((t=>{const s=document.getElementById(t.getAttribute("aria-controls"));t.tabIndex=-1,t.setAttribute("aria-selected","false"),this.tabpanels.push(s),t.addEventListener("keydown",this.onKeydown.bind(this)),t.addEventListener("click",this.onClick.bind(this)),this.firstTab||(this.firstTab=t),this.lastTab=t})),this.setSelectedTab(this.firstTab))}setSelectedTab(t){this.tabs.forEach(((s,e)=>{t===s?(s.setAttribute("aria-selected","true"),s.removeAttribute("tabindex"),this.tabpanels[e].hidden=!1):(s.setAttribute("aria-selected","false"),s.tabIndex=-1,this.tabpanels[e].hidden=!0)}))}moveFocusToTab(t){t.focus()}moveFocusToPreviousTab(t){const s=this.tabs.indexOf(t);this.moveFocusToTab(this.tabs[0===s?this.tabs.length-1:s-1])}moveFocusToNextTab(t){const s=this.tabs.indexOf(t);this.moveFocusToTab(this.tabs[s===this.tabs.length-1?0:s+1])}onKeydown(t){const s=t.currentTarget;let e=!1;switch(t.key){case"ArrowLeft":this.moveFocusToPreviousTab(s),e=!0;break;case"ArrowRight":this.moveFocusToNextTab(s),e=!0;break;case"Home":this.moveFocusToTab(this.firstTab),e=!0;break;case"End":this.moveFocusToTab(this.lastTab),e=!0}e&&(t.stopPropagation(),t.preventDefault())}onClick(t){this.setSelectedTab(t.currentTarget)}}class s{constructor(t){this.item=t,this.button=t.querySelector("button.ld-steps__info"),this.subStepsList=t.querySelector(".ld-steps__list--child"),this.subStepsCache={},this.subStepsList&&this.button&&(this.initToggle(),this.initSubStepsLoader())}initToggle(){this.iconOpen=this.button.querySelector("[data-icon-open]"),this.iconClosed=this.button.querySelector("[data-icon-close]"),this.open="true"===this.button.getAttribute("aria-expanded"),this.button.addEventListener("click",this.onButtonClick.bind(this))}initSubStepsLoader(){this.subStepsLoader=this.subStepsList.querySelector(".ld-steps__item--loader"),this.subStepsLoader&&(this.showingStepsIndicator=this.subStepsLoader.querySelector("[data-steps-showing]"),this.showMoreButton=this.subStepsLoader.querySelector(".ld-steps__loader__button--more"),this.showMoreButton.addEventListener("click",this.showMoreSubSteps.bind(this)),this.showLessButton=this.subStepsLoader.querySelector(".ld-steps__loader__button--less"),this.showLessButton.addEventListener("click",this.showLessSubSteps.bind(this)))}onButtonClick(){this.toggle(!this.open)}toggle(t){t!==this.open&&(this.open=t,this.button.setAttribute("aria-expanded",`${t}`),t?(this.subStepsList.style.display="block",this.iconOpen.style.display="none",this.iconClosed.style.display="block"):(this.subStepsList.style.display="none",this.iconClosed.style.display="none",this.iconOpen.style.display="block"))}resetSubStepsPage(){this.subStepsList.dataset.stepsPage=2}increaseSubStepsPage(){this.subStepsList.dataset.stepsPage=parseInt(this.subStepsList.dataset.stepsPage)+1}updateShowingSteps(t){this.showingStepsIndicator.innerHTML=t}showLoaderButton(t){t.classList.remove("ld-steps__loader__button--hidden")}hideLoaderButton(t){t.classList.add("ld-steps__loader__button--hidden")}showMoreSubSteps(){const t=this.subStepsList.dataset.stepParentId+"_"+this.subStepsList.dataset.stepId+"_"+this.subStepsList.dataset.stepsPage;if(t in this.subStepsCache)return void this.processStepsHtml(this.subStepsCache[t]);const s={action:learndashBreezy.steps.sub_steps_ajax_action_name,nonce:learndashBreezy.steps.sub_steps_ajax_nonce,step_parent_id:this.subStepsList.dataset.stepParentId,step_id:this.subStepsList.dataset.stepId,page:this.subStepsList.dataset.stepsPage};fetch(learndashBreezy.ajax_url,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()}).then((s=>{if(200!==s.status)return this.processAjaxError(s),"";s.json().then((s=>{if(!s.success)return this.processAjaxError("",s.data.message),"";this.subStepsCache[t]=s.data.steps_html,this.processStepsHtml(s.data.steps_html)})).catch((function(t){return this.processAjaxError(t),""}))})).catch((function(t){return this.processAjaxError(t),""}))}processStepsHtml(t){const s=this.subStepsList.querySelectorAll(".ld-steps__item--child");s[s.length-1].insertAdjacentHTML("afterend",t);const e=this.subStepsList.querySelectorAll(".ld-steps__item--child").length;this.increaseSubStepsPage(),this.updateShowingSteps(e),e>=this.subStepsList.dataset.stepsTotal&&(this.hideLoaderButton(this.showMoreButton),this.showLoaderButton(this.showLessButton))}processAjaxError(t,s){s?alert(s):(alert(learndashBreezy.steps.default_error_message),console.error("Learndash Breezy can't load sub steps. Context:\n",t))}showLessSubSteps(){const t=this.subStepsList.dataset.stepsSubStepsPageSize,s=this.subStepsList.querySelectorAll(".ld-steps__item--child");for(let e=t;e<s.length;e++)s[e].parentNode.removeChild(s[e]);this.updateShowingSteps(t),this.resetSubStepsPage(),this.hideLoaderButton(this.showLessButton),this.showLoaderButton(this.showMoreButton)}}window.addEventListener("DOMContentLoaded",(()=>{document.querySelectorAll(".ld-tab-bar__tabs").forEach((s=>new t(s))),document.querySelectorAll(".ld-steps__item--parent").forEach((t=>new s(t)))}))})();