UNPKG

datatables.net-plugins

Version:

Various small plug-ins for DataTables including feature, ordering, search and internationalisation plug-ins.

1 lines 3.67 kB
import jQuery from"jquery";import DataTable from"datatables.net";let $=jQuery;function setState(e,t,a){e.classList.toggle(t,a);t=e.querySelector("a");t&&(a?t.setAttribute("disabled","disabled"):t.removeAttribute("disabled"))}function stylingStructure(e){e=e.table().container().classList;return e.contains("dt-bootstrap5")||e.contains("dt-bootstrap4")||e.contains("dt-bootstrap")?{wrapper:{tag:"ul",className:"dt-inputpaging pagination"},item:{tag:"li",className:"page-item",disabled:"disabled",liner:{tag:"a",className:"page-link"}},inputItem:{tag:"li",className:"page-item dt-paging-input"},input:{tag:"input",className:""}}:e.contains("dt-bulma")?{wrapper:{tag:"ul",className:"dt-inputpaging pagination-list"},item:{tag:"li",className:"",disabled:"disabled",liner:{tag:"a",className:"pagination-link"}},inputItem:{tag:"li",className:"dt-paging-input"},input:{tag:"input",className:""}}:e.contains("dt-foundation")?{wrapper:{tag:"ul",className:"dt-inputpaging pagination"},item:{tag:"li",className:"",disabled:"disabled",liner:{tag:"a",className:""}},inputItem:{tag:"li",className:"dt-paging-input"},input:{tag:"input",className:""}}:e.contains("dt-semanticUI")?{wrapper:{tag:"div",className:"dt-inputpaging ui unstackable pagination menu"},item:{tag:"a",className:"page-link item",disabled:"disabled"},inputItem:{tag:"div",className:"dt-paging-input"},input:{tag:"input",className:"ui input"}}:{wrapper:{tag:"div",className:"dt-inputpaging dt-paging"},item:{tag:"button",className:"dt-paging-button",disabled:"disabled"},inputItem:{tag:"div",className:"dt-paging-input",liner:{tag:"",className:""}},input:{tag:"input",className:""}}}function createElement(e,t,a){var i=document.createElement(e.tag);return i.className=e.className,e.liner&&e.liner.tag?(e=createElement(e.liner,t),i.appendChild(e)):t&&(i.innerHTML=t),a&&i.addEventListener("click",a),i}DataTable.feature.register("inputPaging",function(e,t){let a=new DataTable.Api(e),i=stylingStructure(a);e=Object.assign({firstLast:!0,previousNext:!0,pageOf:!0},t),t=createElement(i.wrapper);let n=createElement(i.item,a.i18n("oPaginate.sFirst","«"),e=>{e.preventDefault(),n.classList.contains(i.item.disabled)||a.page("first").draw(!1)}),s=createElement(i.item,a.i18n("oPaginate.sPrevious","‹"),e=>{e.preventDefault(),s.classList.contains(i.item.disabled)||a.page("previous").draw(!1)}),l=createElement(i.item,a.i18n("oPaginate.sNext","›"),e=>{e.preventDefault(),l.classList.contains(i.item.disabled)||a.page("next").draw(!1)}),p=createElement(i.item,a.i18n("oPaginate.sLast","»"),e=>{e.preventDefault(),p.classList.contains(i.item.disabled)||a.page("last").draw(!1)});var d=createElement(i.inputItem);let r=createElement(i.input),g=createElement({tag:"span",className:""});return r.setAttribute("type","text"),r.setAttribute("inputmode","numeric"),r.setAttribute("pattern","[0-9]*"),e.firstLast&&t.appendChild(n),e.previousNext&&t.appendChild(s),t.appendChild(d),e.previousNext&&t.appendChild(l),e.firstLast&&t.appendChild(p),d.appendChild(r),e.pageOf&&d.appendChild(g),r.addEventListener("keypress",function(e){(e.charCode<48||57<e.charCode)&&e.preventDefault()}),r.addEventListener("input",function(){r.value&&a.page(r.value-1).draw(!1),r.style.width=r.value.length+2+"ch"}),a.on("draw",()=>{var e=a.page.info(),t=(setState(n,i.item.disabled,0===e.page),setState(s,i.item.disabled,0===e.page),0===e.recordsTotal||0===e.recordsDisplay?0:e.pages-1);setState(l,i.item.disabled,e.page===t),setState(p,i.item.disabled,e.page===t),0===e.recordsTotal||0===e.recordsDisplay?(r.value="",r.disabled=!0):r.value!==e.page+1&&(r.value=e.page+1,r.disabled=!1),g.textContent=" / "+e.pages}),t});export default DataTable;