UNPKG

datatables.net-columncontrol

Version:

ColumnControl for DataTables

8 lines 45.3 kB
/*! ColumnControl 2.0.0 for DataTables * Copyright (c) SpryMedia Ltd - datatables.net/license * * SVG icons: ISC License * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). * All other copyright (c) for Lucide are held by Lucide Contributors 2022. */ import DataTable,{Dom,Api}from"datatables.net";function createElement(e,t=[],r=null,n=[]){let s=document.createElement(e);return addClass(s,t),r&&(s.innerHTML=r),n.forEach(e=>{s.appendChild(e)}),s}function addClass(t,e){e&&(e=Array.isArray(e)?e:[e]).forEach(e=>{t&&e&&t.classList.add(e)})}function close(t=null){document.querySelectorAll("div.dtcc-dropdown").forEach(e=>{null!==t&&e.contains(t.target)||(e._close(),t._closed||(t._closed=[]),t._closed.push(e))})}function getContainer(e,t){return t.closest("div.dtfh-floatingparent")||e.table().container()}function positionDropdown(e,t,r){var n=r.closest("div.dt-column-header"),t=getContainer(t,r),n=getComputedStyle(n),s=e.offsetWidth,o=relativePosition(t,r);let a,i;i=o.top+r.offsetHeight,a="row-reverse"===n.flexDirection?o.left:o.left-s+r.offsetWidth;n=t.offsetWidth;a+s>n&&(a-=a+s-n),a<0&&(a=0),e.style.top=i+"px",e.style.left=a+"px"}function attachDropdown(r,e,t,n){var s=getContainer(e,t.element());r._shown=!0,s.append(r),positionDropdown(r,e,t.element()),t.element().setAttribute("aria-expanded","true");let o=e=>{var t;r._shown?e.target===r||r.contains(e.target)||(t=document.querySelector("div.dt-datetime"))&&(e.target===t||t.contains(e.target))||(r._close(),document.body.removeEventListener("click",o)):document.body.removeEventListener("click",o)};return document.body.addEventListener("click",o),n&&(s=r.querySelector(n))&&s.focus(),o}function relativePosition(e,t){let r=0,n=0;for(;t&&t!==e&&t!==document.body;)r+=t.offsetTop,n+=t.offsetLeft,t.scrollTop&&(n-=t.scrollTop),t.scrollLeft&&(n-=t.scrollLeft),t=t.offsetParent;return{top:r,left:n}}function focusCapture(n,s){return function(e){var t,r;n._shown&&(t=Array.from(n.querySelectorAll("a, button, input, select")),r=document.activeElement,"Escape"===e.key?(n._close(),s.focus()):"Tab"===e.key&&0!==t.length&&(t.includes(r)?e.shiftKey?r===t[0]&&(t[t.length-1].focus(),e.preventDefault()):r===t[t.length-1]&&(t[0].focus(),e.preventDefault()):(t[0].focus(),e.preventDefault())))}}let dropdownContent={classes:{container:"dtcc-dropdown",liner:"dtcc-dropdown-liner"},defaults:{autoFocus:"div.dtcc-search input",className:"dropdown",dropdownClass:"",content:[],icon:"menu",iconActive:"",text:"More..."},init(r){let n=this.dt(),s=createElement("div",dropdownContent.classes.container,"",[createElement("div",dropdownContent.classes.liner)]);s._shown=!1,s._close=()=>{s.remove(),s._shown=!1,o.element().setAttribute("aria-expanded","false")},s.setAttribute("role","dialog"),s.setAttribute("aria-label",n.i18n("columnControl.dropdown",r.text)),r.dropdownClass&&addClass(s,r.dropdownClass.split(" ")),n.on("fixedheader-mode",()=>{s._shown&&attachDropdown(s,n,r._parents?r._parents[0]:o,r.autoFocus)});var t=s.childNodes[0];let o=new Button(n,this).text(n.i18n("columnControl.dropdown",r.text)).icon(r.icon,r.iconActive).className(r.className).dropdownDisplay(t).handler(e=>{var t;e._closed&&e._closed.includes(s)||(attachDropdown(s,n,r._parents?r._parents[0]:o,r.autoFocus),(t=s.querySelector("input, a, button"))&&"keypress"===e.type&&t.focus())});o.element().setAttribute("aria-haspopup","dialog"),o.element().setAttribute("aria-expanded","false");for(let e=0;e<r.content.length;e++){var a=this.resolve(r.content[e]),a=(a.config._parents||(a.config._parents=[]),a.config._parents.push(o),a.plugin.init.call(this,a.config));t.appendChild(a)}r._parents&&r._parents.length&&o.extra("chevronRight"),n.on("columns-reordered",()=>{positionDropdown(s,n,o.element())});let e=focusCapture(s,o.element());return document.body.addEventListener("keydown",e),n.on("destroy",()=>{document.body.removeEventListener("keydown",e)}),o.element()}};function wrap(e){return'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">'+e+"</svg>"}let icons={chevronRight:wrap('<path d="m9 18 6-6-6-6"/>'),columns:wrap('<rect width="18" height="18" x="3" y="3" rx="2"/><path d="M9 3v18"/><path d="M15 3v18"/>'),contains:wrap('<path d="M10 3h4v18h-4z"/><path d="M18 8h3v9h-3"/><path d="M6 17H3V8h3"/>'),empty:wrap('<circle cx="12" cy="12" r="10"/>'),ends:wrap('<path d="M21 3h-4v18h4z"/><path d="M13 8H3v9h10"/>'),equal:wrap('<line x1="5" x2="19" y1="9" y2="9"/><line x1="5" x2="19" y1="15" y2="15"/>'),greater:wrap('<path d="m9 18 6-6-6-6"/>'),greaterOrEqual:wrap('<path d="m9 16 6-6-6-6"/><path d="m9 21 6-6"/>'),groupAdd:wrap('<path d="M6 21v-7.5m-3.549 3.75H9.75"/><rect width="13.5" height="7.5" x="3" y="3" rx="1.5"/><rect width="7.5" height="7.5" x="13.5" y="13.5" fill="currentColor" rx="1.5"/>'),groupClear:wrap('<rect width="13.5" height="7.5" x="3" y="3" rx="1.5"/><rect width="7.5" height="7.5" x="13.5" y="13.5" rx="1.5"/>'),groupTop:wrap('<rect width="13.5" height="7.5" x="3" y="3" fill="currentColor" rx="1.5"/><rect width="7.5" height="7.5" x="13.5" y="13.5" rx="1.5"/>'),groupRemove:wrap('<path d="M2.451 17.25H9.75"/><rect width="13.5" height="7.5" x="3" y="3" rx="1.5"/><rect width="7.5" height="7.5" x="13.5" y="13.5" rx="1.5"/>'),info:wrap('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>'),less:wrap('<path d="m15 18-6-6 6-6"/>'),lessOrEqual:wrap('<path d="m15 16-6-6 6-6"/><path d="m15 21-6-6"/>'),menu:wrap('<line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/>'),move:wrap('<line x1="12" x2="12" y1="3" y2="21"/><polyline points="8 8 4 12 8 16"/><polyline points="16 16 20 12 16 8"/>'),moveLeft:wrap('<path d="m9 6-6 6 6 6"/><path d="M3 12h14"/><path d="M21 19V5"/>'),moveRight:wrap('<path d="M3 5v14"/><path d="M21 12H7"/><path d="m15 18 6-6-6-6"/>'),notContains:wrap('<path d="M15 4 9 20"/><path d="M3 8h18v9H3z"/>'),notEmpty:wrap('<circle cx="12" cy="12" r="10"/><line x1="9" x2="15" y1="15" y2="9"/>'),notEqual:wrap('<path d="M5 9h14"/><path d="M5 15h14"/><path d="M15 5 9 19"/>'),orderAddAsc:wrap('<path d="M17 21v-8"/><path d="M3 4h6"/><path d="M3 8h9"/><path d="M3 12h10"/><path d="M13 17h8"/>'),orderAddDesc:wrap('<path d="M17 21v-8"/><path d="M3 4h12"/><path d="M3 8h9"/><path d="M3 12h6"/><path d="M13 17h8"/>'),orderAsc:wrap('<path d="m3 8 4-4 4 4"/><path d="M7 4v16"/><path d="M11 12h4"/><path d="M11 16h7"/><path d="M11 20h10"/>'),orderClear:wrap('<path d="m21 21-8-8"/><path d="M3 4h12"/><path d="M3 8h9"/><path d="M3 12h6"/><path d="m13 21 8-8"/>'),orderDesc:wrap('<path d="m3 16 4 4 4-4"/><path d="M7 20V4"/><path d="M11 4h10"/><path d="M11 8h7"/><path d="M11 12h4"/>'),orderRemove:wrap('<path d="M3 4h12"/><path d="M3 8h9"/><path d="M3 12h6"/><path d="M13 17h8"/>'),orderNone:wrap('<path d="m3 8 4-4 4 4"/><path d="m11 16-4 4-4-4"/><path d="M7 4v16"/><path d="M15 8h6"/><path d="M15 16h6"/><path d="M13 12h8"/>'),search:wrap('<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>'),searchActive:wrap('<path d="m8 11 2 2 4-4"/><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>'),searchClear:wrap('<path d="m13.5 8.5-5 5"/><path d="m8.5 8.5 5 5"/><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>'),starts:wrap('<path d="M3 3h4v18H3z"/><path d="M11 8h10v9H11"/>'),tick:wrap('<path d="M20 6 9 17l-5-5"/>'),x:wrap('<path d="M18 6 6 18"/><path d="m6 6 12 12"/>')},_namespace=0;class Button{active(e){return void 0===e?this._s.active:(this._s.active=e,this._checkActive(),this)}activeList(e,t){return this._s.activeList[e]=t,this._checkActive(),this}checkDisplay(){let t=0;var r=this._dom.dropdownDisplay.childNodes;for(let e=0;e<r.length;e++)"none"!==r[e].style.display&&t++;return 0===t&&(this._dom.button.style.display="none"),this}className(e){return this._dom.button.classList.add("dtcc-button_"+e),this}destroy(){this._s.buttonClick&&(this._dom.button.removeEventListener("click",this._s.buttonClick),this._dom.button.removeEventListener("keypress",this._s.buttonClick)),this._s.host.destroyRemove(this)}dropdownDisplay(e){return this._dom.dropdownDisplay=e,this}element(){return this._dom.button}enable(e){return void 0===e?this._s.enabled:(this._dom.button.classList.toggle("dtcc-button_disabled",!e),this._s.enabled=e,this)}extra(e){return this._dom.extra.innerHTML=e?icons[e]:"",this}handler(t){var e=e=>{close(e),e.stopPropagation(),e.preventDefault(),this._s.enabled&&t(e)};return this._s.buttonClick=e,this._s.namespace="dtcc-"+_namespace++,this._dom.button.addEventListener("click",e),this._dom.button.addEventListener("keypress",e),this._s.host.destroyAdd(this),this}icon(e,t){return this._s.icon=e,this._s.iconActive=t,this._checkActive(),this}text(e){return void 0===e?this._s.label:(this._dom.text.innerHTML=e,this._s.label=e,this._dom.button.setAttribute("aria-label",e),this)}value(e){return void 0===e?this._s.value:(this._s.value=e,this)}constructor(e,t){this._s={active:!1,activeList:[],buttonClick:null,dt:null,enabled:!0,icon:"",iconActive:"",host:null,label:"",namespace:"",value:null},this._s.dt=e,this._s.host=t,this._dom={button:createElement("button",Button.classes.container),dropdownDisplay:null,extra:createElement("span","dtcc-button-extra"),icon:createElement("span","dtcc-button-icon"),state:createElement("span","dtcc-button-state"),text:createElement("span","dtcc-button-text")},this._dom.button.setAttribute("type","button"),this._dom.button.append(this._dom.icon),this._dom.button.append(this._dom.text),this._dom.button.append(this._dom.state),this._dom.button.append(this._dom.extra),this.enable(!0)}_checkActive(){let e=this._s.icon;return!0===this._s.active||Object.values(this._s.activeList).includes(!0)?(this._dom.state.innerHTML=icons.tick,this._dom.button.classList.add("dtcc-button_active"),this._s.iconActive&&(e=this._s.iconActive)):(this._dom.state.innerHTML="",this._dom.button.classList.remove("dtcc-button_active")),e&&(this._dom.icon.innerHTML=icons[e]),this}}Button.classes={container:"dtcc-button"};class CheckList{add(r,e){Array.isArray(r)||(r=[r]);for(let e=0;e<r.length;e++){var n=r[e];let t=new Button(this._s.dt,this._s.host).active(n.active||!1).handler(e=>{this._s.handler(e,t,this._s.buttons,!0),this._updateCount()}).icon(n.icon||"").text(""!==n.label?n.label:this._s.dt.i18n("columnControl.list.empty","Empty")).value(n.value);""===n.label&&t.className("empty"),this._s.buttons.push(t)}var t=this._s.buttons.length;return!0!==e&&void 0!==e||(this._dom.selectAllCount.innerHTML=t?"("+t+")":"",this._redraw()),this}button(t){var r=this._s.buttons;for(let e=0;e<r.length;e++)if(r[e].value()===t)return r[e];return null}clear(){for(let e=0;e<this._s.buttons.length;e++)this._s.buttons[e].destroy();return this._dom.buttons.replaceChildren(),this._s.buttons.length=0,this}element(){return this._dom.container}handler(e){return this._s.handler=e,this}searchListener(e){return e.on("cc-search-clear",(e,t)=>{t===this._s.host.idx()&&(this.selectNone(),this._s.handler(e,null,this._s.buttons,!1),this._s.search="",this._dom.search.value="",this._redraw(),this._updateCount())}),this}selectAll(){for(let e=0;e<this._s.displayed.length;e++)this._s.displayed[e].active(!0);return this}selectNone(){for(let e=0;e<this._s.buttons.length;e++)this._s.buttons[e].active(!1);return this}title(e){return this._dom.title.innerHTML=e,this}values(e){let t;var r=[],n=this._s.buttons;if(void 0!==e){for(t=0;t<n.length;t++)n[t].active(e.includes(n[t].value()));return this._updateCount(),this}for(t=0;t<n.length;t++)n[t].active()&&r.push(n[t].value());return r}constructor(e,t,r){this._s={buttons:[],displayed:[],dt:null,handler:()=>{},host:null,search:""},this._s.dt=e,this._s.host=t,this._dom={buttons:createElement("div","dtcc-list-buttons"),container:createElement("div",CheckList.classes.container),controls:createElement("div","dtcc-list-controls"),empty:createElement("div","dtcc-list-empty",e.i18n("columnControl.list.empty","No options")),title:createElement("div","dtcc-list-title"),selectAll:createElement("button","dtcc-list-selectAll",e.i18n("columnControl.list.all","Select")),selectAllCount:createElement("span"),selectNone:createElement("button","dtcc-list-selectNone",e.i18n("columnControl.list.none","Deselect")),selectNoneCount:createElement("span"),search:createElement("input",CheckList.classes.input)};let n=this._dom,s=(n.search.setAttribute("type","text"),n.container.append(n.title),n.container.append(n.controls),n.container.append(n.empty),n.container.append(n.buttons),r.select&&(n.controls.append(n.selectAll),n.controls.append(n.selectNone),n.selectAll.append(n.selectAllCount),n.selectNone.append(n.selectNoneCount),n.selectAll.setAttribute("type","button"),n.selectNone.setAttribute("type","button")),()=>{this._s.search=n.search.value,this._redraw()}),o=e=>{this.selectAll(),this._s.handler(e,null,this._s.buttons,!0),this._updateCount()},a=e=>{this.selectNone(),this._s.handler(e,null,this._s.buttons,!0),this._updateCount()};r.search&&(n.controls.append(n.search),n.search.setAttribute("placeholder",e.i18n("columnControl.list.search","Search...")),n.search.addEventListener("input",s)),n.selectAll.addEventListener("click",o),n.selectNone.addEventListener("click",a),e.on("destroy",()=>{n.selectAll.removeEventListener("click",o),n.selectNone.removeEventListener("click",a),n.search.removeEventListener("input",s)})}_updateCount(){var e=this.values().length;this._dom.selectNoneCount.innerHTML=e?"("+e+")":""}_redraw(){var t=this._s.buttons,r=this._dom.buttons,n=this._s.search.toLowerCase();r.replaceChildren();for(let e=this._s.displayed.length=0;e<t.length;e++){var s=t[e];n&&!s.text().toLowerCase().includes(n)||(r.appendChild(s.element()),this._s.displayed.push(s))}this._dom.empty.style.display=0===t.length?"block":"none",r.style.display=0<t.length?"block":"none",this._dom.selectAllCount.innerHTML=n?"("+this._s.displayed.length+" / "+t.length+")":"("+t.length+")"}}var colVis={defaults:{className:"colVis",columns:"",search:!(CheckList.classes={container:"dtcc-list",input:"dtcc-list-search"}),select:!1,title:"Column visibility"},init(e){let s=this.dt(),o=new CheckList(s,this,{search:e.search,select:e.select}).title(s.i18n("columnControl.colVis",e.title)).handler((e,t,r)=>{t&&t.active(!t.active()),n(r)}),n=t=>{for(let e=0;e<t.length;e++){var r=t[e],n=r.value(),n=s.column(n);r.active()&&!n.visible()?n.visible(!0):!r.active()&&n.visible()&&n.visible(!1)}},r=()=>{s.columns(e.columns).every(function(){o.add({active:this.visible(),label:this.title(),value:this.index()})})};return r(),s.on("column-visibility",(e,t,r,n)=>{r=o.button(r);r&&r.active(n)}),s.on("columns-reordered",(e,t)=>{o.clear(),r()}),o.element()}},colVisDropdown={defaults:{className:"colVis",columns:"",search:!1,select:!1,text:"Column visibility",title:"Column visibility"},extend(e){return{extend:"dropdown",icon:"columns",text:this.dt().i18n("columnControl.colVisDropdown",e.text),content:[Object.assign(e,{extend:"colVis"})]}}},info={defaults:{activation:"hover",className:"info",content:"attr:title",contentClass:"dtcc-popover",gap:10,icon:"info",text:""},init(e){var t=this.dt(),r=new Button(t,this).text(t.i18n("columnControl.order",e.text)).icon(e.icon).className(e.className);let n=Dom.s(r.element()),s=Dom.c("div").classAdd(e.contentClass),o;if(e.content.match(/^attr:/)){var r=e.content.replace(/^attr:/,""),t=Dom.s(t.column(this.idx()).header()),a=t.attr(r);if(t.attrRemove(r),!a)return;s.text(a)}else s.html(e.content);return n.on("hover"===e.activation?"mouseenter":"click",()=>{show(s,n,e.gap)}),n.on("mouseleave",()=>{o=setTimeout(()=>{remove(s)},250)}),s.on("mouseenter",()=>{o&&clearTimeout(o)}).on("mouseleave",()=>{remove(s)}),n[0]}};function show(e,t,r){e.css("opacity","0"),t.parent().append(e);var n=e.height("outer"),s=e.width("outer"),o=t.width("outer"),a=t.height("outer"),i=t.position();t.offset(),e.css({top:-n-r+"px",left:i.left+o/2-s/2+"px"}),e[0].getBoundingClientRect().y<0&&e.css("top",a+r+"px").classAdd("below"),e.css("opacity","1")}function remove(e){e.detach().classRemove("below")}var order={defaults:{className:"order",iconAsc:"orderAsc",iconDesc:"orderDesc",iconNone:"orderNone",statusOnly:!1,text:"Toggle ordering"},init(n){var e=this.dt();let s=new Button(e,this).text(e.i18n("columnControl.order",n.text)).icon("orderAsc").className(n.className);return n.statusOnly||e.order.listener(s.element(),()=>[this.idx()],()=>{}),e.on("order",(e,t,r)=>{r=r.find(e=>e.col===this.idx());r?"asc"===r.dir?s.active(!0).icon(n.iconAsc):"desc"===r.dir&&s.active(!0).icon(n.iconDesc):s.active(!1).icon(n.iconNone)}),s.element()}},orderAddAsc={defaults:{className:"orderAddAsc",icon:"orderAddAsc",text:"Add Sort Ascending"},init(e){let t=this.dt(),n=new Button(t,this).text(t.i18n("columnControl.orderAddAsc",e.text)).icon(e.icon).className(e.className).handler(()=>{t.order().push([this.idx(),"asc"]),t.draw()});return t.on("order",(e,t,r)=>{r=r.some(e=>e.col===this.idx());n.enable(!r)}),n.element()}},orderAddDesc={defaults:{className:"orderAddDesc",icon:"orderAddDesc",text:"Add Sort Descending"},init(e){let t=this.dt(),n=new Button(t,this).text(t.i18n("columnControl.orderAddDesc",e.text)).icon(e.icon).className(e.className).handler(()=>{t.order().push([this.idx(),"desc"]),t.draw()});return t.on("order",(e,t,r)=>{r=r.some(e=>e.col===this.idx());n.enable(!r)}),n.element()}},orderAsc={defaults:{className:"orderAsc",icon:"orderAsc",text:"Sort Ascending"},init(e){var t=this.dt();let n=new Button(t,this).text(t.i18n("columnControl.orderAsc",e.text)).icon(e.icon).className(e.className).handler(()=>{this.dt().order([{idx:this.idx(),dir:"asc"}]).draw()});return t.on("order",(e,t,r)=>{r=r.some(e=>e.col===this.idx()&&"asc"===e.dir);n.active(r)}),n.element()}},orderClear={defaults:{className:"orderClear",icon:"orderClear",text:"Clear sort"},init(e){let t=this.dt(),n=new Button(t,this).text(t.i18n("columnControl.orderClear",e.text)).icon(e.icon).className(e.className).handler(()=>{t.order([]).draw()});return t.on("order",(e,t,r)=>{n.enable(0<r.length)}),0===t.order().length&&n.enable(!1),n.element()}},orderDesc={defaults:{className:"orderDesc",icon:"orderDesc",text:"Sort Descending"},init(e){var t=this.dt();let n=new Button(t,this).text(t.i18n("columnControl.orderDesc",e.text)).icon(e.icon).className(e.className).handler(()=>{this.dt().order([{idx:this.idx(),dir:"desc"}]).draw()});return t.on("order",(e,t,r)=>{r=r.some(e=>e.col===this.idx()&&"desc"===e.dir);n.active(r)}),n.element()}},orderRemove={defaults:{className:"orderRemove",icon:"orderRemove",text:"Remove from sort"},init(e){let r=this.dt(),n=new Button(r,this).text(r.i18n("columnControl.orderRemove",e.text)).icon(e.icon).className(e.className).handler(()=>{var e=r.order(),t=e.findIndex(e=>e[0]===this.idx());e.splice(t,1),r.order(e).draw()});return r.on("order",(e,t,r)=>{r=r.some(e=>e.col===this.idx());n.enable(r)}),n.enable(!1),n.element()}},orderStatus={defaults:{className:"order",iconAsc:"orderAsc",iconDesc:"orderDesc",iconNone:"orderNone",statusOnly:!0,text:"Sort status"},extend(e){return Object.assign(e,{extend:"order"})}},reorder={defaults:{className:"reorder",icon:"move",text:"Reorder columns"},init(e){var t=this.dt();let r=new Button(t,this).text(t.i18n("columnControl.reorder",e.text)).icon(e.icon).className(e.className);return 0===this.idx()&&r.enable(!1),t.on("columns-reordered",(e,t)=>{r.enable(0<this.idx())}),t.init().colReorder||new DataTable.ColReorder(t,{}),r.element()}},reorderLeft={defaults:{className:"reorderLeft",icon:"moveLeft",text:"Move column left"},init(e){let t=this.dt(),r=new Button(t,this).text(t.i18n("columnControl.reorderLeft",e.text)).icon(e.icon).className(e.className).handler(()=>{var e=this.idx();0<e&&t.colReorder.move(e,e-1)});return 0===this.idx()&&r.enable(!1),t.on("columns-reordered",(e,t)=>{r.enable(0<this.idx())}),r.element()}},reorderRight={defaults:{className:"reorderRight",icon:"moveRight",text:"Move column right"},init(e){let r=this.dt(),n=new Button(r,this).text(r.i18n("columnControl.reorderRight",e.text)).icon(e.icon).className(e.className).handler(()=>{var e=this.idx();e<r.columns().count()-1&&r.colReorder.move(e,e+1)});return this.idx()===r.columns().count()-1&&n.enable(!1),r.on("columns-reordered",(e,t)=>{n.enable(this.idx()<r.columns().count()-1)}),n.element()}};function rowGroupAdd$1(e,t){var r=rowGroupApplied(e);return-1===r.indexOf(t)&&(r.push(t),e.rowGroup().dataSrc(r)),r}function rowGroupApplied(e){e=e.rowGroup().dataSrc();return Array.isArray(e)?e:[e]}function rowGroupClear$1(e){e.rowGroup().dataSrc([])}function rowGroupRemove$1(e,t){var r=rowGroupApplied(e),t=r.indexOf(t);return-1!==t&&(r.splice(t,1),e.rowGroup().dataSrc(r)),r}var rowGroup={defaults:{className:"rowGroup",icon:"groupTop",order:!0,text:"Group rows"},init(t){let r=this.dt(),n=new Button(r,this).text(r.i18n("columnControl.rowGroup",t.text)).icon(t.icon).className(t.className).handler(()=>{var e=r.column(this.idx()).dataSrc();n.active()?rowGroupRemove$1(r,e):(rowGroupClear$1(r),rowGroupAdd$1(r,e),!1!==t.order&&r.order([this.idx(),"asc"])),r.draw()});return r.on("rowgroup-datasrc",()=>{var e=rowGroupApplied(r),t=r.column(this.idx()).dataSrc();n.active(e.includes(t))}),n.element()}},rowGroupAdd={defaults:{className:"rowGroupAdd",icon:"groupAdd",order:!0,text:"Add to grouping"},init(e){let r=this.dt(),n=new Button(r,this).text(r.i18n("columnControl.rowGroup",e.text)).icon(e.icon).className(e.className).handler(()=>{var e=r.column(this.idx()).dataSrc();n.enable()&&rowGroupAdd$1(r,e),r.draw()});return r.on("rowgroup-datasrc",()=>{var e=rowGroupApplied(r),t=r.column(this.idx()).dataSrc();n.enable(!e.includes(t))}),n.element()}},rowGroupClear={defaults:{className:"rowGroupClear",icon:"groupClear",text:"Clear all grouping"},init(e){let t=this.dt(),r=new Button(t,this).text(t.i18n("columnControl.rowGroup",e.text)).icon(e.icon).className(e.className).handler(()=>{rowGroupClear$1(t),t.draw()});return t.on("rowgroup-datasrc",()=>{r.enable(0<rowGroupApplied(t).length)}),r.enable(0<rowGroupApplied(t).length),r.element()}},rowGroupRemove={defaults:{className:"rowGroupRemove",icon:"groupRemove",order:!0,text:"Remove from grouping"},init(e){let r=this.dt(),n=new Button(r,this).text(r.i18n("columnControl.rowGroup",e.text)).icon(e.icon).className(e.className).handler(()=>{var e=r.column(this.idx()).dataSrc();n.enable()&&(rowGroupRemove$1(r,e),r.draw())});return r.on("rowgroup-datasrc",()=>{var e=rowGroupApplied(r),t=r.column(this.idx()).dataSrc();n.enable(e.includes(t))}),n.enable(!1),n.element()}};class SearchInput{addClass(e){return this._dom.container.classList.add(e),this}clear(){return this.set(this._dom.select.children[0].getAttribute("value"),""),this}clearable(e){return e||this._dom.clear.remove(),this}element(){return this._dom.container}input(){return this._dom.input}options(t){var r=this._dom.select;for(let e=0;e<t.length;e++)r.add(new Option(t[e].label,t[e].value));return this._dom.typeIcon.innerHTML=icons[t[0].value],this}placeholder(e){var t;return e&&(t=this._dt.column(this._idx).title(),this._dom.input.placeholder=e.replace("[title]",t)),this}runSearch(e=!1){var t=this._dom,r="empty"===t.select.value||"notEmpty"===t.select.value||""!==t.input.value;t.container.classList.toggle("dtcc-search_active",r),(e||this._search&&(this._lastValue!==t.input.value||this._lastType!==t.select.value))&&(this._search(t.select.value,t.input.value,this._loadingState),this._lastValue=t.input.value,this._lastType=t.select.value)}search(e){return this._dt,this._search=e,this._stateLoad(this._dt.state.loaded()),this}set(e,t){var r=this._dom;return r.input.value=t,r.select.value=e,r.typeIcon.innerHTML=icons[r.select.value],this.runSearch(),this}sspTransform(e){return this._sspTransform=e,this}sspData(e){return this._sspData=e,this}title(e){var t;return e&&(t=this._dt.column(this._idx).title(),this._dom.title.innerHTML=e.replace("[title]",t)),this}titleAttr(e){var t;return e&&(t=this._dt.column(this._idx).title(),this._dom.input.title=e.replace("[title]",t)),this}type(e){return this._type=e,this}constructor(s,e,t){this._type="text",this._sspTransform=null,this._sspData={},this._dt=s,this._idx=e,this._colUnique=t,this._dom={clear:createElement("span","dtcc-search-clear",icons.x),container:createElement("div",SearchInput.classes.container),typeIcon:createElement("div","dtcc-search-type-icon"),searchIcon:createElement("div","dtcc-search-icon",icons.search),input:createElement("input",SearchInput.classes.input),inputs:createElement("div"),select:createElement("select",SearchInput.classes.select),title:createElement("div","dtcc-search-title")};let o=this._dom,r=e,n=(o.input.setAttribute("type","text"),o.container.append(o.title,o.inputs),o.inputs.append(o.typeIcon,o.select,o.searchIcon,o.clear,o.input),()=>{this.runSearch()}),a=()=>{o.typeIcon.innerHTML=icons[o.select.value],this.runSearch()},i=()=>{this.clear()};o.input.addEventListener("input",n),o.select.addEventListener("input",a),o.clear.addEventListener("click",i),s.on("destroy",()=>{o.input.removeEventListener("input",n),o.select.removeEventListener("input",a),o.clear.removeEventListener("click",i)}),s.on("stateSaveParams.DT",(e,t,r)=>{r.columnControl||(r.columnControl={});var n=s.column(this._colUnique).name()||this._colUnique;r.columnControl[n]||(r.columnControl[n]={}),r.columnControl[n].searchInput={logic:o.select.value,type:this._type,value:o.input.value}}),s.on("stateLoaded.DT",(e,t,r)=>{this._stateLoad(r)}),s.on("columns-reordered.DT",(e,t)=>{this._idx=s.colReorder.transpose(r,"fromOriginal")}),s.on("cc-search-clear.DT",(e,t)=>{t===this._idx&&(this._loadingState=!0,this.clear(),this._loadingState=!1)}),s.page.info().serverSide&&s.on("preXhr.DT",(e,t,r)=>{if(r.columns&&r.columns[this._idx]){r.columns[this._idx].columnControl||(r.columns[this._idx].columnControl={});let e=this._dom.input.value;this._sspTransform&&(e=this._sspTransform(e)),r.columns[this._idx].columnControl.search=Object.assign({value:e,logic:this._dom.select.value,type:this._type},this._sspData)}})}_stateLoad(e){var t=this._dom,r=this._colUnique,n=this._dt.column(r).name();let s;e&&e.columnControl&&(e.columnControl[n]?s=e.columnControl[n].searchInput:e.columnControl[r]&&(s=e.columnControl[r].searchInput),s)&&(this._loadingState=!0,t.select.value=s.logic,t.input.value=s.value,t.select.dispatchEvent(new Event("input")),this._loadingState=!1)}}SearchInput.classes={container:["dtcc-content","dtcc-search"],input:"",select:""};var searchDateTime={defaults:{clear:!0,excludeLogic:[],format:"",mask:"",placeholder:"",title:"",titleAttr:""},init(a){let i=!1,s=this.dt();var e="columnControl.search.datetime.";let l="",c="",d,u,h=()=>{c=getFormat(s,this.idx()),a.format?l=a.format:"original"===c?(l="YYYY-MM-DD",u=s.settings()[0].fastData):l=c},t=new SearchInput(s,this.idx(),this.idxOriginal()).type("date").addClass("dtcc-searchDateTime").sspTransform(e=>toISO(e,l)).sspData({mask:a.mask}).clearable(a.clear).placeholder(a.placeholder).title(a.title).titleAttr(a.titleAttr).options([{label:s.i18n(e+"equal","Equals"),value:"equal"},{label:s.i18n(e+"notEqual","Does not equal"),value:"notEqual"},{label:s.i18n(e+"greater","After"),value:"greater"},{label:s.i18n(e+"less","Before"),value:"less"},{label:s.i18n(e+"empty","Empty"),value:"empty"},{label:s.i18n(e+"notEmpty","Not empty"),value:"notEmpty"}].filter(e=>!a.excludeLogic.includes(e.value))).search((t,r,e)=>{a._parents&&a._parents.forEach(e=>e.activeList(this.unique()+"datetime","empty"===t||"notEmpty"===t||!!r));var n=s.column(this.idx());if(s.page.info().serverSide)n.init().__ccList=!("empty"!==t&&"notEmpty"!==t&&!r),e||s.draw();else{l&&c||h();let s=a.mask,o=""===r?"":dateToNum(d&&i?d.val():r.trim(),l,s);if("empty"===t)n.search.fixed("dtcc",e=>!e);else if("notEmpty"===t)n.search.fixed("dtcc",e=>!!e);else{if(""===n.search.fixed("dtcc")&&""===o)return;o?"equal"===t?n.search.fixed("dtcc",(e,t,r,n)=>dateToNum(u?u(r,n):e,c,s)==o):"notEqual"===t?n.search.fixed("dtcc",(e,t,r,n)=>dateToNum(u?u(r,n):e,c,s)!=o):"greater"===t?n.search.fixed("dtcc",(e,t,r,n)=>dateToNum(u?u(r,n):e,c,s)>o):"less"===t&&n.search.fixed("dtcc",(e,t,r,n)=>dateToNum(u?u(r,n):e,c,s)<o):n.search.fixed("dtcc","")}e||n.draw()}});return s.on("columnTypes",()=>{h(),t.runSearch(!0)}),s.ready(()=>{var e=DataTable.use("datetime");h(),e&&(d=new e(t.input(),{format:l,i18n:s.settings()[0].language.datetime,onChange:()=>{i=!0,t.runSearch(),i=!1}}))}),t.element()}};function getFormat(e,t){var r=e.column(t).type();return r?"datetime"===r?(t=(e=e.settings()[0].columns[t].render)("1999-08-07T23:05:04Z","display"),e=e("1999-08-07T03:05:04Z","display").includes("03"),DataTable.use("moment")?t.replace("23",e?"HH":"H").replace("11",e?"hh":"h").replace("05","mm").replace("04","ss").replace("PM","A").replace("pm","a").replace("07","DD").replace("7","D").replace("08","MM").replace("8","M").replace("1999","YYYY").replace("99","YY"):DataTable.use("luxon")?t.replace("23",e?"HH":"H").replace("11",e?"hh":"h").replace("05","mm").replace("04","ss").replace("PM","a").replace("07","dd").replace("7","d").replace("08","MM").replace("8","M").replace("1999","yyyy").replace("99","yy"):t.includes("23")&&t.includes("1999")?"YYYY-MM-DD hh:mm:ss":t.includes("23")?"hh:mm:ss":"original"):r.includes("datetime-")?r.replace(/datetime-/g,""):r.includes("moment")?r.replace(/moment-/g,""):r.includes("luxon")?r.replace(/luxon-/g,""):"YYYY-MM-DD":"YYYY-MM-DD"}function dateToNum(e,t,r){let n;var s=DataTable.use("moment"),o=DataTable.use("luxon");return""===e?"":(n=e instanceof Date?e:"YYYY-MM-DD"!==t&&(s||o)?new Date(s?1e3*s.utc(e,t).unix():o.DateTime.fromFormat(e,t,{zone:"utc"}).toMillis()):new Date(e.replace(/\//g,"-")),r&&(r.includes("YYYY")||n.setFullYear(1970),r.includes("MM")||n.setUTCMonth(0),r.includes("DD")||n.setUTCDate(1),r.includes("hh")||n.setUTCHours(0),r.includes("mm")||n.setUTCMinutes(0),r.includes("ss")||n.setUTCSeconds(0),r.includes("sss")||n.setUTCMilliseconds(0)),n.getTime())}function toISO(e,t){var r=DataTable.use("moment"),n=DataTable.use("luxon");return""===e?"":"YYYY-MM-DD"!==t&&r?r.utc(e,t).toISOString():"YYYY-MM-DD"!==t&&n?n.DateTime.fromFormat(e,t).toISO():e.replace(/\//g,"-")}function setOptions(t,r,n=[]){var e=t.values();t.clear();for(let e=0;e<r.length;e++)"object"==typeof r[e]?t.add({active:n.includes(r[e].value),label:r[e].label,value:r[e].value},e===r.length-1):t.add({active:n.includes(r[e]),label:r[e],value:r[e]},e===r.length-1);e.length&&t.values(e)}function getState(e,t,r){let n;e=e.column(t).name();if(r&&r.columnControl)return r.columnControl[e]?n=r.columnControl[e].searchList:r.columnControl[t]&&(n=r.columnControl[t].searchList),n||void 0}function getJsonOptions(e,t){var r=null==(r=e.ajax.json())?void 0:r.columnControl,e=e.column(t),n=e.name(),e=e.dataSrc();return r&&r[n]?r[n]:r&&"string"==typeof e&&r[e]?r[e]:r&&r[t]?r[t]:null}function reloadOptions(e,t,r,n,s){var o=null==(o=e.ajax.json())?void 0:o.columnControl;let a=[];var i=getJsonOptions(e,r);if(i)a=i;else{if(o&&t.ajaxOnly)return void(t.hidable&&(n.element().style.display="none",t._parents)&&t._parents.forEach(e=>e.checkDisplay()));if(!e.page.info().serverSide){var l={},c=e.rows({order:r}).indexes().toArray(),d=e.settings()[0];for(let e=0;e<c.length;e++){var u=d.fastData(c[e],r,"filter"),u=null!=u?u.toString():"";l[u]||(l[u]=!0,a.push({label:d.fastData(c[e],r,t.orthogonal),value:u}))}}}setOptions(n,a),s&&n.values(s)}var searchList={defaults:{ajaxOnly:!0,className:"searchList",hidable:!0,options:null,orthogonal:"display",search:!0,select:!0,title:""},init(n){let s=null,o=this.dt(),a=t=>{n._parents&&n._parents.forEach(e=>e.activeList(this.unique()+"list",t&&!!t.length));var e=o.column(this.idx());o.page.info().serverSide?e.init().__ccList=t&&0!==t.length:t&&(0===t.length?e.search.fixed("dtcc-list",""):e.search.fixed("dtcc-list",e=>t.includes(e)))},i=new CheckList(o,this,{search:n.search,select:n.select}).searchListener(o).title(o.i18n("columnControl.searchList",n.title).replace("[title]",o.column(this.idx()).title())).handler((e,t,r,n)=>{t&&t.active(!t.active()),a(i.values()),n&&o.draw()}),l=(s=getState(o,this.idx(),o.state.loaded()),n.options?setOptions(i,n.options,s):(o.ready(()=>{reloadOptions(o,n,this.idx(),i,s)}),o.on("xhr",(e,t,r)=>{o.one("draw",()=>{reloadOptions(o,n,this.idx(),i,s),s=null})})),[]);return o.page.info().serverSide&&o.on("preXhr.DT",(e,t,r)=>{var n;r.columns&&r.columns[this.idx()]&&(r.columns[this.idx()].columnControl||(r.columns[this.idx()].columnControl={}),n=l.length?l:i.values(),l=[],r.columns[this.idx()].columnControl.list=Object.assign({},n))}),o.on("stateLoaded",(e,t,r)=>{r=getState(o,this.idxOriginal(),r);r&&(i.values(r),a(r))}),o.on("stateSaveParams",(e,t,r)=>{var n=this.idxOriginal(),n=(r.columnControl||(r.columnControl={}),o.column(n).name()||n);r.columnControl[n]||(r.columnControl[n]={}),r.columnControl[n].searchList=o.ready()?i.values():s}),o.settings()[0].columns[this.idx()].columnControlSearchList=e=>{"refresh"===e?reloadOptions(o,n,this.idx(),i,null):setOptions(i,e)},a(s),o.page.info().serverSide&&s&&s.length&&(l=s),i.element()}},searchNumber={defaults:{clear:!0,excludeLogic:[],placeholder:"",title:"",titleAttr:""},init(s){let o=this.dt();var e="columnControl.search.number.",e=new SearchInput(o,this.idx(),this.idxOriginal()).type("num").addClass("dtcc-searchNumber").clearable(s.clear).placeholder(s.placeholder).title(s.title).titleAttr(s.titleAttr).options([{label:o.i18n(e+"equal","Equals"),value:"equal"},{label:o.i18n(e+"notEqual","Does not equal"),value:"notEqual"},{label:o.i18n(e+"greater","Greater than"),value:"greater"},{label:o.i18n(e+"greaterOrEqual","Greater or equal"),value:"greaterOrEqual"},{label:o.i18n(e+"less","Less than"),value:"less"},{label:o.i18n(e+"lessOrEqual","Less or equal"),value:"lessOrEqual"},{label:o.i18n(e+"empty","Empty"),value:"empty"},{label:o.i18n(e+"notEmpty","Not empty"),value:"notEmpty"}].filter(e=>!s.excludeLogic.includes(e.value))).search((t,r,e)=>{s._parents&&s._parents.forEach(e=>e.activeList(this.unique()+"number","empty"===t||"notEmpty"===t||!!r));var n=o.column(this.idx());if(o.page.info().serverSide)n.init().__ccList=!("empty"!==t&&"notEmpty"!==t&&!r),e||o.draw();else{if("empty"===t)n.search.fixed("dtcc",e=>!e);else if("notEmpty"===t)n.search.fixed("dtcc",e=>!!e);else{if(""===n.search.fixed("dtcc")&&""===r)return;""===r?n.search.fixed("dtcc",""):"equal"===t?n.search.fixed("dtcc",e=>stringToNum(e)==r):"notEqual"===t?n.search.fixed("dtcc",e=>stringToNum(e)!=r):"greater"===t?n.search.fixed("dtcc",e=>stringToNum(e)>r):"greaterOrEqual"===t?n.search.fixed("dtcc",e=>stringToNum(e)>=r):"less"===t?n.search.fixed("dtcc",e=>stringToNum(e)<r):"lessOrEqual"===t&&n.search.fixed("dtcc",e=>stringToNum(e)<=r)}e||n.draw()}});return e.input().setAttribute("inputmode","numeric"),e.input().setAttribute("pattern","[0-9]*"),e.element()}},_re_html=/<([^>]*>)/g,_re_formatted_numeric=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi;function stringToNum(e){var t;return 0===e||e&&"-"!==e?"number"==(t=typeof e)||"bigint"==t?e:+(e=e.replace?e.replace(_re_html,"").replace(_re_formatted_numeric,""):e):-1/0}var searchText={defaults:{clear:!0,excludeLogic:[],placeholder:"",title:"",titleAttr:""},init(s){let o=this.dt();var e="columnControl.search.text.";return new SearchInput(o,this.idx(),this.idxOriginal()).addClass("dtcc-searchText").clearable(s.clear).placeholder(s.placeholder).title(s.title).titleAttr(s.titleAttr).options([{label:o.i18n(e+"contains","Contains"),value:"contains"},{label:o.i18n(e+"notContains","Does not contain"),value:"notContains"},{label:o.i18n(e+"equal","Equals"),value:"equal"},{label:o.i18n(e+"notEqual","Does not equal"),value:"notEqual"},{label:o.i18n(e+"starts","Starts"),value:"starts"},{label:o.i18n(e+"ends","Ends"),value:"ends"},{label:o.i18n(e+"empty","Empty"),value:"empty"},{label:o.i18n(e+"notEmpty","Not empty"),value:"notEmpty"}].filter(e=>!s.excludeLogic.includes(e.value))).search((t,r,e)=>{s._parents&&s._parents.forEach(e=>e.activeList(this.unique()+"text","empty"===t||"notEmpty"===t||!!r));let n=o.column(this.idx());if(o.page.info().serverSide)n.init().__ccList=!("empty"!==t&&"notEmpty"!==t&&!r),e||o.draw();else{if(r=r.toLowerCase(),"empty"===t)n.search.fixed("dtcc",e=>!e);else if("notEmpty"===t)n.search.fixed("dtcc",e=>!!e);else{if(""===n.search.fixed("dtcc")&&""===r)return;""===r?n.search.fixed("dtcc",""):"equal"===t?n.search.fixed("dtcc",e=>e.toLowerCase()==r):"notEqual"===t?n.search.fixed("dtcc",e=>e.toLowerCase()!=r):"contains"===t?n.search.fixed("dtcc",r):"notContains"===t?n.search.fixed("dtcc",e=>!e.toLowerCase().includes(r)):"starts"===t?n.search.fixed("dtcc",e=>e.toLowerCase().startsWith(r)):"ends"===t&&n.search.fixed("dtcc",e=>e.toLowerCase().endsWith(r))}s._parents&&s._parents.forEach(e=>e.activeList(this.unique()+"text",!!n.search.fixed("dtcc"))),e||n.draw()}}).element()}},search={defaults:{allowSearchList:!1},init(r){let e,t,n=this.dt(),s=this.idx(),o;var a=null==(t=null==(e=n.state.loaded())?void 0:e.columnControl)?void 0:t[s];let i=e=>{var t=getJsonOptions(n,s);return"list"===e||r.allowSearchList&&t?searchList.init.call(this,Object.assign({},searchList.defaults,r)):"date"===e||e.startsWith("datetime")?searchDateTime.init.call(this,Object.assign({},searchDateTime.defaults,r)):e.includes("num")?searchNumber.init.call(this,Object.assign({},searchNumber.defaults,r)):searchText.init.call(this,Object.assign({},searchText.defaults,r))};return a&&(a.searchInput?o=i(a.searchInput.type):a.searchList&&(o=i("list"))),o||(o=document.createElement("div"),n.ready(()=>{var e=n.column(s),e=i(e.type());o.replaceWith(e)})),o}},searchClear$1={defaults:{className:"searchClear",icon:"searchClear",text:"Clear Search"},init(e){let s=this.dt(),o=new Button(s,this).text(s.i18n("columnControl.searchClear",e.text)).icon(e.icon).className(e.className).handler(()=>{s.column(this.idx()).columnControl.searchClear().draw()}).enable(!1);return s.on("draw",()=>{var e=s.column(this.idx()),t=e.search.fixed("dtcc"),r=e.search.fixed("dtcc-list"),n=e.init().__ccSearch,e=e.init().__ccList;o.enable(!!(t||r||n||e))}),o.element()}},searchDropdown={defaults:{ajaxOnly:!0,allowSearchList:!0,className:"searchDropdown",clear:!0,columns:"",hidable:!0,options:null,orthogonal:"display",placeholder:"",search:!0,select:!0,text:"Search",title:"",titleAttr:""},extend(e){return{extend:"dropdown",icon:"search",iconActive:"searchActive",text:this.dt().i18n("columnControl.searchDropdown",e.text),content:[Object.assign(e,{extend:"search"})]}}},spacer={defaults:{className:"dtcc-spacer",text:""},init(e){var t=this.dt(),t=createElement("div",e.className,t.i18n("columnControl.spacer",e.text));return t.setAttribute("role","separator"),t}},title={defaults:{className:"dtcc-title",text:null},init(e){var t=this.dt().column(this.idx()).title(),r=null===e.text?"[title]":e.text;return createElement("div",e.className,r.replace("[title]",t))}};let contentTypes={colVis:colVis,colVisDropdown:colVisDropdown,dropdown:dropdownContent,info:info,reorder:reorder,reorderLeft:reorderLeft,reorderRight:reorderRight,rowGroup:rowGroup,rowGroupAdd:rowGroupAdd,rowGroupClear:rowGroupClear,rowGroupRemove:rowGroupRemove,order:order,orderAddAsc:orderAddAsc,orderAddDesc:orderAddDesc,orderAsc:orderAsc,orderClear:orderClear,orderDesc:orderDesc,orderRemove:orderRemove,orderStatus:orderStatus,search:search,searchClear:searchClear$1,searchDropdown:searchDropdown,searchDateTime:searchDateTime,searchList:searchList,searchNumber:searchNumber,searchText:searchText,spacer:spacer,title:title};class ColumnControl{destroyAdd(e){this._s.toDestroy.push(e)}destroyRemove(e){e=this._s.toDestroy.indexOf(e);-1!==e&&this._s.toDestroy.splice(e,1)}dt(){return this._dt}idx(){return this._s.columnIdx}idxOriginal(){var e=this.idx();return this._dt.colReorder?this._dt.colReorder.transpose(e,"toOriginal"):e}resolve(e){let t=null,r=null,n=null;if("string"==typeof e?(n=e,t=ColumnControl.content[n],r=Object.assign({},null==t?void 0:t.defaults)):Array.isArray(e)?(n="dropdown",t=ColumnControl.content[n],r=Object.assign({},null==t?void 0:t.defaults,{content:e})):e.extend&&(n=e.extend,t=ColumnControl.content[n],r=Object.assign({},null==t?void 0:t.defaults,e)),t)return t.extend?(e=t.extend.call(this,r),this.resolve(e)):{config:r,type:n,plugin:t};throw new Error("Unknown ColumnControl content type: "+n)}unique(){return this._s.unique}constructor(r,e,t){this._dom={target:null,wrapper:null},this._c={},this._s={columnIdx:null,unique:null,toDestroy:[]},this._dt=r,this._s.columnIdx=e,this._s.unique=Math.random();let n=e;Object.assign(this._c,ColumnControl.defaults,t),this._dom.target=this._target(),t.className&&addClass(this._dom.target.closest("tr"),t.className),this._c.content&&(r.on("columns-reordered",(e,t)=>{this._s.columnIdx=r.colReorder.transpose(n,"fromOriginal")}),this._dom.wrapper=document.createElement("span"),this._dom.wrapper.classList.add("dtcc"),this._dom.target.appendChild(this._dom.wrapper),this._c.content.forEach(e=>{var{plugin:e,config:t}=this.resolve(e),e=e.init.call(this,t);e&&this._dom.wrapper.appendChild(e)}),r.on("destroy",()=>{this._s.toDestroy.slice().forEach(e=>{e.destroy()}),this._dom.wrapper.remove()}))}_target(){var e,t=this._c.target,r=this._dt.column(this._s.columnIdx);let n,s="header";return"number"==typeof t?n=r.header(t):(e="tfoot"!==(t=t.split(":"))[0],t=t[1]?parseInt(t[1]):0,e?n=r.header(t):(n=r.footer(t),s="footer")),n.querySelector("div.dt-column-"+s)}}if(ColumnControl.Button=Button,ColumnControl.CheckList=CheckList,ColumnControl.SearchInput=SearchInput,ColumnControl.content=contentTypes,ColumnControl.defaults={className:"",content:null,target:0},ColumnControl.icons=icons,ColumnControl.version="2.0.0",!DataTable||!DataTable.versionCheck||!DataTable.versionCheck("3"))throw"Warning: ColumnControl requires DataTables 3 or greater";function searchClear(){let r=this;return this.iterator("column",function(e,t){r.trigger("cc-search-clear",[t])})}function assetTarget(r,n,s){if(!r[n]){let e=!0,t=0;"number"==typeof n?t=n:("tfoot"===(o=n.split(":"))[0]&&(e=!1),o[1]&&(t=parseInt(o[1])));var o=e?s.table().header():s.table().footer();if(!o.querySelectorAll("tr")[t]){var a=s.columns().count(),i=createElement("tr");i.setAttribute("data-dt-order","disable");for(let e=0;e<a;e++)i.appendChild(createElement("td"));o.appendChild(i)}r[n]=!0}}function getOptionsForTarget(t,r){var n=ColumnControl.defaults.target;let s;if(isIContentArray(r)){if(n===t)return{target:n,content:r}}else if(Array.isArray(r))for(let e=0;e<r.length;e++){var o=r[e];if(isIContentArray(o)){if(n===t)return{target:n,content:o}}else if(isIConfig(o)){if(t===(s=void 0!==o.target?o.target:n))return o}else if(t===n)return{target:n,content:r}}else if("object"==typeof r)if(isIConfig(r)){if(t===(s=void 0!==r.target?r.target:n))return r}else if(t===n)return{target:n,content:r}}function identifyTargets(t,e){function r(e){t.includes(e)||t.push(e)}return Array.isArray(e)?0===e.length?r(ColumnControl.defaults.target):e.forEach(e=>{r(("object"==typeof e&&void 0!==e.target?e:ColumnControl.defaults).target)}):"object"==typeof e&&r((void 0!==e.target?e:ColumnControl.defaults).target),t}function isIConfig(e){return"object"==typeof e&&void 0!==e.target}function isIContentArray(t){let r=!1;if(!Array.isArray(t))return!1;for(let e=0;e<t.length;e++)if(isIConfig(t[e])){r=!0;break}return!r}DataTable.ColumnControl=ColumnControl,Dom.s(document).on("i18n.dt",function(e,t){if("dt"===e.namespace){var n=new Api(t),e=n.table().header(),s=t.init.columnControl,o=ColumnControl.defaults;let r=[];var a={};e.querySelectorAll("tr").length<=1&&null===t.titleRow&&(t.titleRow=0),identifyTargets(r,s),ColumnControl.defaults.content&&identifyTargets(r,o),n.columns().every(function(e){var t=this.init().columnControl;identifyTargets(r,t)});for(let e=0;e<r.length;e++)assetTarget(a,r[e],n)}}),Dom.s(document).on("preInit.dt",function(e,t){if("dt"===e.namespace){let a=new DataTable.Api(t),i=t.init.columnControl,l=ColumnControl.defaults,c=[];identifyTargets(c,i),ColumnControl.defaults.content&&identifyTargets(c,l),a.columns().every(function(e){var t=this.init().columnControl,r=identifyTargets(c.slice(),t);for(let e=0;e<r.length;e++){var n=getOptionsForTarget(r[e],t),s=getOptionsForTarget(r[e],i),o=getOptionsForTarget(r[e],l);(o||s||n)&&new ColumnControl(a,this.index(),Object.assign({},o||{},s||{},n||{}))}})}}),DataTable.Api.registerPlural("columns().columnControl.searchClear()","column().columnControl.searchClear()",searchClear),DataTable.Api.registerPlural("columns().ccSearchClear()","column().ccSearchClear()",searchClear),DataTable.Api.registerPlural("columns().columnControl.searchList()","column().columnControl.searchList()",function(r){return this.iterator("column",function(e,t){e=e.columns[t].columnControlSearchList;e&&e(r)})}),DataTable.ext.buttons.ccSearchClear={text:e=>e.i18n("columnControl.buttons.searchClear","Clear search"),init:function(r,e,t){r.on("draw.DT",()=>{let e=!1;var t=!!r.search();t||r.columns().every(function(){(this.search.fixed("dtcc")||this.search.fixed("dtcc-list")||this.init().__ccList)&&(e=!0)}),this.enable(t||e)}),this.enable(!1)},action:function(e,t,r,n){t.search(""),t.columns().columnControl.searchClear(),t.draw()}};export default DataTable;