@govbr-ds/core
Version:
Padrão Digital de Governo
2 lines • 3.83 kB
JavaScript
!function t(s,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("core",[],e):"object"==typeof exports?exports.core=e():s.core=e()}(self,()=>(()=>{var t=()=>{},s,e=()=>{};(()=>{class t{constructor(t,s){this.name=t,this.component=s,this.DOMstrings={stepFormPanelClass:"wizard-panel",stepFormPanels:this.component.querySelectorAll(".wizard-panel"),stepNextBtnClass:"wizard-btn-next",stepPrevBtnClass:"wizard-btn-prev",stepsBar:this.component.querySelector(".wizard-progress"),stepsBarClass:"wizard-progress",stepsBtnClass:"wizard-progress-btn",stepsBtns:this.component.querySelectorAll(".wizard-progress-btn"),stepsForm:this.component.querySelector(".wizard-form")},this.removeAttributes=(t,s)=>{t.forEach(t=>{t.removeAttribute(s)})},this.setAttributes=(t,s,e)=>{t.forEach(t=>{t.setAttribute(s,e)})},this.findParent=(t,s)=>{let e=t;for(;!e.classList.contains(s);)e=e.parentNode;return e},this.getActiveStep=t=>Array.from(this.DOMstrings.stepsBtns).indexOf(t),this.setActiveStep=function(t){this.removeAttributes(this.DOMstrings.stepsBtns,"active"),this.setAttributes(this.DOMstrings.stepsBtns,"aria-selected","false"),this.DOMstrings.stepsBtns.forEach((s,e)=>{e===t&&(s.removeAttribute("disabled"),s.setAttribute("active",""),s.setAttribute("aria-selected","true"))})},this.setFocusOnFirstElementPanel=t=>{if(t){const s=undefined;this.DOMstrings.stepFormPanels[t].querySelectorAll(".wizard-panel-content *").forEach(t=>{t.tabIndex>=0&&t.focus()})}},this.getActivePanel=()=>{let t;return this.DOMstrings.stepFormPanels.forEach(s=>{s.hasAttribute("active")&&(t=s)}),t},this.setActivePanel=t=>{this.removeAttributes(this.DOMstrings.stepFormPanels,"active"),this.DOMstrings.stepFormPanels.forEach((s,e)=>{e===t&&s.setAttribute("active","")})},this.setStepsNum=()=>{this.DOMstrings.stepsBtns.forEach((t,s)=>{t.setAttribute("step",s+1)})},this.setStep=t=>{const s=t<=this.DOMstrings.stepsBtns.length?t-1:0;this.setActivePanel(s),this.setFocusOnFirstElementPanel(s),this.setActiveStep(s)},this.collapseSteps=()=>{this.component.setAttribute("collapsed","")},this.expandSteps=()=>{this.component.removeAttribute("collapsed")},this._setBehavior()}_setBehavior(){if(this.DOMstrings.stepsBar.addEventListener("click",t=>{const s=t.target;if(!s.classList.contains(`${this.DOMstrings.stepsBtnClass}`))return void t.target.parentNode.click();const e=this.getActiveStep(s);this.setActiveStep(e),this.setActivePanel(e),this.setFocusOnFirstElementPanel(e)}),this.DOMstrings.stepsForm.addEventListener("click",t=>{const s=t.target;if(!s.classList.contains(`${this.DOMstrings.stepPrevBtnClass}`)&&!s.classList.contains(`${this.DOMstrings.stepNextBtnClass}`))return;const e=this.findParent(s,`${this.DOMstrings.stepFormPanelClass}`);let i=Array.from(this.DOMstrings.stepFormPanels).indexOf(e);s.classList.contains(`${this.DOMstrings.stepPrevBtnClass}`)?(i-=1,e.style.left="1%"):(i+=1,e.style.left="-1%"),this.setActiveStep(i),this.setActivePanel(i),this.setFocusOnFirstElementPanel(i)}),this.setStepsNum(),this.component.hasAttribute("step")&&this.setStep(this.component.getAttribute("step")),this.component.hasAttribute("scroll")&&!this.component.hasAttribute("vertical")){const t=Math.round(100/this.DOMstrings.stepsBtns.length)-.5;this.DOMstrings.stepsBar.style.gridTemplateColumns=`repeat(auto-fit, minmax(100px, ${t}% ))`}const t=new Swipe(this.DOMstrings.stepsBar);this.component.hasAttribute("vertical")?(t.on("SWIPE_LEFT",()=>{this.collapseSteps()}),t.on("SWIPE_RIGHT",()=>{this.expandSteps()}),this.DOMstrings.stepsForm.ontouchstart=()=>{this.collapseSteps()}):(this.DOMstrings.stepsBar.ontouchstart=()=>{this.expandSteps()},this.DOMstrings.stepsForm.ontouchstart=()=>{this.collapseSteps()})}}var s=null})(),t();var i={};return e(),i})());
//# sourceMappingURL=wizard.min.js.map