[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/system/js/ -> table-columns.min.js (source)

   1  class TableColumns{constructor(t,e){this.$table=t,this.tableName=e,this.storageKey=`joomla-tablecolumns-$this.tableName}`,this.$headers=[].slice.call(t.querySelector("thead tr").children),this.$rows=[].slice.call(t.querySelectorAll("tbody tr")),this.listOfHidden=[],this.loadState(),this.protectedCols=[0],this.$rows[0]&&[].slice.call(this.$rows[0].children).forEach(((t,e)=>{if("TH"===t.nodeName){this.protectedCols.push(e);const t=this.listOfHidden.indexOf(e);-1!==t&&this.listOfHidden.splice(t,1)}})),this.createControls(),this.listOfHidden.forEach((t=>{this.toggleColumn(t,!0)}))}createControls(){const t=document.createElement("div");t.setAttribute("class","dropdown float-end pb-2");const e=document.createElement("div");e.setAttribute("class","dropdown-menu dropdown-menu-end"),e.setAttribute("data-bs-popper","static");const s=document.createElement("button");s.type="button",s.textContent=Joomla.Text._("JGLOBAL_COLUMNS"),s.classList.add("btn","btn-primary","btn-sm","dropdown-toggle"),s.setAttribute("data-bs-toggle","dropdown"),s.setAttribute("data-bs-auto-close","false"),s.setAttribute("aria-haspopup","true"),s.setAttribute("aria-expanded","false");const l=document.createElement("ul");l.setAttribute("class","list-unstyled p-2"),l.setAttribute("id","columnList"),this.$headers.forEach(((t,e)=>{if(0===e&&"TH"!==t.nodeName)return;const s=document.createElement("li"),n=document.createElement("label"),i=document.createElement("input");i.classList.add("form-check-input","me-1"),i.type="checkbox",i.name="table[column][]",i.checked=-1===this.listOfHidden.indexOf(e),i.disabled=-1!==this.protectedCols.indexOf(e),i.value=e;let a=t.querySelector("span"),o=a?a.textContent.trim():"";o||(a=t.querySelector("span.visually-hidden")||t,o=a.textContent.trim()),o.includes(":")&&(o=o.split(":",2)[1].trim()),n.textContent=o,n.insertAdjacentElement("afterbegin",i),s.appendChild(n),l.appendChild(s)})),this.$table.insertAdjacentElement("beforebegin",t),t.appendChild(s),t.appendChild(e),e.appendChild(l),l.addEventListener("change",(t=>{this.toggleColumn(parseInt(t.target.value,10)),this.saveState()})),this.$headers.forEach((t=>{t.classList.remove("d-none","d-md-table-cell","d-lg-table-cell","d-xl-table-cell")})),this.$rows.forEach((t=>{[].slice.call(t.children).forEach((t=>{t.classList.remove("d-none","d-md-table-cell","d-lg-table-cell","d-xl-table-cell")}))})),this.$button=s,this.$menu=l,this.updateCounter()}updateCounter(){const t=this.$headers.length-1,e=t-this.listOfHidden.length;this.$button.textContent=`$e}/$t} $Joomla.Text._("JGLOBAL_COLUMNS")}`}toggleColumn(t,e){if(!this.$headers[t])return;if(-1!==this.protectedCols.indexOf(t))return;const s=this.listOfHidden.indexOf(t);-1===s?this.listOfHidden.push(t):!0!==e&&this.listOfHidden.splice(s,1),this.$headers[t].classList.toggle("d-none",e),this.$rows.forEach((s=>{s.children[t].classList.toggle("d-none",e)})),this.updateCounter()}saveState(){window.localStorage.setItem(this.storageKey,this.listOfHidden.join(","))}loadState(){const t=window.localStorage.getItem(this.storageKey);t&&(this.listOfHidden=t.split(",").map((t=>parseInt(t,10))))}}window.innerWidth>992&&[...document.querySelectorAll("table")].forEach((t=>{const e=t.dataset.name?t.dataset.name:document.querySelector(".page-title").textContent.trim().replace(/[^a-z0-9]/gi,"-").toLowerCase();e&&new TableColumns(t,e)}));


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer