UNPKG

@bhplugin/vue3-datatable

Version:

Vue3 Datatable - fully customizable & easy to use datatable library

1 lines 33.4 kB
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`vue3-datatable`]={},e.Vue))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var n={class:`bh-filter-menu bh-absolute bh-right-0 bh-top-full bh-z-[1] bh-mt-1 bh-w-[180px] bh-whitespace-normal bh-rounded-md bh-bg-white bh-shadow-md`},r=(0,t.defineComponent)({__name:`column-filter`,props:{column:{},columnFilterLang:{default:null}},emits:[`close`,`conditionChange`],setup(e,{emit:r}){let i=e,a=r;(0,t.onMounted)(()=>{document.addEventListener(`click`,s)}),(0,t.onBeforeUnmount)(()=>{document.removeEventListener(`click`,s)});let o=(e,t)=>i.columnFilterLang?.[e]??t,s=()=>{a(`close`)},c=e=>{a(`conditionChange`,i.column.field,e)};return(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,n,[(0,t.createElementVNode)(`div`,{class:`bh-overflow-hidden bh-rounded bh-text-[13px] bh-font-normal`,onClick:(0,t.withModifiers)(s,[`stop`])},[(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===``}),onClick:r[0]||=e=>c(``)},(0,t.toDisplayString)(o(`no_filter`,`No filter`)),3),i.column.type===`string`?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:0},[(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`contain`}),onClick:r[1]||=e=>c(`contain`)},(0,t.toDisplayString)(o(`contain`,`Contain`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`not_contain`}),onClick:r[2]||=e=>c(`not_contain`)},(0,t.toDisplayString)(o(`not_contain`,`Not contain`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`equal`}),onClick:r[3]||=e=>c(`equal`)},(0,t.toDisplayString)(o(`equal`,`Equal`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`not_equal`}),onClick:r[4]||=e=>c(`not_equal`)},(0,t.toDisplayString)(o(`not_equal`,`Not equal`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`start_with`}),onClick:r[5]||=e=>c(`start_with`)},(0,t.toDisplayString)(o(`start_with`,`Starts with`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`end_with`}),onClick:r[6]||=e=>c(`end_with`)},(0,t.toDisplayString)(o(`end_with`,`Ends with`)),3)],64)):i.column.type===`number`?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:1},[(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`equal`}),onClick:r[7]||=e=>c(`equal`)},(0,t.toDisplayString)(o(`equal`,`Equal`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`not_equal`}),onClick:r[8]||=e=>c(`not_equal`)},(0,t.toDisplayString)(o(`not_equal`,`Not equal`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`greater_than`}),onClick:r[9]||=e=>c(`greater_than`)},(0,t.toDisplayString)(o(`greater_than`,`Greater than`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`greater_than_equal`}),onClick:r[10]||=e=>c(`greater_than_equal`)},(0,t.toDisplayString)(o(`greater_than_equal`,`Greater than or equal`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`less_than`}),onClick:r[11]||=e=>c(`less_than`)},(0,t.toDisplayString)(o(`less_than`,`Less than`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`less_than_equal`}),onClick:r[12]||=e=>c(`less_than_equal`)},(0,t.toDisplayString)(o(`less_than_equal`,`Less than or equal`)),3)],64)):i.column.type===`date`?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:2},[(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`equal`}),onClick:r[13]||=e=>c(`equal`)},(0,t.toDisplayString)(o(`equal`,`Equal`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`not_equal`}),onClick:r[14]||=e=>c(`not_equal`)},(0,t.toDisplayString)(o(`not_equal`,`Not equal`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`greater_than`}),onClick:r[15]||=e=>c(`greater_than`)},(0,t.toDisplayString)(o(`greater_than`,`Greater than`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`less_than`}),onClick:r[16]||=e=>c(`less_than`)},(0,t.toDisplayString)(o(`less_than`,`Less than`)),3)],64)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`is_null`}),onClick:r[17]||=e=>c(`is_null`)},(0,t.toDisplayString)(o(`is_null`,`Is null`)),3),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)({active:i.column.condition===`is_not_null`}),onClick:r[18]||=e=>c(`is_not_null`)},(0,t.toDisplayString)(o(`is_not_null`,`Not null`)),3)])]))}}),i=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},a={},o={version:`1.1`,viewBox:`0 0 17 12`,xmlns:`http://www.w3.org/2000/svg`};function s(e,n){return(0,t.openBlock)(),(0,t.createElementBlock)(`svg`,o,[...n[0]||=[(0,t.createElementVNode)(`g`,{fill:`none`,"fill-rule":`evenodd`},[(0,t.createElementVNode)(`g`,{transform:`translate(-9 -11)`,fill:`currentColor`,"fill-rule":`nonzero`},[(0,t.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)]])}var c=i(a,[[`render`,s]]),l={},u={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 d(e,n){return(0,t.openBlock)(),(0,t.createElementBlock)(`svg`,u,[...n[0]||=[(0,t.createElementVNode)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`},null,-1)]])}var f=i(l,[[`render`,d]]),p={},m={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 h(e,n){return(0,t.openBlock)(),(0,t.createElementBlock)(`svg`,m,[...n[0]||=[(0,t.createElementVNode)(`polygon`,{points:`22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3`},null,-1)]])}var g=i(p,[[`render`,h]]),_={key:`hdrrow`},v={class:`bh-checkbox`},y=[`onClick`],b={key:0,class:`bh-sort bh-ml-3 bh-flex bh-items-center`},x={width:`16`,height:`16`,viewBox:`0 0 14 14`,fill:`none`},S={key:0,class:`bh-relative bh-filter`},C=[`value`,`onInput`],w=[`value`,`onInput`],T=[`value`,`onChange`],E=[`value`,`onChange`],D={value:``},O={value:`true`},k={value:`false`},A=[`onClick`],j=(0,t.defineComponent)({__name:`column-header`,props:{hasCheckbox:{type:Boolean},stickyHeader:{type:Boolean},stickyFirstColumn:{type:Boolean},sortable:{type:Boolean},columnFilter:{type:Boolean},columns:{},currentSortColumn:{},currentSortDirection:{},isOpenFilter:{},isFooter:{type:Boolean,default:!1},checkAll:{type:[Boolean,null]},columnFilterLang:{default:null}},emits:[`selectAll`,`sortChange`,`filterValueChange`,`conditionChange`,`toggleFilterMenu`],setup(e,{emit:n}){let i=(0,t.ref)(null),a=e,o=n,s=(e,t)=>a.columnFilterLang?.[e]??t,l=e=>{let t=e.target;o(`selectAll`,t.checked)},u=null,d=(e,t)=>{u&&clearTimeout(u),u=setTimeout(()=>{o(`filterValueChange`,e,typeof t==`string`?t.trim():t)},300)},p=(e,t)=>{(!t||/^\d{4}-\d{2}-\d{2}$/.test(t))&&(u&&clearTimeout(u),u=setTimeout(()=>{o(`filterValueChange`,e,t||void 0)},300))},m=(e,t)=>{let n;n=t===`true`?!0:t===`false`?!1:void 0,o(`filterValueChange`,e,n),o(`toggleFilterMenu`,``)};return(0,t.onBeforeUnmount)(()=>{u&&clearTimeout(u)}),(0,t.watch)(()=>a.checkAll,()=>{i.value&&(i.value.indeterminate=a.checkAll===null,i.value.checked=a.checkAll===!0)}),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`tr`,_,[a.hasCheckbox?((0,t.openBlock)(),(0,t.createElementBlock)(`th`,{key:`chkall`,class:(0,t.normalizeClass)([`bh-w-px`,{"bh-sticky bh-z-[1] bh-bg-blue-light":a.stickyHeader||a.stickyFirstColumn,"bh-top-0":a.stickyHeader,"bh-left-0":a.stickyFirstColumn}])},[(0,t.createElementVNode)(`div`,v,[(0,t.createElementVNode)(`input`,{ref_key:`checkboxRef`,ref:i,type:`checkbox`,onClick:(0,t.withModifiers)(l,[`stop`])},null,512),(0,t.createElementVNode)(`div`,null,[(0,t.createVNode)(c,{class:`check`}),(0,t.createVNode)(f,{class:`intermediate`})])])],2)):(0,t.createCommentVNode)(``,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(a.columns,(e,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,[e.hide?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`th`,{key:e.field,class:(0,t.normalizeClass)([`bh-z-[1] bh-select-none`,[a.sortable&&e.sort?`bh-cursor-pointer`:``,i===0&&a.stickyFirstColumn?`bh-sticky bh-left-0 bh-bg-blue-light`:``,a.hasCheckbox&&i===0&&a.stickyFirstColumn?`bh-left-[52px]`:``]]),style:(0,t.normalizeStyle)({width:e.width,"min-width":e.minWidth,"max-width":e.maxWidth})},[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`bh-flex bh-items-center`,[e.headerClass?e.headerClass:``]]),onClick:t=>a.sortable&&e.sort&&o(`sortChange`,e.field)},[(0,t.createTextVNode)((0,t.toDisplayString)(e.title)+` `,1),a.sortable&&e.sort?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,b,[((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,x,[(0,t.createElementVNode)(`polygon`,{points:`3.11,6.25 10.89,6.25 7,1.75 `,fill:`currentColor`,class:(0,t.normalizeClass)([`bh-text-black/20`,[a.currentSortColumn===e.field&&a.currentSortDirection===`asc`?`!bh-text-primary`:``]])},null,2),(0,t.createElementVNode)(`polygon`,{points:`7,12.25 10.89,7.75 3.11,7.75 `,fill:`currentColor`,class:(0,t.normalizeClass)([`bh-text-black/20`,[a.currentSortColumn===e.field&&a.currentSortDirection===`desc`?`!bh-text-primary`:``]])},null,2)]))])):(0,t.createCommentVNode)(``,!0)],10,y),a.columnFilter&&!a.isFooter?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:0},[e.filter?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,S,[e.type===`string`?((0,t.openBlock)(),(0,t.createElementBlock)(`input`,{key:0,value:e.value,type:`text`,class:`bh-form-control`,onInput:t=>d(e.field,t.target.value)},null,40,C)):e.type===`number`?((0,t.openBlock)(),(0,t.createElementBlock)(`input`,{key:1,value:e.value,type:`number`,class:`bh-form-control`,onInput:t=>d(e.field,t.target.value===``?void 0:Number(t.target.value))},null,40,w)):e.type===`date`?((0,t.openBlock)(),(0,t.createElementBlock)(`input`,{key:2,value:e.value,type:`date`,class:`bh-form-control`,onChange:t=>p(e.field,t.target.value)},null,40,T)):e.type===`bool`?((0,t.openBlock)(),(0,t.createElementBlock)(`select`,{key:3,value:e.value??``,class:`bh-form-control`,onChange:t=>m(e.field,t.target.value)},[(0,t.createElementVNode)(`option`,D,(0,t.toDisplayString)(s(`all`,`All`)),1),(0,t.createElementVNode)(`option`,O,(0,t.toDisplayString)(s(`true`,`True`)),1),(0,t.createElementVNode)(`option`,k,(0,t.toDisplayString)(s(`false`,`False`)),1)],40,E)):(0,t.createCommentVNode)(``,!0),e.type===`bool`?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:4,type:`button`,onClick:(0,t.withModifiers)(t=>o(`toggleFilterMenu`,e.field),[`stop`])},[(0,t.createVNode)(g,{class:`bh-w-4`})],8,A)),(0,t.withDirectives)((0,t.createVNode)(r,{column:e,"column-filter-lang":a.columnFilterLang,onClose:n[0]||=e=>o(`toggleFilterMenu`,``),onConditionChange:n[1]||=(e,t)=>o(`conditionChange`,e,t)},null,8,[`column`,`column-filter-lang`]),[[t.vShow,a.isOpenFilter===e.field]])])):(0,t.createCommentVNode)(``,!0)],64)):(0,t.createCommentVNode)(``,!0)],6))],64))),256))]))}}),M={},N={width:`84`,height:`84`,viewBox:`0 0 24 24`,class:`bh-loader bh-text-primary`};function P(e,n){return(0,t.openBlock)(),(0,t.createElementBlock)(`svg`,N,[...n[0]||=[(0,t.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)]])}var ee=i(M,[[`render`,P]]),F=(e,t)=>t?.split(`.`).reduce((e,t)=>e?.[t],e),I=e=>{try{if(!e)return``;let t=new Date(e);if(isNaN(t.getTime()))return``;let n=t.getDate(),r=t.getMonth()+1;return t.getFullYear()+`-`+(r>9?r:`0`+r)+`-`+(n>9?n:`0`+n)}catch{return``}},te=(e,...t)=>e.replace(/{(\d+)}/g,(e,n)=>{let r=parseInt(n,10);return r<t.length?String(t[r]):e}),ne=e=>e.replace(/<script[\s\S]*?<\/script\s*>/gi,``).replace(/<style[\s\S]*?<\/style\s*>/gi,``).replace(/<\/?(?:iframe|object|embed|form)\b[^>]*>/gi,``).replace(/\s+on\w+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]*)/gi,``).replace(/(href|src|action)\s*=\s*["']?\s*javascript\s*:/gi,`$1="`);function re(e){let n=(0,t.ref)(e.page.value),r=(0,t.ref)(e.pagination.value?e.pageSize.value:e.totalRows.value),i=e.pageSize.value;(0,t.watch)(e.page,e=>{n.value=e});let a=(0,t.computed)(()=>{let t=r.value??1,n=t<1?1:Math.ceil(e.totalRows.value/t);return Math.max(n||0,1)});return{currentPage:n,currentPageSize:r,initialPageSize:i,maxPage:a,offset:(0,t.computed)(()=>(n.value-1)*(r.value??0)+1),limit:(0,t.computed)(()=>{let t=n.value*(r.value??0);return e.totalRows.value>=t?t:e.totalRows.value}),paging:(0,t.computed)(()=>{let t,r,i=e.showNumbersCount.value;return i<a.value?(t=Math.max(n.value-Math.floor(i/2),1),r=t+i-1,r>a.value&&(r=a.value,t=r-i+1)):(t=1,r=a.value),Array.from({length:r+1-t},(e,n)=>t+n)})}}function ie(e){let n=(0,t.ref)(e.sortColumn.value),r=(0,t.ref)(e.sortDirection.value),i=e.sortColumn.value,a=e.sortDirection.value;return{currentSortColumn:n,currentSortDirection:r,initialSortColumn:i,initialSortDirection:a,toggleSort:e=>{let t=`asc`;return e===n.value&&r.value===`asc`&&(t=`desc`),n.value=e,r.value=t,{field:e,direction:t}},resetSort:()=>{n.value=i,r.value=a}}}var L={string:{contain:(e,t)=>String(e??``).toLowerCase().includes(String(t).toLowerCase()),not_contain:(e,t)=>!String(e??``).toLowerCase().includes(String(t).toLowerCase()),equal:(e,t)=>String(e??``).toLowerCase()===String(t).toLowerCase(),not_equal:(e,t)=>String(e??``).toLowerCase()!==String(t).toLowerCase(),start_with:(e,t)=>String(e??``).toLowerCase().startsWith(String(t).toLowerCase()),end_with:(e,t)=>String(e??``).toLowerCase().endsWith(String(t).toLowerCase())},number:{equal:(e,t)=>e!=null&&parseFloat(String(e))===parseFloat(String(t)),not_equal:(e,t)=>e!=null&&parseFloat(String(e))!==parseFloat(String(t)),greater_than:(e,t)=>e!=null&&parseFloat(String(e))>parseFloat(String(t)),greater_than_equal:(e,t)=>e!=null&&parseFloat(String(e))>=parseFloat(String(t)),less_than:(e,t)=>e!=null&&parseFloat(String(e))<parseFloat(String(t)),less_than_equal:(e,t)=>e!=null&&parseFloat(String(e))<=parseFloat(String(t))},date:{equal:(e,t)=>e!=null&&I(e)===String(t),not_equal:(e,t)=>e!=null&&I(e)!==String(t),greater_than:(e,t)=>e!=null&&I(e)>String(t),less_than:(e,t)=>e!=null&&I(e)<String(t)},bool:{equal:(e,t)=>e===t}},R={is_null:e=>e==null||e===``,is_not_null:e=>e!=null&&e!==``},z=(e,t)=>{let n=e;for(let e of t){if(!e.filter)continue;let t=e.value!==void 0&&e.value!==null&&e.value!==``,r=e.condition===`is_null`||e.condition===`is_not_null`;if(!t&&!r)continue;let i=R[e.condition];if(i){n=n.filter(t=>i(F(t,e.field),e.value));continue}if(e.type===`bool`){n=n.filter(t=>F(t,e.field)===e.value);continue}let a=L[e.type]?.[e.condition];a&&e.value!==void 0&&(n=n.filter(t=>a(F(t,e.field),e.value)))}return n},B=(e,t,n)=>{if(!n||!e.length)return e;let r=n.toLowerCase(),i=t.filter(e=>e.search&&!e.hide).map(e=>e.field);return e.filter(e=>i.some(t=>String(F(e,t)??``).toLowerCase().includes(r)))},V=(e,t,n,r)=>{let i=new Intl.Collator(void 0,{numeric:r,sensitivity:`base`}),a=n===`desc`?-1:1;return[...e].sort((e,n)=>{let r=F(e,t),o=F(n,t);return i.compare(String(r??``),String(o??``))*a})};function ae(e){let n=(0,t.ref)(e.search.value),r=(0,t.ref)(null),i=(0,t.reactive)(new Map),a=(0,t.computed)(()=>e.columns.value.map(e=>{let t=e.type?.toLowerCase()||`string`,n=e.field??``,r=i.get(n);return{field:n,type:t,condition:r?.condition??e.condition??(t===`bool`?``:t===`string`?`contain`:`equal`),value:r?.value??e.value,filter:e.filter??!0,search:e.search??!0,sort:e.sort??!0,hide:e.hide??!1,title:e.title,width:e.width,minWidth:e.minWidth,maxWidth:e.maxWidth,headerClass:e.headerClass,cellClass:e.cellClass,isUnique:e.isUnique??!1,html:e.html??!1,cellRenderer:e.cellRenderer}}));i.clear(),e.columns.value.forEach(e=>{let t=e.field??``,n=e.type?.toLowerCase()||`string`;i.set(t,{value:e.value,condition:e.condition??(n===`bool`?``:n===`string`?`contain`:`equal`)})});let o=new Map;i.forEach((e,t)=>{o.set(t,{...e})});let s=(0,t.computed)(()=>{let t=e.rows.value||[];if(!e.isServerMode.value&&(e.columnFilter.value&&(t=z(t,a.value)),t=B(t,a.value,n.value),e.sortable.value)){let n=a.value.find(t=>t.field===e.sortColumn.value)?.type===`number`;t=V(t,e.sortColumn.value,e.sortDirection.value,n)}return t}),c=(0,t.computed)(()=>e.isServerMode.value?e.totalRows.value||0:s.value.length);return(0,t.watch)(e.search,e=>{n.value=e}),{currentSearch:n,isOpenFilter:r,normalizedColumns:a,filteredRows:s,filterRowCount:c,columnFilterState:i,setFilterValue:(t,n)=>{let r=i.get(t);r&&(r.value=n,n!==void 0&&n!==``&&r.condition===``&&(r.condition=(e.columns.value.find(e=>e.field===t)?.type?.toLowerCase()||`string`)===`string`?`contain`:`equal`))},setFilterCondition:(e,t)=>{let n=i.get(e);n&&(n.condition=t,t===``&&(n.value=void 0))},toggleFilterMenu:e=>{e&&r.value===e?r.value=null:r.value=e},getColumnsWithFilterState:()=>e.columns.value.map(e=>{let t=e.field??``,n=e.type?.toLowerCase()||`string`,r=i.get(t);return{...e,type:n,value:r?.value,condition:r?.condition}}),resetFilters:()=>{o.forEach((e,t)=>{i.set(t,{...e})}),n.value=``}}}function oe(e){let n=(0,t.ref)([]),r=(t,n)=>e.uniqueKey.value?F(t,e.uniqueKey.value)??n:n,i=(0,t.computed)(()=>{let t=e.filterItems.value;return n.value.length===0||t.length===0?!1:t.every((e,t)=>n.value.includes(r(e,t)))?!0:t.some((e,t)=>n.value.includes(r(e,t)))?null:!1}),a=t=>{t?n.value=e.filterItems.value.map((e,t)=>r(e,t)):n.value=[]},o=()=>{n.value=[]},s=t=>{if(!u(t)){let i=e.filterItems.value[t];i&&n.value.push(r(i,t))}},c=t=>{if(u(t)){let i=e.filterItems.value[t];if(i){let e=r(i,t);n.value=n.value.filter(t=>t!==e)}}},l=e=>{u(e)?c(e):s(e)},u=t=>{let i=e.filterItems.value[t];return i?n.value.includes(r(i,t)):!1};return{selected:n,selectedAll:i,getRowKey:r,selectAll:a,clearSelection:o,selectRow:s,unselectRow:c,toggleRow:l,isRowSelected:u,getSelectedRows:()=>e.filterItems.value.filter((e,t)=>n.value.includes(r(e,t))),clearSelectedRows:o}}var se=e=>(0,t.computed)(()=>e.value.find(e=>e.isUnique)?.field||null);function ce(e,t){return{handleClick:(t,n)=>{e(t,n)},handleDblClick:e=>{t(e)}}}var le={class:`bh-datatable bh-relative bh-text-sm bh-font-normal bh-text-black bh-antialiased`},ue=[`onClick`,`onDblclick`],H={class:`bh-checkbox`},de=[`checked`,`onChange`],fe=[`innerHTML`],pe={key:1},me=[`colspan`],he={key:0,class:`bh-absolute bh-inset-0 bh-grid bh-place-content-center bh-bg-blue-light/50`},ge={class:`bh-flex bh-flex-col bh-flex-wrap bh-items-center bh-gap-4 sm:bh-flex-row`},_e={class:`bh-pagination-info bh-flex bh-items-center`},ve={class:`bh-mr-2`},ye=[`value`],be={class:`bh-pagination-number bh-inline-flex bh-items-center bh-space-x-1 sm:bh-ml-auto`},xe=[`onClick`],U=(0,t.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:``},page:{default:1},pageSize:{default:10},pageSizeOptions:{default:()=>[10,20,30,50,100]},showPageSize:{type:Boolean,default:!0},rowClass:{type:[String,Array,Function],default:``},cellClass:{type:[String,Array,Function],default:``},sortable:{type:Boolean,default:!1},sortColumn:{default:``},sortDirection:{default:`asc`},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},paginationInfo:{default:`Showing {0} to {1} of {2} entries`},noDataContent:{default:`No data available`},skeletonRowCount:{default:10},stickyHeader:{type:Boolean,default:!1},height:{default:`500px`},stickyFirstColumn:{type:Boolean,default:!1},cloneHeaderInFooter:{type:Boolean,default:!1},selectRowOnClick:{type:Boolean,default:!1}},emits:[`changeServer`,`sortChange`,`searchChange`,`pageChange`,`pageSizeChange`,`rowSelect`,`filterChange`,`rowClick`,`rowDBClick`,`reset`],setup(e,{expose:n,emit:r}){let i=(0,t.useSlots)(),a=e,o=r,{currentSortColumn:s,currentSortDirection:l,toggleSort:u,resetSort:d}=ie({sortColumn:(0,t.toRef)(a,`sortColumn`),sortDirection:(0,t.toRef)(a,`sortDirection`)}),{currentSearch:f,isOpenFilter:p,normalizedColumns:m,filteredRows:h,filterRowCount:g,setFilterValue:_,setFilterCondition:v,toggleFilterMenu:y,getColumnsWithFilterState:b,resetFilters:x}=ae({rows:(0,t.toRef)(a,`rows`),columns:(0,t.toRef)(a,`columns`),isServerMode:(0,t.toRef)(a,`isServerMode`),columnFilter:(0,t.toRef)(a,`columnFilter`),sortable:(0,t.toRef)(a,`sortable`),sortColumn:s,sortDirection:l,search:(0,t.toRef)(a,`search`),totalRows:(0,t.toRef)(a,`totalRows`)}),{currentPage:S,currentPageSize:C,initialPageSize:w,maxPage:T,offset:E,limit:D,paging:O}=re({page:(0,t.toRef)(a,`page`),pageSize:(0,t.toRef)(a,`pageSize`),showNumbersCount:(0,t.toRef)(a,`showNumbersCount`),pagination:(0,t.toRef)(a,`pagination`),totalRows:g}),k=se((0,t.toRef)(a,`columns`)),A=(0,t.computed)(()=>{let e=h.value;return a.isServerMode?e:e.slice(E.value-1,D.value)}),{selectedAll:M,getRowKey:N,selectAll:P,clearSelection:I,selectRow:L,unselectRow:R,toggleRow:z,isRowSelected:B,getSelectedRows:V,clearSelectedRows:U}=oe({filterItems:A,uniqueKey:k}),W=(0,t.ref)(a.loading);(0,t.watch)(()=>a.loading,e=>{W.value=e});let{handleClick:Se,handleDblClick:Ce}=ce((e,t)=>{a.selectRowOnClick&&(z(t),o(`rowSelect`,V())),o(`rowClick`,e)},e=>{o(`rowDBClick`,e)}),G=!1,we=e=>{z(e),o(`rowSelect`,V())},K=e=>{let t=Math.max(1,Math.min(e,T.value));t!==S.value&&(S.value=t,I(),a.isServerMode&&$(`page`),o(`pageChange`,S.value))};(0,t.watch)(()=>a.rows,()=>{I()}),(0,t.watch)(C,()=>{G||(I(),a.isServerMode?(S.value=1,$(`pagesize`,!0)):S.value=1,o(`pageSizeChange`,C.value))});let q=e=>{P(e)},J=e=>{if(!e)return;let{field:t,direction:n}=u(e);I();let r=(S.value-1)*(C.value??0),i=C.value??0;a.isServerMode&&$(`sort`),o(`sortChange`,{offset:r,limit:i,field:t,direction:n})},Y=(e,t)=>{_(e,t),Z()},X=(e,t)=>{v(e,t),Z()},Z=()=>{I(),a.isServerMode?(S.value=1,$(`filter`,!0)):S.value=1,o(`filterChange`,b())},Q=e=>{y(e||null)};(0,t.watch)(()=>a.search,()=>{G||(f.value=a.search,I(),a.isServerMode?(S.value=1,$(`search`,!0)):S.value=1,o(`searchChange`,f.value))});let $=(e,t=!1)=>{a.isServerMode&&(W.value=!0,o(`changeServer`,{current_page:t?1:S.value,pagesize:C.value,offset:(S.value-1)*(C.value??0),sort_column:s.value,sort_direction:l.value,search:f.value,column_filters:b(),change_type:e}))};return n({reset:()=>{G=!0,I(),x(),d(),C.value=w,S.value=1,a.isServerMode&&$(`reset`,!0),o(`reset`),(0,t.nextTick)(()=>{G=!1})},getSelectedRows:V,getColumnFilters:()=>b(),clearSelectedRows:U,selectRow:L,unselectRow:R,isRowSelected:B,getFilteredRows:()=>h.value,getVisibleRows:()=>A.value}),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,le,[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`bh-table-responsive`,{"bh-min-h-[300px]":W.value}]),style:(0,t.normalizeStyle)({height:a.stickyHeader?a.height:void 0})},[(0,t.createElementVNode)(`table`,{class:(0,t.normalizeClass)([a.skin])},[(0,t.createElementVNode)(`thead`,{class:(0,t.normalizeClass)({"bh-sticky bh-top-0 bh-z-10":a.stickyHeader})},[(0,t.createVNode)(j,{"has-checkbox":a.hasCheckbox,"sticky-header":a.stickyHeader,"sticky-first-column":a.stickyFirstColumn,sortable:a.sortable,"column-filter":a.columnFilter,columns:(0,t.unref)(m),"current-sort-column":(0,t.unref)(s),"current-sort-direction":(0,t.unref)(l),"is-open-filter":(0,t.unref)(p),"check-all":(0,t.unref)(M),"column-filter-lang":a.columnFilterLang,onSelectAll:q,onSortChange:J,onFilterValueChange:Y,onConditionChange:X,onToggleFilterMenu:Q},null,8,[`has-checkbox`,`sticky-header`,`sticky-first-column`,`sortable`,`column-filter`,`columns`,`current-sort-column`,`current-sort-direction`,`is-open-filter`,`check-all`,`column-filter-lang`])],2),(0,t.createElementVNode)(`tbody`,null,[(0,t.unref)(g)?((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,{key:0},(0,t.renderList)(A.value,(r,o)=>((0,t.openBlock)(),(0,t.createElementBlock)(`tr`,{key:(0,t.unref)(N)(r,o),class:(0,t.normalizeClass)([typeof a.rowClass==`function`?a.rowClass(r):a.rowClass,a.selectRowOnClick?`bh-cursor-pointer`:``]),onClick:(0,t.withModifiers)(e=>(0,t.unref)(Se)(r,o),[`prevent`]),onDblclick:(0,t.withModifiers)(e=>(0,t.unref)(Ce)(r),[`prevent`])},[a.hasCheckbox?((0,t.openBlock)(),(0,t.createElementBlock)(`td`,{key:0,class:(0,t.normalizeClass)({"bh-sticky bh-left-0 bh-bg-blue-light":a.stickyFirstColumn})},[(0,t.createElementVNode)(`div`,H,[(0,t.createElementVNode)(`input`,{type:`checkbox`,checked:(0,t.unref)(B)(o),onClick:n[0]||=(0,t.withModifiers)(()=>{},[`stop`]),onChange:e=>we(o)},null,40,de),(0,t.createElementVNode)(`div`,null,[(0,t.createVNode)(c,{class:`check`})])])],2)):(0,t.createCommentVNode)(``,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(m),(n,o)=>((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,[n.hide?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`td`,{key:n.field,class:(0,t.normalizeClass)([typeof a.cellClass==`function`?a.cellClass(r):a.cellClass,o===0&&a.stickyFirstColumn?`bh-sticky bh-left-0 bh-bg-blue-light`:``,a.hasCheckbox&&o===0&&a.stickyFirstColumn?`bh-left-[52px]`:``,n.cellClass?n.cellClass:``])},[n.field&&(0,t.unref)(i)[n.field]?(0,t.renderSlot)(e.$slots,n.field,{key:0,value:r}):n.cellRenderer&&typeof n.cellRenderer==`function`?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:1,innerHTML:(0,t.unref)(ne)(n.cellRenderer(r))},null,8,fe)):((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:2},[(0,t.createTextVNode)((0,t.toDisplayString)((0,t.unref)(F)(r,n.field)),1)],64))],2))],64))),256))],42,ue))),128)):(0,t.createCommentVNode)(``,!0),!(0,t.unref)(g)&&!W.value?((0,t.openBlock)(),(0,t.createElementBlock)(`tr`,pe,[(0,t.createElementVNode)(`td`,{colspan:(0,t.unref)(m).length+1},[(0,t.renderSlot)(e.$slots,`noData`,{},()=>[(0,t.createTextVNode)((0,t.toDisplayString)(a.noDataContent),1)])],8,me)])):(0,t.createCommentVNode)(``,!0),!(0,t.unref)(g)&&W.value?((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,{key:2},(0,t.renderList)(a.skeletonRowCount,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`tr`,{key:e,class:`bh-h-11`},[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((a.hasCheckbox?1:0)+(0,t.unref)(m).filter(e=>!e.hide).length,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`td`,{key:e},[...n[6]||=[(0,t.createElementVNode)(`div`,{class:`bh-skeleton-box`},null,-1)]]))),128))]))),128)):(0,t.createCommentVNode)(``,!0)]),a.cloneHeaderInFooter?((0,t.openBlock)(),(0,t.createElementBlock)(`tfoot`,{key:0,class:(0,t.normalizeClass)({"bh-sticky bh-bottom-0":a.stickyHeader})},[(0,t.createVNode)(j,{"has-checkbox":a.hasCheckbox,"sticky-header":a.stickyHeader,"sticky-first-column":a.stickyFirstColumn,sortable:a.sortable,"column-filter":a.columnFilter,columns:(0,t.unref)(m),"current-sort-column":(0,t.unref)(s),"current-sort-direction":(0,t.unref)(l),"is-open-filter":(0,t.unref)(p),"is-footer":!0,"check-all":(0,t.unref)(M),onSelectAll:q,onSortChange:J,onFilterValueChange:Y,onConditionChange:X,onToggleFilterMenu:Q},null,8,[`has-checkbox`,`sticky-header`,`sticky-first-column`,`sortable`,`column-filter`,`columns`,`current-sort-column`,`current-sort-direction`,`is-open-filter`,`check-all`])],2)):(0,t.createCommentVNode)(``,!0)],2),(0,t.unref)(g)&&W.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,he,[(0,t.createVNode)(ee)])):(0,t.createCommentVNode)(``,!0)],6),a.pagination&&(0,t.unref)(g)?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,class:(0,t.normalizeClass)([`bh-pagination bh-py-5`,{"bh-pointer-events-none bh-opacity-50":W.value}])},[(0,t.createElementVNode)(`div`,ge,[(0,t.createElementVNode)(`div`,_e,[(0,t.createElementVNode)(`span`,ve,(0,t.toDisplayString)((0,t.unref)(te)(a.paginationInfo,(0,t.unref)(g)?(0,t.unref)(E):0,(0,t.unref)(D),(0,t.unref)(g))),1),a.showPageSize?(0,t.withDirectives)(((0,t.openBlock)(),(0,t.createElementBlock)(`select`,{key:0,"onUpdate:modelValue":n[1]||=e=>(0,t.isRef)(C)?C.value=e:null,class:`bh-pagesize`},[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(a.pageSizeOptions,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`option`,{key:e,value:e},(0,t.toDisplayString)(e),9,ye))),128))],512)),[[t.vModelSelect,(0,t.unref)(C)]]):(0,t.createCommentVNode)(``,!0)]),(0,t.createElementVNode)(`div`,be,[a.showFirstPage?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:0,type:`button`,class:(0,t.normalizeClass)([`bh-page-item first-page`,{disabled:(0,t.unref)(S)<=1}]),onClick:n[2]||=e=>K(1)},[(0,t.renderSlot)(e.$slots,`firstArrow`,{},()=>[n[7]||=(0,t.createElementVNode)(`svg`,{"aria-hidden":`true`,width:`14`,height:`14`,viewBox:`0 0 16 16`},[(0,t.createElementVNode)(`g`,{fill:`currentColor`,"fill-rule":`evenodd`},[(0,t.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`}),(0,t.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)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)([`bh-page-item previous-page`,{disabled:(0,t.unref)(S)<=1}]),onClick:n[3]||=e=>K((0,t.unref)(S)-1)},[(0,t.renderSlot)(e.$slots,`previousArrow`,{},()=>[n[8]||=(0,t.createElementVNode)(`svg`,{"aria-hidden":`true`,width:`14`,height:`14`,viewBox:`0 0 16 16`},[(0,t.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`})],-1)])],2),a.showNumbers?((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,{key:1},(0,t.renderList)((0,t.unref)(O),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:e,type:`button`,class:(0,t.normalizeClass)([`bh-page-item`,{disabled:(0,t.unref)(S)===e,"bh-active":e===(0,t.unref)(S)}]),onClick:t=>K(e)},(0,t.toDisplayString)(e),11,xe))),128)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`button`,{type:`button`,class:(0,t.normalizeClass)([`bh-page-item next-page`,{disabled:(0,t.unref)(S)>=(0,t.unref)(T)}]),onClick:n[4]||=e=>K((0,t.unref)(S)+1)},[(0,t.renderSlot)(e.$slots,`nextArrow`,{},()=>[n[9]||=(0,t.createElementVNode)(`svg`,{"aria-hidden":`true`,width:`14`,height:`14`,viewBox:`0 0 16 16`},[(0,t.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`})],-1)])],2),a.showLastPage?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:2,type:`button`,class:(0,t.normalizeClass)([`bh-page-item last-page`,{disabled:(0,t.unref)(S)>=(0,t.unref)(T)}]),onClick:n[5]||=e=>K((0,t.unref)(T))},[(0,t.renderSlot)(e.$slots,`lastArrow`,{},()=>[n[10]||=(0,t.createElementVNode)(`svg`,{"aria-hidden":`true`,width:`14`,height:`14`,viewBox:`0 0 16 16`},[(0,t.createElementVNode)(`g`,{fill:`currentColor`,"fill-rule":`evenodd`},[(0,t.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`}),(0,t.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)):(0,t.createCommentVNode)(``,!0)])])],2)):(0,t.createCommentVNode)(``,!0)]))}}),W=U;e.Vue3Datatable=U,e.default=W});