UNPKG

@govbr-ds/core

Version:

Padrão Digital de Governo

2 lines 5.77 kB
!function e(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("core",[],r):"object"==typeof exports?exports.core=r():t.core=r()}(self,(()=>(()=>{var e=()=>{},t,r=()=>{};(()=>{class e{constructor(e,t){this.name=e,this.component=t,this.currentPage=1,this._setBehaviors(),this._adaptSelectAccessibility()}_setBehaviors(){this._setKeybordBehavior(),this._setActive(),this._dropdownBehavior()}_setKeybordBehavior(){this._setDefaultPaginationKeybordBehavior(),this._setContextualPaginationKeyboardBehavior()}_setDefaultPaginationKeybordBehavior(){this.component.querySelectorAll("li *:first-child").forEach((e=>{e.addEventListener("keydown",(t=>{"ArrowLeft"!==t.key||e.hasAttribute("data-previous-page")||e.parentElement.previousElementSibling.children[0].focus(),"ArrowRight"!==t.key||e.hasAttribute("data-next-page")||e.parentElement.nextElementSibling.children[0].focus(),"ArrowDown"===t.key&&e.nextElementSibling?.classList.contains("br-list")&&e.nextElementSibling.children[0].focus()}))}))}_setContextualPaginationKeyboardBehavior(){this.component.querySelectorAll(".pagination-per-page .br-list").forEach((e=>{e.addEventListener("keydown",(e=>{"Escape"===e.key&&e.currentTarget.parentElement.focus()}))}))}_setLayout(){const e=this.component.querySelector("ul"),t=this.component.querySelectorAll(".page");if(t.forEach((e=>{e.classList.contains("active")&&(this.currentPage=parseInt(e.innerText)),e.classList.remove("d-none")})),1===this.currentPage?e.querySelector("[data-previous-page]").setAttribute("disabled",""):e.querySelector("[data-previous-page]").removeAttribute("disabled"),this.currentPage===t.length?e.querySelector("[data-next-page").setAttribute("disabled",""):e.querySelector("[data-next-page]").removeAttribute("disabled"),t.length>9){if(this.currentPage<6){e.querySelector("[data-previous-interval]")&&e.querySelector("[data-previous-interval]").remove();for(let e=7;e<t.length-1;e++)t[e].classList.add("d-none");e.querySelector("[data-next-interval]")||e.insertBefore(this._createIntervalElement("next"),e.children[e.children.length-2])}if(this.currentPage>=6&&this.currentPage<t.length-4){for(let e=this.currentPage-4;e>0;e--)t[e].classList.add("d-none");e.querySelector("[data-previous-interval]")||e.insertBefore(this._createIntervalElement("previous"),e.children[2]);for(let e=this.currentPage+2;e<t.length-1;e++)t[e].classList.add("d-none");e.querySelector("[data-next-interval]")||e.insertBefore(this._createIntervalElement("next"),e.children[e.children.length-2])}if(this.currentPage>=t.length-4){e.querySelector("[data-next-interval]")&&e.querySelector("[data-next-interval]").remove();for(let e=t.length-8;e>0;e--)t[e].classList.add("d-none");e.querySelector("[data-previous-interval]")||e.insertBefore(this._createIntervalElement("previous"),e.children[2])}}}_createIntervalElement(e){const t=document.createElement("li");t.setAttribute(`data-${e}-interval`,"");const r=document.createElement("a");r.setAttribute("href","javascript:void(0)");const n=document.createElement("i");return n.classList.add("fas","fa-ellipsis-h"),r.appendChild(n),t.appendChild(r),t}_setActive(){for(const e of this.component.querySelectorAll(".page"))this.currentPage===Number(e.innerText)?e.setAttribute("aria-current","page"):e.removeAttribute("aria-current"),e.addEventListener("click",(e=>{this._selectPage(e.currentTarget)}));for(const e of this.component.querySelectorAll(".pagination-ellipsis .br-item"))e.addEventListener("click",(e=>{this._selectPage(e.currentTarget)}))}_initializeDropdownItems(){this.component.querySelectorAll(".br-list").forEach((e=>{const t=Array.from(e.querySelectorAll(".br-item"));t.forEach((e=>{e.addEventListener("keydown",(r=>{const{key:n}=r,i=t.indexOf(e),o=t.length-1;switch(n){case"ArrowUp":r.preventDefault();const e=(i-1+t.length)%t.length;t[e].focus();break;case"ArrowDown":r.preventDefault();const n=(i+1)%t.length;t[n].focus()}}))}))}))}_dropdownBehavior(){for(const e of this.component.querySelectorAll('[data-toggle="dropdown"]'))this._dropdownInit(e),this._dropdownToggle(e)}_dropdownToggle(e){e.addEventListener("click",(()=>{"false"!==e.getAttribute("aria-expanded")?this._dropdownClose(e):this._dropdownOpen(e)})),window.document.addEventListener("click",(t=>{this.component.contains(t.target)||this._dropdownClose(e)})),e.nextElementSibling.addEventListener("keydown",(t=>{if("Escape"===t.key){this._dropdownClose(e);const t=e.parentElement.querySelector("button");t&&t.focus()}if("Tab"===t.key){const r=t.currentTarget.querySelectorAll(".br-item");r[r.length-1].hasAttribute("data-focus-visible-added")&&this._dropdownClose(e)}}))}_dropdownInit(e){e.parentElement.classList.add("dropdown"),e.nextElementSibling.setAttribute("role","menu"),e.setAttribute("aria-haspopup","true"),this._dropdownClose(e),this._initializeDropdownItems()}_dropdownOpen(e){e.setAttribute("aria-expanded","true"),e.nextElementSibling.removeAttribute("hidden")}_dropdownClose(e){e.setAttribute("aria-expanded","false"),e.nextElementSibling.setAttribute("hidden","")}_selectPage(e){this.component.querySelectorAll(".page").forEach((e=>{e.classList.remove("active"),e.removeAttribute("aria-current")})),this.component.querySelectorAll(".br-item").forEach((e=>{e.classList.remove("active"),e.removeAttribute("aria-current")})),e.classList.add("active"),e.setAttribute("aria-current","page"),this._setLayout()}_adaptSelectAccessibility(){window.addEventListener("load",(()=>{this.component.querySelectorAll(".pagination-per-page .br-select .br-list").forEach((e=>{e.setAttribute("role","menu"),e.querySelectorAll(".br-item").forEach((e=>{e.setAttribute("role","menuitem")}))}))}))}}var t=null})(),e();var n={};return r(),n})())); //# sourceMappingURL=pagination.min.js.map