UNPKG

@luisgb2212/table-customizable

Version:

Vue3 Datatable - fully customizable & easy to use datatable library

2 lines (1 loc) 35.5 kB
(function(e,R){typeof exports=="object"&&typeof module<"u"?module.exports=R(require("vue"),require("litepicker"),require("dayjs")):typeof define=="function"&&define.amd?define(["vue","litepicker","dayjs"],R):(e=typeof globalThis<"u"?globalThis:e||self,e.TableCustomized=R(e.Vue,e.litepicker,e.dayjs))})(this,function(e,R,ye){"use strict";const j=C=>C&&typeof C=="object"&&"default"in C?C:{default:C},Q=j(R),A=j(ye),we={class:"bh-filter-menu bh-absolute bh-z-[1] bh-bg-white bh-shadow-md bh-rounded-md bh-top-full bh-right-0 bh-w-32 bh-mt-1"},_e=e.defineComponent({__name:"column-filter",props:["column","columnFilterLang"],emits:["close","filterChange"],setup(C,{emit:B}){const a=C;e.onBeforeUnmount(()=>{document.removeEventListener("click",l)}),e.onMounted(()=>{document.addEventListener("click",l)});const p=B,l=()=>{p("close")},f=u=>{a.column.condition=u,u===""&&(a.column.value=""),p("filterChange",a.column)};return(u,c)=>{var E,d,r,b,m,y,N,T,M,x,K,z,H,v,J,V,W,L,S;return e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("div",{class:"bh-text-[13px] bh-font-normal bh-rounded bh-overflow-hidden",onClick:e.withModifiers(l,["stop"])},[e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition===""}),onClick:c[0]||(c[0]=w=>f(""))},e.toDisplayString((E=a.columnFilterLang&&a.columnFilterLang.no_filter)!=null?E:"No filter"),3),a.column.type==="string"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="contain"}),onClick:c[1]||(c[1]=w=>f("contain"))},e.toDisplayString((d=a.columnFilterLang&&a.columnFilterLang.contain)!=null?d:"Contain"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="not_contain"}),onClick:c[2]||(c[2]=w=>f("not_contain"))},e.toDisplayString((r=a.columnFilterLang&&a.columnFilterLang.not_contain)!=null?r:"Not contain"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="equal"}),onClick:c[3]||(c[3]=w=>f("equal"))},e.toDisplayString((b=a.columnFilterLang&&a.columnFilterLang.equal)!=null?b:"Equal"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="not_equal"}),onClick:c[4]||(c[4]=w=>f("not_equal"))},e.toDisplayString((m=a.columnFilterLang&&a.columnFilterLang.not_equal)!=null?m:"Not equal"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="start_with"}),onClick:c[5]||(c[5]=w=>f("start_with"))},e.toDisplayString((y=a.columnFilterLang&&a.columnFilterLang.start_with)!=null?y:"Starts with"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="end_with"}),onClick:c[6]||(c[6]=w=>f("end_with"))},e.toDisplayString((N=a.columnFilterLang&&a.columnFilterLang.end_with)!=null?N:"Ends with"),3)],64)):a.column.type==="number"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="equal"}),onClick:c[7]||(c[7]=w=>f("equal"))},e.toDisplayString((T=a.columnFilterLang&&a.columnFilterLang.equal)!=null?T:"Equal"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="not_equal"}),onClick:c[8]||(c[8]=w=>f("not_equal"))},e.toDisplayString((M=a.columnFilterLang&&a.columnFilterLang.not_equal)!=null?M:"Not equal"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="greater_than"}),onClick:c[9]||(c[9]=w=>f("greater_than"))},e.toDisplayString((x=a.columnFilterLang&&a.columnFilterLang.greater_than)!=null?x:"Greater than"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="greater_than_equal"}),onClick:c[10]||(c[10]=w=>f("greater_than_equal"))},e.toDisplayString((K=a.columnFilterLang&&a.columnFilterLang.greater_than_equal)!=null?K:"Greater than or equal"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="less_than"}),onClick:c[11]||(c[11]=w=>f("less_than"))},e.toDisplayString((z=a.columnFilterLang&&a.columnFilterLang.less_than)!=null?z:"Less than"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="less_than_equal"}),onClick:c[12]||(c[12]=w=>f("less_than_equal"))},e.toDisplayString((H=a.columnFilterLang&&a.columnFilterLang.less_than_equal)!=null?H:"Less than or equal"),3)],64)):a.column.type==="date"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="equal"}),onClick:c[13]||(c[13]=w=>f("equal"))},e.toDisplayString((v=a.columnFilterLang&&a.columnFilterLang.equal)!=null?v:"Equal"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="not_equal"}),onClick:c[14]||(c[14]=w=>f("not_equal"))},e.toDisplayString((J=a.columnFilterLang&&a.columnFilterLang.not_equal)!=null?J:"Not equal"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="greater_than"}),onClick:c[15]||(c[15]=w=>f("greater_than"))},e.toDisplayString((V=a.columnFilterLang&&a.columnFilterLang.greater_than)!=null?V:"Greater than"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="less_than"}),onClick:c[16]||(c[16]=w=>f("less_than"))},e.toDisplayString((W=a.columnFilterLang&&a.columnFilterLang.less_than)!=null?W:"Less than"),3)],64)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="is_null"}),onClick:c[17]||(c[17]=w=>f("is_null"))},e.toDisplayString((L=a.columnFilterLang&&a.columnFilterLang.is_null)!=null?L:"Is null"),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:a.column.condition==="is_not_null"}),onClick:c[18]||(c[18]=w=>f("is_not_null"))},e.toDisplayString((S=a.columnFilterLang&&a.columnFilterLang.is_not_null)!=null?S:"Not null"),3)])])}}}),G=(C,B)=>{const a=C.__vccOpts||C;for(const[p,l]of B)a[p]=l;return a},Be={},Ee={version:"1.1",viewBox:"0 0 17 12",xmlns:"http://www.w3.org/2000/svg"};function Le(C,B){return e.openBlock(),e.createElementBlock("svg",Ee,[...B[0]||(B[0]=[e.createElementVNode("g",{fill:"none","fill-rule":"evenodd"},[e.createElementVNode("g",{transform:"translate(-9 -11)",fill:"currentColor","fill-rule":"nonzero"},[e.createElementVNode("path",{d:"m25.576 11.414c0.56558 0.55188 0.56558 1.4439 0 1.9961l-9.404 9.176c-0.28213 0.27529-0.65247 0.41385-1.0228 0.41385-0.37034 0-0.74068-0.13855-1.0228-0.41385l-4.7019-4.588c-0.56584-0.55188-0.56584-1.4442 0-1.9961 0.56558-0.55214 1.4798-0.55214 2.0456 0l3.679 3.5899 8.3812-8.1779c0.56558-0.55214 1.4798-0.55214 2.0456 0z"})])],-1)])])}const Z=G(Be,[["render",Le]]),Ne={},Ve={viewBox:"0 0 24 24",width:"24",height:"24",stroke:"currentColor","stroke-width":"3",fill:"none","stroke-linecap":"round","stroke-linejoin":"round",class:"css-i6dzq1"};function Fe(C,B){return e.openBlock(),e.createElementBlock("svg",Ve,[...B[0]||(B[0]=[e.createElementVNode("line",{x1:"5",y1:"12",x2:"19",y2:"12"},null,-1)])])}const Se=G(Ne,[["render",Fe]]),Me={},xe={viewBox:"0 0 24 24",width:"24",height:"24",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round",class:"css-i6dzq1"};function ze(C,B){return e.openBlock(),e.createElementBlock("svg",xe,[...B[0]||(B[0]=[e.createElementVNode("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"},null,-1)])])}const De=G(Me,[["render",ze]]);var $e=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ve={exports:{}};(function(C,B){(function(a,p){C.exports=p(A.default)})($e,function(a){function p(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var l=p(a),f={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_mi\xE9rcoles_jueves_viernes_s\xE1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xE9._jue._vie._s\xE1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xE1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xEDa",dd:"%d d\xEDas",M:"un mes",MM:"%d meses",y:"un a\xF1o",yy:"%d a\xF1os"},ordinal:function(u){return u+"\xBA"}};return l.default.locale(f,null,!0),f})})(ve);const qe={key:"hdrrow"},Ae={class:"bh-checkbox"},Te=["onClick"],Ye={width:"16",height:"16",viewBox:"0 0 14 14",fill:"none"},Re={key:0,class:"bh-filter bh-relative"},He=["onUpdate:modelValue"],Pe=["onUpdate:modelValue"],Ue=["id","onUpdate:modelValue"],Oe=["id","onUpdate:modelValue"],Ie=["onUpdate:modelValue"],Ge=["onUpdate:modelValue"],Ke=["value"],Je=["onClick"],ee=e.defineComponent({__name:"column-header",props:["all","currentSortColumn","currentSortDirection","isOpenFilter","isFooter","checkAll","columnFilterLang"],emits:["selectAll","sortChange","filterChange","toggleFilterMenu"],setup(C,{emit:B}){A.default.locale("es");const a=e.ref(null),p=C,l=B,f=()=>{a.value&&(a.value.indeterminate=p.checkAll!==0?!p.checkAll:!1,a.value.checked=p.checkAll)};e.watch(()=>p.checkAll,f);const u=E=>{e.nextTick(()=>{const d=document.getElementById(E.field);d&&new Q.default({element:d,singleMode:!0,lang:"es-MX",tooltipNumber:r=>r-1,setup:r=>{r.on("selected",(b,m)=>{let y=A.default(b.dateInstance).format("YYYY-MM-DD");y+=m!=null?" - "+A.default(m.dateInstance).format("YYYY-MM-DD"):"",E.value=y,l("filterChange")}),r.on("clear:selection",()=>{E.value=null,l("filterChange")})},resetButton:()=>{let r=document.createElement("button");return r.innerText="Limpiar",r.addEventListener("click",b=>{b.preventDefault()}),r}})})},c=E=>{e.nextTick(()=>{const d=document.getElementById(E.field);d&&new Q.default({element:d,singleMode:!1,lang:"es-MX",tooltipNumber:r=>r-1,setup:r=>{r.on("selected",(b,m)=>{let y=A.default(b.dateInstance).format("YYYY-MM-DD");y+=m!=null?" - "+A.default(m.dateInstance).format("YYYY-MM-DD"):"",E.value=y,l("filterChange")}),r.on("clear:selection",()=>{E.value=null,l("filterChange")})},resetButton:()=>{let r=document.createElement("button");return r.innerText="Limpiar",r.addEventListener("click",b=>{b.preventDefault()}),r}})})};return e.onMounted(()=>{p.all.columns.forEach(E=>{E.type==="date"&&typeof E.range=="boolean"&&E.range==!0?c(E):E.type==="date"&&u(E)})}),(E,d)=>(e.openBlock(),e.createElementBlock("tr",qe,[p.all.hasCheckbox?(e.openBlock(),e.createElementBlock("th",{key:"chkall",class:e.normalizeClass(["bh-w-px",{"bh-sticky bh-bg-blue-light bh-z-[1]":p.all.stickyHeader||p.all.stickyFirstColumn,"bh-top-0":p.all.stickyHeader,"bh-left-0":p.all.stickyFirstColumn}])},[e.createElementVNode("div",Ae,[e.createElementVNode("input",{ref_key:"selectedAll",ref:a,type:"checkbox",onClick:d[0]||(d[0]=e.withModifiers(r=>l("selectAll",r.target.checked),["stop"]))},null,512),e.createElementVNode("div",null,[e.createVNode(Z,{class:"check"}),e.createVNode(Se,{class:"intermediate"})])])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.all.columns,(r,b)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[r.hide?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("th",{key:r.field,class:e.normalizeClass(["bh-select-none bh-z-[1]",[p.all.sortable&&r.sort?"bh-cursor-pointer":"",b===0&&p.all.stickyFirstColumn?"bh-sticky bh-left-0 bh-bg-blue-light":"",p.all.hasCheckbox&&b===0&&p.all.stickyFirstColumn?"bh-left-[52px]":""]]),style:e.normalizeStyle({width:r.width,"min-width":r.minWidth,"max-width":r.maxWidth})},[e.createElementVNode("div",{class:e.normalizeClass(["bh-flex bh-items-center",[r.headerClass?r.headerClass:""]]),onClick:m=>p.all.sortable&&r.sort&&l("sortChange",r.field)},[e.createTextVNode(e.toDisplayString(r.title)+" ",1),p.all.sortable&&r.sort?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["bh-ml-3 bh-sort bh-flex bh-items-center",[p.currentSortColumn,p.currentSortDirection]])},[(e.openBlock(),e.createElementBlock("svg",Ye,[e.createElementVNode("polygon",{points:"3.11,6.25 10.89,6.25 7,1.75 ",fill:"currentColor",class:e.normalizeClass(["bh-text-black/20",[C.currentSortColumn===r.field&&C.currentSortDirection==="asc"?"!bh-text-primary":""]])},null,2),e.createElementVNode("polygon",{points:"7,12.25 10.89,7.75 3.11,7.75 ",fill:"currentColor",class:e.normalizeClass(["bh-text-black/20",[C.currentSortColumn===r.field&&C.currentSortDirection==="desc"?"!bh-text-primary":""]])},null,2)]))],2)):e.createCommentVNode("",!0)],10,Te),p.all.columnFilter&&!p.isFooter?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[r.filter?(e.openBlock(),e.createElementBlock("div",Re,[r.type==="string"&&!r.options?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":m=>r.value=m,type:"text",class:"bh-form-control",autocomplete:"off",onKeyup:d[1]||(d[1]=m=>l("filterChange"))},null,40,He)),[[e.vModelText,r.value,void 0,{trim:!0}]]):e.createCommentVNode("",!0),r.type==="number"?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":m=>r.value=m,type:"number",class:"bh-form-control",autocomplete:"off",onKeyup:d[2]||(d[2]=m=>l("filterChange"))},null,40,Pe)),[[e.vModelText,r.value,void 0,{number:!0,trim:!0}]]):e.createCommentVNode("",!0),r.type==="date"&&!r.range?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:2,ref_for:!0,ref:r.field,id:r.field,"onUpdate:modelValue":m=>r.value=m,type:"text",autocomplete:"off",placeholder:"Fecha",class:"bh-form-control"},null,8,Ue)),[[e.vModelText,r.value]]):e.createCommentVNode("",!0),r.type==="date"&&typeof r.range=="boolean"&&r.range==!0?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:3,ref_for:!0,ref:r.field,id:r.field,"onUpdate:modelValue":m=>r.value=m,type:"text",class:"bh-form-control",placeholder:"Selecciona rango de fechas",autocomplete:"off"},null,8,Oe)),[[e.vModelText,r.value]]):e.createCommentVNode("",!0),r.type==="bool"?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:4,"onUpdate:modelValue":m=>r.value=m,class:"bh-form-control",onChange:d[3]||(d[3]=m=>l("filterChange"))},[...d[7]||(d[7]=[e.createElementVNode("option",{value:void 0},"All",-1),e.createElementVNode("option",{value:!0},"True",-1),e.createElementVNode("option",{value:!1},"False",-1)])],40,Ie)),[[e.vModelSelect,r.value]]):e.createCommentVNode("",!0),r.type==="string"&&r.options?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:5,class:"bh-form-control","onUpdate:modelValue":m=>r.value=m,onChange:d[4]||(d[4]=m=>l("filterChange"))},[d[8]||(d[8]=e.createElementVNode("option",{value:void 0},"Todos",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options,m=>(e.openBlock(),e.createElementBlock("option",{key:"opt"+m,value:m},e.toDisplayString(m),9,Ke))),128))],40,Ge)),[[e.vModelSelect,r.value]]):e.createCommentVNode("",!0),r.type!="date"&&r.type!="bool"&&!r.options?(e.openBlock(),e.createElementBlock("button",{key:6,type:"button",onClick:e.withModifiers(m=>l("toggleFilterMenu",r),["stop"])},[e.createVNode(De,{class:"bh-w-4"})],8,Je)):e.createCommentVNode("",!0),e.withDirectives(e.createVNode(_e,{column:r,type:r.type,columnFilterLang:p.columnFilterLang,onClose:d[5]||(d[5]=m=>l("toggleFilterMenu",null)),onFilterChange:d[6]||(d[6]=m=>l("filterChange"))},null,8,["column","type","columnFilterLang"]),[[e.vShow,p.isOpenFilter===r.field]])])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],6))],64))),256))]))}}),We={},Xe={width:"84",height:"84",viewBox:"0 0 24 24",class:"bh-loader bh-text-primary"};function je(C,B){return e.openBlock(),e.createElementBlock("svg",Xe,[...B[0]||(B[0]=[e.createStaticVNode('<circle cx="18" cy="12" r="0" fill="currentColor"><animate attributeName="r" begin=".67" calcMode="spline" dur="1.5s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" repeatCount="indefinite" values="0;2;0;0"></animate></circle><circle cx="12" cy="12" r="0" fill="currentColor"><animate attributeName="r" begin=".33" calcMode="spline" dur="1.5s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" repeatCount="indefinite" values="0;2;0;0"></animate></circle><circle cx="6" cy="12" r="0" fill="currentColor"><animate attributeName="r" begin="0" calcMode="spline" dur="1.5s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" repeatCount="indefinite" values="0;2;0;0"></animate></circle>',3)])])}const Qe=G(We,[["render",je]]),Ze={class:"bh-datatable bh-antialiased bh-relative bh-text-black bh-text-sm bh-font-normal"},et=["onClick"],tt={class:"bh-checkbox"},lt=["value"],nt=["innerHTML"],ot={key:1},at=["colspan"],rt=["colspan"],it={key:0,class:"bh-absolute bh-inset-0 bh-bg-blue-light/50 bh-grid bh-place-content-center"},st={class:"bh-flex bh-items-center bh-flex-wrap bh-flex-col sm:bh-flex-row bh-gap-4"},ct={class:"bh-pagination-info bh-flex bh-items-center"},ut={class:"bh-mr-2"},dt=["value"],mt={class:"bh-pagination-number sm:bh-ml-auto bh-inline-flex bh-items-center bh-space-x-1"},ft=["innerHTML"],pt={key:1,"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 16 16"},ht=["innerHTML"],gt={key:1,"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 16 16"},kt=["onClick"],Ct=["innerHTML"],bt={key:1,"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 16 16"},yt=["innerHTML"],wt={key:1,"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 16 16"};return e.defineComponent({__name:"custom-table",props:{loading:{type:Boolean,default:!1},isServerMode:{type:Boolean,default:!1},skin:{default:"bh-table-striped bh-table-hover"},totalRows:{default:0},rows:{default:()=>[]},columns:{default:()=>[]},hasCheckbox:{type:Boolean,default:!1},search:{default:""},columnChooser:{type:Boolean,default:!1},page:{default:1},pageSize:{default:10},pageSizeOptions:{default:()=>[10,20,30,50,100]},showPageSize:{type:Boolean,default:!0},rowClass:{default:[]},cellClass:{default:[]},sortable:{type:Boolean,default:!1},sortColumn:{default:"id"},sortDirection:{default:"desc"},columnFilter:{type:Boolean,default:!1},columnFilterLang:{default:null},pagination:{type:Boolean,default:!0},showNumbers:{type:Boolean,default:!0},showNumbersCount:{default:5},showFirstPage:{type:Boolean,default:!0},showLastPage:{type:Boolean,default:!0},firstArrow:{default:""},lastArrow:{default:""},nextArrow:{default:""},previousArrow:{default:""},paginationInfo:{default:"Showing {0} to {1} of {2} entries"},noDataContent:{default:"No data available"},stickyHeader:{type:Boolean,default:!1},height:{default:"500px"},stickyFirstColumn:{type:Boolean,default:!1},cloneHeaderInFooter:{type:Boolean,default:!1},selectRowOnClick:{type:Boolean,default:!1},fieldVerify:{},virifyClass:{}},emits:["change","sortChange","searchChange","pageChange","pageSizeChange","rowSelect","filterChange","rowClick","rowDBClick"],setup(C,{expose:B,emit:a}){var ce,ue,de,me;const p=e.useSlots(),l=C;for(const t of l.columns||[]){const o=((ce=t.type)==null?void 0:ce.toLowerCase())||"string";t.type=o,t.isUnique=t.isUnique!==void 0?t.isUnique:!1,t.hide=t.hide!==void 0?t.hide:!1,t.filter=t.filter!==void 0?t.filter:!0,t.search=t.search!==void 0?t.search:!0,t.sort=t.sort!==void 0?t.sort:!0,t.html=t.html!==void 0?t.html:!1,t.condition=!o||o==="string"?"contain":"equal"}const f=e.ref([]),u=e.ref(l.page),c=e.ref(l.pagination?l.pageSize:(ue=l.rows)==null?void 0:ue.length),E=l.pageSize,d=e.ref(l.sortColumn),r=(de=l.sortColumn)!=null?de:"id",b=e.ref(l.sortDirection),m=(me=l.sortDirection)!=null?me:"desc",y=e.ref(l.totalRows),N=e.ref([]),T=e.ref(null),M=e.ref(l.loading),x=e.ref(l.search),K=JSON.parse(JSON.stringify(l.columns)),z=e.ref(null),H=e.ref(null);let v=e.ref(0);const J=e.ref(230);e.onMounted(()=>{q()});const V=a;B({reset(){zt()},getSelectedRows(){return Dt()},getColumnFilters(){return $t()},clearSelectedRows(){return vt()},selectRow(t){ie(t)},unselectRow(t){se(t)},isRowSelected(t){return X(t)},getFilteredRows(){return le()}});const W=(t,...o)=>t.replace(/{(\d+)}/g,(s,g)=>typeof o[g]<"u"?o[g]:s),L=e.computed(()=>{const t=l.columns.find(o=>o.isUnique);return(t==null?void 0:t.field)||null}),S=e.computed(()=>{const t=c.value<1?1:Math.ceil(y.value/c.value);return Math.max(t||0,1)}),w=e.computed(()=>(u.value-1)*c.value+1),te=e.computed(()=>{const t=u.value*c.value;return y.value>=t?t:y.value}),_t=e.computed(()=>{let t,o;return typeof l.showNumbersCount<"u"&&l.showNumbersCount<S.value?(t=Math.max(u.value-Math.floor(l.showNumbersCount/2),1),o=t+l.showNumbersCount-1,o>S.value&&(o=S.value,t=o-l.showNumbersCount+1)):(t=1,o=S.value),Array.from(Array(o+1-t).keys()).map(_=>t+_)}),le=()=>{var _,U,fe,pe;let t=l.rows||[];if(!l.isServerMode){if((_=l.columns)==null||_.forEach(n=>{n.filter&&(n.value!==void 0&&n.value!==null&&n.value!==""||n.condition==="is_null"||n.condition=="is_not_null")&&(n.type==="string"?(n.value&&!n.condition&&(n.condition="contain"),n.condition==="contain"?t=t.filter(i=>{var k;return F(n.filterColumns||[],i,n.value.toLowerCase())||((k=h(i,n.field))==null?void 0:k.toString().toLowerCase().includes(n.value.toLowerCase()))}):n.condition==="not_contain"?t=t.filter(i=>{var k;return!F(n.filterColumns||[],i,n.value.toLowerCase())&&!((k=h(i,n.field))!=null&&k.toString().toLowerCase().includes(n.value.toLowerCase()))}):n.condition==="equal"?t=t.filter(i=>{var k;return F(n.filterColumns||[],i,n.value.toLowerCase())||((k=h(i,n.field))==null?void 0:k.toString().toLowerCase())===n.value.toLowerCase()}):n.condition==="not_equal"?t=t.filter(i=>{var k;return!F(n.filterColumns||[],i,n.value.toLowerCase())&&((k=h(i,n.field))==null?void 0:k.toString().toLowerCase())!==n.value.toLowerCase()}):n.condition=="start_with"?t=t.filter(i=>{var k;return F(n.filterColumns||[],i,n.value.toLowerCase())||((k=h(i,n.field))==null?void 0:k.toString().toLowerCase().indexOf(n.value.toLowerCase()))===0}):n.condition=="end_with"&&(t=t.filter(i=>{var k;return F(n.filterColumns||[],i,n.value.toLowerCase())||((k=h(i,n.field))==null?void 0:k.toString().toLowerCase().substr(n.value.length*-1))===n.value.toLowerCase()}))):n.type==="number"?(n.value&&!n.condition&&(n.condition="equal"),n.condition==="equal"?t=t.filter(i=>F(n.filterColumns||[],i,n.value.toLowerCase())||h(i,n.field)&&parseFloat(h(i,n.field))===parseFloat(n.value)):n.condition==="not_equal"?t=t.filter(i=>F(n.filterColumns||[],i,n.value.toLowerCase())||h(i,n.field)&&parseFloat(h(i,n.field))!==parseFloat(n.value)):n.condition==="greater_than"?t=t.filter(i=>F(n.filterColumns||[],i,n.value.toLowerCase())||h(i,n.field)&&parseFloat(h(i,n.field))>parseFloat(n.value)):n.condition==="greater_than_equal"?t=t.filter(i=>F(n.filterColumns||[],i,n.value.toLowerCase())||h(i,n.field)&&parseFloat(h(i,n.field))>=parseFloat(n.value)):n.condition==="less_than"?t=t.filter(i=>F(n.filterColumns||[],i,n.value.toLowerCase())||h(i,n.field)&&parseFloat(h(i,n.field))<parseFloat(n.value)):n.condition==="less_than_equal"&&(t=t.filter(i=>F(n.filterColumns||[],i,n.value.toLowerCase())||h(i,n.field)&&parseFloat(h(i,n.field))<=parseFloat(n.value)))):n.type==="date"&&!n.range?t=t.filter(i=>h(i,n.field)&&P(h(i,n.field))===n.value):n.type==="date"&&n.range?t=t.filter(i=>{const[k,O]=n.value.split(" - ");return h(i,"date_start")&&h(i,"date_end")&&P(h(i,"date_start"))>=P(k)&&P(h(i,"date_end"))<=P(O)}):n.type==="bool"&&(t=t.filter(i=>h(i,n.field)===n.value)),n.condition==="is_null"?(t=t.filter(i=>h(i,n.field)==null||h(i,n.field)==""),n.value=""):n.condition==="is_not_null"&&(n.value="",t=t.filter(i=>h(i,n.field))))}),x.value&&(t==null?void 0:t.length)){let n=[];const i=(l.columns||[]).filter(k=>k.search&&!k.hide).map(k=>k.field);for(var o=0;o<(t==null?void 0:t.length);o++)for(var s=0;s<i.length;s++)if((U=h(t[o],i[s]))!=null&&U.toString().toLowerCase().includes(x.value.toLowerCase())){n.push(t[o]);break}t=n}var g=new Intl.Collator("en",{numeric:((fe=l.columns.find(n=>n.field==d.value))==null?void 0:fe.type)===void 0||((pe=l.columns.find(n=>n.field==d.value))==null?void 0:pe.type)==="number",sensitivity:"base"});const he=b.value==="desc"?-1:1;t.sort((n,i)=>{var ge,ke,Ce,be;const k=(ge=d.value)==null?void 0:ge.split(".").reduce(($,I)=>$==null?void 0:$[I],n),O=(ke=d.value)==null?void 0:ke.split(".").reduce(($,I)=>$==null?void 0:$[I],i);if(d.value==="code"){const $=(Ce=k.split("-")[1])!=null?Ce:k.split("-")[0],I=(be=O.split("-")[1])!=null?be:O.split("-")[0];return(parseInt($)-parseInt(I))*he}return g.compare(k,O)*he})}return t},F=(t,o,s)=>t.some(g=>{var _;return(_=h(o,g))==null?void 0:_.toString().toLowerCase().includes(s)}),q=()=>{let t=[],o=le();l.isServerMode?(y.value=l.totalRows||0,t=o):(y.value=(o==null?void 0:o.length)||0,t=o.slice(w.value-1,te.value)),f.value=t||[]};e.watch(()=>l.loading,()=>{M.value=l.loading});const ne=t=>{t?z.value===t.field?z.value=null:z.value=t.field:z.value=null},Bt=()=>{if(u.value==1)return!1;u.value--},Et=t=>{u.value=t},Lt=()=>{if(u.value>=S.value)return!1;u.value++},Nt=()=>{D(!1),l.isServerMode?Y("page"):(q(),V("pageChange",u.value))};e.watch(()=>u.value,Nt);const Vt=()=>{l.isServerMode||(u.value=1),D(!1),q()};e.watch(()=>l.rows,Vt);const Ft=()=>{D(!1),l.isServerMode?u.value===1?Y("pagesize",!0):u.value=1:(u.value=1,q(),V("pageSizeChange",c.value))};e.watch(()=>c.value,Ft);const oe=t=>{let o="asc";t==d.value&&b.value==="asc"&&(o="desc");let s=(u.value-1)*c.value,g=c.value;d.value=t,b.value=o,D(!1),q(),l.isServerMode?Y("sort"):V("sortChange",{offset:s,limit:g,field:t,direction:o})},ae=t=>{T.value=t.length&&f.value.length&&t.length===f.value.length;const o=f.value.filter((s,g)=>N.value.includes(L.value?s[L.value]:g));V("rowSelect",o)};e.watch(()=>N.value,ae);const D=t=>{t?N.value=f.value.map((o,s)=>L.value?o[L.value]:s):N.value=[]},re=()=>{D(!1),l.isServerMode?u.value===1?Y("filter",!0):u.value=1:(u.value=1,q(),V("filterChange",l.columns))},St=()=>{D(!1),l.isServerMode?u.value===1?Y("search",!0):u.value=1:(u.value=1,q(),V("searchChange",x.value))};e.watch(()=>l.search,()=>{x.value=l.search,St()});const h=(t,o)=>o==null?void 0:o.split(".").reduce((s,g)=>s==null?void 0:s[g],t),P=t=>{try{if(!t)return"";const o=new Date(t),s=o.getDate(),g=o.getMonth()+1;return o.getFullYear()+"-"+(g>9?g:"0"+g)+"-"+(s>9?s:"0"+s)}catch{}return""},Mt=(t,o)=>{v.value++,v.value===1?H.value=setTimeout(()=>{v.value=0,l.selectRowOnClick&&(X(o)?se(o):ie(o),ae(N.value)),V("rowClick",t)},J.value):v.value===2&&(clearTimeout(H.value),v.value=0,V("rowDBClick",t))},Y=(t,o=!1)=>{if(l.isServerMode){xt();const s={current_page:o?1:u.value,pagesize:c.value,offset:(u.value-1)*c.value,sort_column:d.value,sort_direction:b.value,search:x.value,column_filters:l.columns,change_type:t};V("change",s)}},xt=()=>{for(let t=0;t<l.columns.length;t++){let o=l.columns[t];o.filter&&(o.value!==void 0&&o.value!==null&&o.value!==""||o.condition==="is_null"||o.condition==="is_not_null")&&(o.type==="string"&&o.value&&!o.condition&&(o.condition="contain"),o.type==="number"&&o.value&&!o.condition&&(o.condition="equal"),o.type==="date"&&o.value&&!o.condition&&(o.condition="equal"))}},zt=()=>{D(!1);for(let t=0;t<l.columns.length;t++)l.columns[t]=K[t];x.value="",c.value=E,d.value=r,b.value=m,l.isServerMode?u.value===1?Y("reset",!0):u.value=1:(u.value=1,q())},Dt=()=>f.value.filter((o,s)=>N.value.includes(L.value?o[L.value]:s)),$t=()=>l.columns,vt=()=>{N.value=[]},ie=t=>{if(!X(t)){const o=f.value.find((s,g)=>g===t);N.value.push(L.value?o[L.value]:t)}},se=t=>{if(X(t)){const o=f.value.find((s,g)=>g===t);N.value=N.value.filter(s=>s!==(L.value?o[L.value]:t))}},X=t=>{const o=f.value.find((s,g)=>g===t);return o?N.value.includes(L.value?o[L.value]:t):!1},qt=t=>{var o;return l.fieldVerify&&t[l.fieldVerify]?(o=l.virifyClass)!=null?o:"text-danger":""};return(t,o)=>(e.openBlock(),e.createElementBlock("div",Ze,[e.createElementVNode("div",{class:e.normalizeClass(["bh-table-responsive",{"bh-min-h-[300px]":M.value}]),style:e.normalizeStyle({height:l.stickyHeader&&l.height})},[e.createElementVNode("table",{class:e.normalizeClass([l.skin])},[e.createElementVNode("thead",{class:e.normalizeClass({"bh-sticky bh-top-0 bh-z-10":l.stickyHeader})},[e.createVNode(ee,{all:l,currentSortColumn:d.value,currentSortDirection:b.value,isOpenFilter:z.value,checkAll:T.value,columnFilterLang:l.columnFilterLang,onSelectAll:D,onSortChange:oe,onFilterChange:re,onToggleFilterMenu:ne},null,8,["currentSortColumn","currentSortDirection","isOpenFilter","checkAll","columnFilterLang"])],2),e.createElementVNode("tbody",null,[y.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(f.value,(s,g)=>(e.openBlock(),e.createElementBlock("tr",{key:s[L.value]?s[L.value]:g,class:e.normalizeClass([typeof l.rowClass=="function"?C.rowClass(s):l.rowClass,l.selectRowOnClick?"bh-cursor-pointer":"",qt(s)]),onClick:_=>Mt(s,g)},[l.hasCheckbox?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass({"bh-sticky bh-left-0 bh-bg-blue-light":l.stickyFirstColumn})},[e.createElementVNode("div",tt,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":o[0]||(o[0]=_=>N.value=_),type:"checkbox",value:s[L.value]?s[L.value]:g,onClick:o[1]||(o[1]=e.withModifiers(()=>{},["stop"]))},null,8,lt),[[e.vModelCheckbox,N.value]]),e.createElementVNode("div",null,[e.createVNode(Z,{class:"check"})])])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.columns,(_,U)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[_.hide?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:_.field,class:e.normalizeClass([typeof l.cellClass=="function"?C.cellClass(s):l.cellClass,U===0&&l.stickyFirstColumn?"bh-sticky bh-left-0 bh-bg-blue-light":"",l.hasCheckbox&&U===0&&l.stickyFirstColumn?"bh-left-[52px]":"",_.cellClass?_.cellClass:""])},[e.unref(p)[_.field]?e.renderSlot(t.$slots,_.field,{key:0,value:s}):_.cellRenderer?(e.openBlock(),e.createElementBlock("div",{key:1,innerHTML:_.cellRenderer(s)},null,8,nt)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(h(s,_.field)),1)],64))],2))],64))),256))],10,et))),128)):e.createCommentVNode("",!0),!y.value&&!M.value?(e.openBlock(),e.createElementBlock("tr",ot,[e.createElementVNode("td",{colspan:l.columns.length+1},e.toDisplayString(l.noDataContent),9,at)])):e.createCommentVNode("",!0),!y.value&&M.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(l.pageSize,s=>(e.openBlock(),e.createElementBlock("tr",{key:s,class:"!bh-bg-white bh-h-11 !bh-border-transparent"},[e.createElementVNode("td",{colspan:l.columns.length+1,class:"!bh-p-0 !bh-border-transparent"},[...o[5]||(o[5]=[e.createElementVNode("div",{class:"bh-skeleton-box bh-h-8"},null,-1)])],8,rt)]))),128)):e.createCommentVNode("",!0)]),l.cloneHeaderInFooter?(e.openBlock(),e.createElementBlock("tfoot",{key:0,class:e.normalizeClass({"bh-sticky bh-bottom-0":l.stickyHeader})},[e.createVNode(ee,{all:l,currentSortColumn:d.value,currentSortDirection:b.value,isOpenFilter:z.value,isFooter:!0,checkAll:T.value,onSelectAll:D,onSortChange:oe,onFilterChange:re,onToggleFilterMenu:ne},null,8,["currentSortColumn","currentSortDirection","isOpenFilter","checkAll"])],2)):e.createCommentVNode("",!0)],2),y.value&&M.value?(e.openBlock(),e.createElementBlock("div",it,[e.createVNode(Qe)])):e.createCommentVNode("",!0)],6),l.pagination&&y.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["bh-pagination bh-py-5",{"bh-pointer-events-none":M.value}])},[e.createElementVNode("div",st,[e.createElementVNode("div",ct,[e.createElementVNode("span",ut,e.toDisplayString(W(l.paginationInfo,y.value?w.value:0,te.value,y.value)),1),l.showPageSize?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:0,"onUpdate:modelValue":o[2]||(o[2]=s=>c.value=s),class:"bh-pagesize"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.pageSizeOptions,s=>(e.openBlock(),e.createElementBlock("option",{value:s,key:s},e.toDisplayString(s),9,dt))),128))],512)),[[e.vModelSelect,c.value]]):e.createCommentVNode("",!0)]),e.createElementVNode("div",mt,[l.showFirstPage?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(["bh-page-item first-page",{disabled:u.value<=1}]),onClick:o[3]||(o[3]=s=>u.value=1)},[l.firstArrow?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:l.firstArrow},null,8,ft)):(e.openBlock(),e.createElementBlock("svg",pt,[...o[6]||(o[6]=[e.createElementVNode("g",{fill:"currentColor","fill-rule":"evenodd"},[e.createElementVNode("path",{d:"M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"}),e.createElementVNode("path",{d:"M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"})],-1)])]))],2)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["bh-page-item previous-page",{disabled:u.value<=1}]),onClick:Bt},[l.previousArrow?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:l.previousArrow},null,8,ht)):(e.openBlock(),e.createElementBlock("svg",gt,[...o[7]||(o[7]=[e.createElementVNode("path",{fill:"currentColor","fill-rule":"evenodd",d:"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"},null,-1)])]))],2),l.showNumbers?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(_t.value,s=>(e.openBlock(),e.createElementBlock("button",{key:s,type:"button",class:e.normalizeClass(["bh-page-item",{disabled:u.value===s,"bh-active":s===u.value}]),onClick:g=>Et(s)},e.toDisplayString(s),11,kt))),128)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["bh-page-item next-page",{disabled:u.value>=S.value}]),onClick:Lt},[l.nextArrow?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:l.nextArrow},null,8,Ct)):(e.openBlock(),e.createElementBlock("svg",bt,[...o[8]||(o[8]=[e.createElementVNode("path",{fill:"currentColor","fill-rule":"evenodd",d:"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8L4.646 2.354a.5.5 0 0 1 0-.708z"},null,-1)])]))],2),l.showLastPage?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:e.normalizeClass(["bh-page-item last-page",{disabled:u.value>=S.value}]),onClick:o[4]||(o[4]=s=>u.value=S.value)},[l.lastArrow?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:l.lastArrow},null,8,yt)):(e.openBlock(),e.createElementBlock("svg",wt,[...o[9]||(o[9]=[e.createElementVNode("g",{fill:"currentColor","fill-rule":"evenodd"},[e.createElementVNode("path",{d:"M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8L3.646 2.354a.5.5 0 0 1 0-.708z"}),e.createElementVNode("path",{d:"M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8L7.646 2.354a.5.5 0 0 1 0-.708z"})],-1)])]))],2)):e.createCommentVNode("",!0)])])],2)):e.createCommentVNode("",!0)]))}})});