@govbr-ds/core
Version:
Padrão Digital de Governo
2 lines • 10.2 kB
JavaScript
!function e(t,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define("core",[],s):"object"==typeof exports?exports.core=s():t.core=s()}(self,(()=>(()=>{var e={"./src/components/table/_table.scss":()=>{},"./src/components/table/table.js":(e,t,s)=>{var i=s("./src/partial/js/behavior/dropdown.js");class r{constructor(e,t,s){this.name=e,this.component=t,this._header=this.component.querySelector(".header, .table-header"),this._table=this.component.querySelector("table"),this._sequence=s,this._setBehaviors()}_setBehaviors(){this._makeResponsiveTable(),this._setHeaderWidth(),this._searchBehavior(),this._dropdownBehavior(),this._collpaseBehavior(),this._densityBehavior(),this._setClickActions()}_makeResponsiveTable(){const e="responsive";if(!this.component.querySelector(`.${e}`)){const t=document.createElement("div");t.classList.add(e),t.appendChild(this._table),this._header.after(t)}}_makeScroller(){const e=document.createElement("div");e.classList.add("scroller");for(const t of this._table.querySelectorAll("thead tr th")){const s=document.createElement("div");s.classList.add("item"),s.innerHTML=t.innerHTML,t.offsetWidth&&(s.style.flex=`1 0 ${t.offsetWidth}px`),e.appendChild(s);const i=s.querySelector(".br-checkbox");if(i){const e=i.querySelector("input"),t=i.querySelector("label");e.id=`${e.id}-clone`,t.setAttribute("for",e.id)}}return e}_setHeaderWidth(){for(const e of this.component.querySelectorAll(".headers > div"))for(const[t,s]of this.component.querySelectorAll("table thead tr th").entries())e.children[t].style.flex=`1 0 ${s.offsetWidth}px`}_dropdownBehavior(){this.component.querySelectorAll('[data-toggle="dropdown"]').forEach((e=>{const t={iconToHide:"fa-chevron-up",iconToShow:"fa-chevron-down",trigger:e,useIcons:!0};this.dropdown=new Dropdown(t),this.dropdown.setBehavior()}))}_collpaseBehavior(){this.component.querySelectorAll('[data-toggle="collapse"]').forEach((e=>{const t=undefined,s=undefined;new Collapse({iconToHide:"fa-chevron-up",iconToShow:"fa-chevron-down",trigger:e,useIcons:!0}).setBehavior()}))}_searchBehavior(){if(this.component.dataset.search){const e=this.component.querySelector('[data-toggle="search"]'),t=this.component.querySelector(".search-bar"),s=this.component.querySelector('[data-dismiss="search"]'),i=t?t.querySelector("input"):null;e&&t&&s&&i?(this._searchInit(e),e.addEventListener("click",(()=>this._searchOpen(e,t))),s.addEventListener("click",(()=>this._searchClose(e,t))),i.addEventListener("keydown",(s=>{"Escape"===s.key&&this._searchClose(e,t)}))):console.error("Um ou mais elementos necessários para a busca não foram encontrados.")}}_searchInit(e){e.setAttribute("aria-expanded","false")}_searchOpen(e,t){e.setAttribute("aria-expanded","true"),t.classList.add("show"),t.parentElement.classList.add("show"),t.querySelector("input").focus()}_searchClose(e,t){t.querySelector("input").value="",t.classList.remove("show"),t.parentElement.classList.remove("show"),e.focus(),e.setAttribute("aria-expanded","false")}_densityBehavior(){const e=this.component.querySelectorAll("[data-density]");for(const t of e)t.addEventListener("click",(e=>{this.component.classList.remove("small","medium","large"),this.component.classList.add(t.dataset.density),this._hideDensityDropdown()}))}_hideDensityDropdown(e){var t=this.component.querySelector(".actions-trigger ");t&&t.classList.contains("dropdown")&&t.classList.remove("dropdown");var s=this.component.querySelector(".actions-trigger .br-list");s.setAttribute("data-visible",!1),s.setAttribute("aria-expanded",!1),s.setAttribute("hidden","")}_setClickActions(){const e=this.component.querySelector('.headers [type="checkbox"]'),t=this.component.querySelectorAll('tbody [type="checkbox"]'),s=this.component.querySelector(".selected-bar"),i=this.component.querySelectorAll('[data-toggle="check-all"]');for(const r of i)r.addEventListener("click",(()=>{this._checkAllTable(s,t,e),r.parentElement.classList.contains("br-list")}));if(t)for(const i of t)i.addEventListener("change",(()=>{this._checkRow(i,s,t,e)}))}_setRow(e,t){const s=e.parentNode.parentNode.parentNode;t?(s.classList.add("is-selected"),e.parentNode.classList.add("is-inverted"),e.checked=!0):(s.classList.remove("is-selected"),e.parentNode.classList.remove("is-inverted"),e.checked=!1)}_checkRow(e,t,s,i){const r=e.checked;this._setRow(e,r),this._setSelectedBar(r?1:-1,t,s,i)}_checkAllRows(e){for(const t of e)this._setRow(t,!0)}_uncheckAllRows(e){for(const t of e)this._setRow(t,!1)}_checkAllTable(e,t,s){let i=t.length;const r=e.querySelector(".info .count"),o=undefined;parseInt(r.innerHTML,10)===i?(this._uncheckAllRows(t),i*=-1):this._checkAllRows(t),this._setSelectedBar(i,e,t,s)}_setSelectedBar(e,t,s,i){const r=t.querySelector(".info .count"),o=t.querySelector(".info .text"),n=e<2?parseInt(r.innerHTML,10)+e:e;n>0?(t.classList.add("show"),r.innerHTML=n,o.innerHTML=n>1?"itens selecionados":"item selecionado",i&&i.parentNode.classList.add("is-checking"),n===s.length&&i&&(i.checked=!0,i.parentNode.classList.remove("is-checking"))):(r.innerHTML=0,i&&(i.checked=!1,i.parentNode.classList.remove("is-checking")),t.classList.remove("show"))}}var o=null},"./src/partial/js/behavior/collapse.js":(e,t,s)=>{s.d(t,{default:()=>i});class i{constructor({trigger:e,iconToShow:t="fa-chevron-down",iconToHide:s="fa-chevron-up",useIcons:i=!0}){this.trigger=e,this.useIcons=i,this.breakpoint=e.getAttribute("data-breakpoint"),this.setIconToShow(t),this.setIconToHide(s),this._setTarget(),this._setUp()}_setTarget(){this.target=document.querySelector(`#${this.trigger.getAttribute("data-target")}`)}_checkBreakpoint(){this.breakpoint&&window.matchMedia("(min-width: 977px)").matches&&this.target.removeAttribute("hidden")}_setUp(){this._setVisibilityStatus(),this.useIcons&&this._toggleIcon(),this.trigger.setAttribute("aria-controls",`${this.trigger.getAttribute("data-target")}`),this._checkBreakpoint(),this.trigger.setAttribute("tabindex","0")}_setVisibilityStatus(){this._setTriggerVisibilityStatus(),this._setTargetVisibilityStatus()}_setTriggerVisibilityStatus(){this.target&&(this.target.hasAttribute("hidden")?(this.trigger.setAttribute("data-visible",!1),this.trigger.setAttribute("aria-expanded",!1)):(this.trigger.setAttribute("data-visible",!0),this.trigger.setAttribute("aria-expanded",!0)))}_handleTriggerKeyPress(){this._handleTriggerClickBehavior()}_setTargetVisibilityStatus(){this.target&&(this.target.hasAttribute("hidden")?this.target.setAttribute("aria-hidden",!0):(this.target.setAttribute("aria-hidden",!1),this._focusOnFirstItem(this.target)))}_handleTriggerClickBehavior(){this.breakpoint?window.matchMedia("(max-width: 977px)").matches&&(this._toggleVisibility(),this.useIcons&&this._toggleIcon(),this.trigger.dispatchEvent(new Event("change"))):(this._toggleVisibility(),this.useIcons&&this._toggleIcon(),this.trigger.dispatchEvent(new Event("change")))}_toggleVisibility(){this.target&&(this.target.hasAttribute("hidden")?this._showTarget():this._hideTarget())}_showTarget(){this.target.removeAttribute("hidden"),this._setVisibilityStatus(),this._focusOnFirstItem(this.target)}_hideTarget(){this.target.setAttribute("hidden",""),this._setVisibilityStatus()}_focusOnFirstItem(e){const t=e.querySelectorAll('a:not([disabled]), button:not([disabled]), input[type=text]:not([disabled]), [tabindex]:not([disabled]):not([tabindex="-1"])'),s=Array.from(t).find((e=>!e.hasAttribute("hidden")));s&&s.scrollIntoView({block:"nearest"})}_toggleIcon(){this.trigger.querySelectorAll("i.fas").forEach((e=>{this.target&&(e.classList.remove(this.target.hasAttribute("hidden")?this.iconToHide:this.iconToShow),e.classList.add(this.target.hasAttribute("hidden")?this.iconToShow:this.iconToHide))}))}setBehavior(){this.trigger.addEventListener("click",(e=>{"click"===e.type&&this._handleTriggerClickBehavior()})),this.trigger.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),this._handleTriggerKeyPress())})),this.target.addEventListener("keydown",(e=>{"Escape"!==e.key||this.target.hasAttribute("hidden")||(e.preventDefault(),this._hideTarget(),this.trigger.focus())}))}setIconToShow(e){this.iconToShow=e}setIconToHide(e){this.iconToHide=e}}},"./src/partial/js/behavior/dropdown.js":(e,t,s)=>{var i=s("./src/partial/js/behavior/collapse.js");class r extends i.default{constructor({trigger:e,iconToShow:t="fa-chevron-down",iconToHide:s="fa-chevron-up",useIcons:i=!0}){super({iconToHide:s,iconToShow:t,trigger:e,useIcons:i})}_setUp(){super._setUp(),this._hideDropdown(),this._initializeDropdownItems()}_hideDropdown(){document.addEventListener("mousedown",(e=>{this.trigger.contains(e.target)||this.target.hasAttribute("hidden")||this.target.contains(e.target)||this.trigger.click()}))}_setTargetVisibilityStatus(){super._setTargetVisibilityStatus(),this.target.hasAttribute("hidden")?this.target.removeAttribute("data-dropdown"):this.target.setAttribute("data-dropdown","")}_setParentsTargetVisibilityStatus(){this.target.hasAttribute("hidden")?this.target.parentElement.classList.remove("dropdown"):this.target.parentElement.classList.add("dropdown")}_initializeDropdownItems(){this.dropdownItems=Array.from(this.target.querySelectorAll('[role="menuitem"]')),this.dropdownItems.forEach((e=>{e.addEventListener("keydown",(t=>{const s=t.key,i=this.dropdownItems.indexOf(e),r=this.dropdownItems.length-1;switch(s){case"ArrowUp":t.preventDefault();const e=(i-1+this.dropdownItems.length)%this.dropdownItems.length;this.dropdownItems[e].focus();break;case"ArrowDown":t.preventDefault();const s=(i+1)%this.dropdownItems.length;this.dropdownItems[s].focus()}}))}))}_handleTriggerClickBehavior(){super._handleTriggerClickBehavior(),this._setParentsTargetVisibilityStatus()}setBehavior(){super.setBehavior()}}},"?6190":()=>{}},t={},s;function i(s){var r=t[s];if(void 0!==r)return r.exports;var o=t[s]={exports:{}};return e[s](o,o.exports,i),o.exports}return i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i("./src/components/table/table.js"),i("./src/components/table/_table.scss"),i("?6190")})()));
//# sourceMappingURL=table.min.js.map