tablevu 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/odata.js CHANGED
@@ -1 +1 @@
1
- import get from"./get.js";function filter(t){function r(e){return null===e?"null":"string"==typeof e?10==e.length&&"-"==e[4]&&"-"==e[7]&&Date.parse(e)?e:"'"+e+"'":"number"==typeof e?e:e.getMonth&&"function"==typeof e.getMonth?e.toISOString():e.func+"("+e.params.join(",")+")"}let n="";if(t&&t.filters)for(let e=0;e<t.filters.length;e++)0<e&&(n+=` ${t.type||"and"} `),t.filters[e].column?n="in"==t.filters[e].operator?n+r(t.filters[e].value)+" "+t.filters[e].operator+" "+t.filters[e].column:n+t.filters[e].column+" "+t.filters[e].operator+" "+r(t.filters[e].value):t.filters[e].func?n=n+t.filters[e].func+"("+t.filters[e].params.map(e=>r(e)).join(",")+")":t.filters[e]&&(n=n+"("+filter(t.filters[e])+")");return n}function sefs(e,t,n){let a="";if(t.select&&0<t.select.length&&(n?a+="$select="+t.select.join(","):e.searchParams.append("$select",t.select.join(","))),t.expand&&0<t.expand.length){let r=[];t.expand.forEach(e=>{var t=sefs(null,e,";");t?r.push(e.name+"("+t+")"):r.push(e.name)}),n?a+=(0<a.length?n:"")+"$expand="+r.join(","):e.searchParams.append("$expand",r.join(","))}return a}export default class odata{constructor(l,s,i){this.adapter=t=>{var e,r=new URL(l.url),n=(t.pageSize&&(r.searchParams.append("$skip",t.pageSize*(t.currPage-1)),r.searchParams.append("$top",t.pageSize)),sefs(r,s),[]);t.filter&&Object.prototype.hasOwnProperty.call(t.filter,"filters")&&(e=filter(t.filter))&&n.push(e),t.filter&&(e=filter(t.filter))&&n.push(e),t.search&&(e=t.cols.filter(e=>null==e.searchable||1==e.searchable).map(e=>"contains("+e.name.replaceAll(".","/")+",'"+t.search+"')").join(" or "))&&n.push("("+e+")"),n&&0<n.length&&r.searchParams.append("$filter",n.join(" and ")),t.sort&&0<t.sort.length&&r.searchParams.append("$orderby",t.sort.map(e=>{var t={index:-1,name:"",dir:null};return Object.prototype.hasOwnProperty.call(e,"index")?t.index=e.index:t.name=e.name,t.dir=e.dir,t}).map(e=>(-1<e.index?t.cols[e.index]:e).name.replaceAll(".","/")+(e.dir?" "+e.dir:"")).join(","));let a=null;return a=i.onfetch&&"function"==typeof i.onfetch?i.onfetch(new Request(r,l)):new Request(r,l),get(a)}}}
1
+ import get from"./get.js";function filter(t){function r(e){return null===e?"null":"string"==typeof e?10==e.length&&"-"==e[4]&&"-"==e[7]&&Date.parse(e)?e:"'"+e+"'":"number"==typeof e?e:e.getMonth&&"function"==typeof e.getMonth?e.toISOString():e.func+"("+e.params.join(",")+")"}let n="";if(t&&t.filters)for(let e=0;e<t.filters.length;e++)0<e&&(n+=` ${t.type||"and"} `),t.filters[e].column?n="in"==t.filters[e].operator?n+r(t.filters[e].value)+" "+t.filters[e].operator+" "+t.filters[e].column:n+t.filters[e].column+" "+t.filters[e].operator+" "+r(t.filters[e].value):t.filters[e].func?n=n+t.filters[e].func+"("+t.filters[e].params.map(e=>r(e)).join(",")+")":t.filters[e]&&(n=n+"("+filter(t.filters[e])+")");return n}function sefs(e,t,n){let a="";if(t.select&&0<t.select.length&&(n?a+="$select="+t.select.join(","):e.searchParams.append("$select",t.select.join(","))),t.expand&&0<t.expand.length){let r=[];t.expand.forEach(e=>{var t=sefs(null,e,";");t?r.push(e.name+"("+t+")"):r.push(e.name)}),n?a+=(0<a.length?n:"")+"$expand="+r.join(","):e.searchParams.append("$expand",r.join(","))}return a}export default class odata{constructor(l,s,i){this.adapter=t=>{var e,r=new URL(l.url),n=(t.pageSize&&(r.searchParams.append("$skip",t.pageSize*(t.currPage-1)),r.searchParams.append("$top",t.pageSize)),sefs(r,s),[]);t.filter&&Object.prototype.hasOwnProperty.call(t.filter,"filters")&&(e=filter(t.filter))&&n.push(e),t.filter&&(e=filter(t.filter))&&n.push(e),t.search&&(e=t.cols.filter(e=>null==e.searchable||1==e.searchable).map(e=>"contains("+e.name.replaceAll(".","/")+",'"+t.search+"')").join(" or "))&&n.push("("+e+")"),n&&0<n.length&&r.searchParams.append("$filter",n.join(" and ")),t.sort&&0<t.sort.length&&r.searchParams.append("$orderby",t.sort.map(e=>{var t={index:-1,name:"",dir:null};return Object.prototype.hasOwnProperty.call(e,"index")?t.index=e.index:t.name=e.name,t.dir=e.dir,t}).map(e=>(-1<e.index?t.cols[e.index]:e).name.replaceAll(".","/")+(e.dir?" "+e.dir:"")).join(","));let a=null;return a=i&&i.onfetch&&"function"==typeof i.onfetch?i.onfetch(new Request(r,l)):new Request(r,l),get(a)}}}
package/dist/table.js CHANGED
@@ -1 +1 @@
1
- import{h,onMounted,reactive,ref,watch}from"vue";import adaptarr from"./array.js";const tablevuStatuses={Error:-1,Ready:0,Loading:1},tablevu={props:{settings:{type:Object,default:null},data:{type:[Array,Function]},search:{type:String},filter:{type:[Array,Object]},command:{type:Array,default:[]},rowid:{type:String},onRowClick:{type:Function},onRowDblClick:{type:Function},class:{type:String,default:"table"},style:{type:String,default:null},buttonClass:{type:String,default:"btn"}},emits:["onRowClick","onRowDblClick"],setup(i,{emit:c}){let l=[],u=[],n=0;const d=reactive({adapter:null,group:{value:i.settings&&i.settings.group?i.settings.group.value:i.group||null,content:i.settings&&i.settings.group?i.settings.group.content:null,expandAll:!0,class:"table-light"},page:{count:0,size:i.settings&&i.settings.page?i.settings.page.size:0,current:0,type:null},footer:{button:{first:{visible:!0,content:null},prior:{visible:!0,content:null},next:{visible:!0,content:null},last:{visible:!0,content:null},page:{visible:!0,content:null},size:{visible:!0,content:null},class:"btn"}},sort:i.settings&&i.settings.sort?i.settings.sort:[],columns:i.settings&&i.settings.columns?i.settings.columns:[],onRowClick:i.settings.onRowClick||i.onRowClick,onRowDblClick:i.settings.onRowDblClick||i.onRowDblClick});function r(){m(1)}function a(){1<d.page.current?m(d.page.current-1):m(d.page.current)}function s(){m(d.page.current+1)}function p(){m(d.page.count)}function o(){m(d.page.current)}function g(e,t){var n;d.sort&&0<d.sort.length?(0==(n=d.sort.findIndex(t=>t.index==e))?d.sort[n].dir=t||(d.sort[0].dir?null:"desc"):0<n&&d.sort.splice(n,1),0!=n&&d.sort.unshift({index:e,dir:t||null}),2<d.sort.length&&d.sort.pop()):d.sort.push({index:e,dir:t||null}),m(d.page.current)}function m(e){let t=null;i.data&&(Array.isArray(i.data)&&(t=i.data),d.status=tablevuStatuses.Loading,d.adapter)&&d.adapter({pageSize:d.page.size,currPage:e,sort:d.sort,cols:d.columns,filter:d.filter,search:d.search},t).then(t=>{u=d.onData?d.onData(t.rows):t.rows,n=t.count,d.group&&(l=function(o,l){var r=[];for(let n=0;n<l.length;n++){let e=null,t=null;var a=l[n],s=(o.value?e="function"==typeof o.value?o.value(a):a[o.value]:"function"==typeof o?e=o(a):"bigint"==typeof o||"number"==typeof o?(s=parseInt(o))&&(e=a[s]):"string"==typeof o&&(e=a[o]),o.content&&(t="function"==typeof o.content?o.content(a):a[o.content]),r.findIndex(t=>t.group==e));-1<s?r[s].rows.push(a):r.push({group:e,content:t,expand:d.group.expandAll,rows:[a]})}return r}(d.group,u)),d.page.count=0<t.count&&0<d.page.size?t.count/d.page.size:0,d.page.current=e,d.status=tablevuStatuses.Ready,d.time=Date.now()})}function f(t,e){var n={style:{}},t=(t.colspan&&1<t.colspan&&(n.colspan=t.colspan),t.align&&(n.style["text-align"]=t.align),t.width&&(n.style["max-width"]=t.width),t.color&&(n.style.color=t.color),t.backgroundColor&&(n.style["background-color"]=t.backgroundColor),function(e,n){if(n){let t;var o;return t="datetime"==e.type||"date"==e.type||"time"==e.type?(o=new Date(n),"date"==e.type?o.toLocaleDateString():"time"==e.type?o.toLocaleTimeString():o.toLocaleString()):"numeric"==e.type?parseFloat(n):"integer"==e.type?parseInt(n):n}return""}(t,e));return h("td",n,t)}function y(t,n){var o,l,r,e={},a=[];e.key=t,e.index=t,i.rowid&&(e.rowid=n[i.rowid]);for(let t=0;t<d.columns.length;t+=1){let e;var s=d.columns[t];if(s.render)e=(l=n,void 0,r={style:{}},(o=s).colspan&&1<o.colspan&&(r.colspan=o.colspan),o.align&&(r.style["text-align"]=o.align),o.width&&(r.style["max-width"]=o.width),o=o.render(l),h("td",r,o)),a.push(e);else{if(s.depth){e=n;for(let t=0;t<s.depth.length;t+=1)e=e&&e[s.depth[t]]}else e=n[s.name];a.push(f(s,e))}}return e.ondblclick=t=>{var e=u[t.currentTarget.attributes.index.value];c("onRowDblClick",t,e)},i.onRowClick&&(e.onClick=t=>{var e=u[t.currentTarget.attributes.index.value];i.onRowClick(t,e)}),h("tr",e,a)}i.data&&(Array.isArray(i.data)?d.adapter=adaptarr:d.adapter=i.data),i.filter&&(d.filter=i.filter),watch(()=>i.filter,(t,e)=>{d.filter=t||null,o()},{deep:!0}),watch(()=>i.search,(t,e)=>{d.timer&&clearTimeout(d.timer),(e&&e.length>(i.data.searchMinChar||3)&&(null==t||t.length<=(i.data.searchMinChar||3))||t&&t.length>(i.data.searchMinChar||3))&&(d.timer=setTimeout(()=>{i.search&&i.search.length>(i.data.searchMinChar||3)?d.search=i.search:d.search=null,o()},444))}),watch(()=>i.command,(t,e)=>{t&&0<t.length&&((t=i.command[t.length-1])&&t.name&&("refresh"==t.name.toLowerCase()?o():"first"==t.name.toLowerCase()?r():"prior"==t.name.toLowerCase()?a():"next"==t.name.toLowerCase()?s():"last"==t.name.toLowerCase()?p():console.log("Unknown command")),i.command.length=0)},{deep:!0}),0==d.columns.length&&alert("Columns not defined !");for(let t=0;t<d.columns.length;t++)d.columns[t].name&&-1<d.columns[t].name.indexOf(".")&&(d.columns[t].depth=d.columns[t].name.split("."));return m(1),onMounted(()=>{console.log("tablevu.mounted")}),{spec:d,renderHeader:function(){var o=[];let l=1;for(let n=0;n<d.columns.length;n+=1)if(1<l)l--;else{var r=[],a=(d.columns[n].label?r.push(h("span",d.columns[n].label)):r.push(h("span",d.columns[n].name)),d.sort&&0<d.sort.length&&d.sort[0].index==n&&("desc"==d.sort[0].dir?r.push(h("span",{style:{float:"right"}},"▼")):r.push(h("span",{style:{float:"right"}},"▲"))),{position:"relative"}),s=(d.columns[n].width&&(a.width=d.columns[n].width,a.minWidth=d.columns[n].width,a.maxWidth=d.columns[n].width),{display:"block","font-weight":500,textDecoration:"none",color:"black",textAlign:"center"});d.columns[n].header&&(d.columns[n].header.colspan&&(l=parseInt(d.columns[n].header.colspan)||1),d.columns[n].header.align&&(s.textAlign=d.columns[n].header.align),d.columns[n].header.backgroundColor&&(a.backgroundColor=d.columns[n].header.backgroundColor),d.columns[n].header.color)&&(s.color=d.columns[n].header.color);let t,e;if(d.columns[n].popup){const c=ref(null);var i=[h("a",{href:"#",onClick(t){g(n),t.preventDefault()},style:{display:"block",textDecoration:"none",color:"black",fontWeight:"initial",padding:".25rem"}},"Order by Ascending"),h("a",{href:"#",onClick(t){g(n,"desc"),t.preventDefault()},style:{display:"block",textDecoration:"none",color:"black",fontWeight:"initial",padding:".25rem"}},"Order by Descending")];t=h("a",{href:"#",onClick(t){c.value&&c.value.style&&c.value.style.display&&"block"==c.value.style.display?c.value.style.display="none":c.value.style.display="block",t.preventDefault()},style:s},r),e=h("div",{ref:c,style:{position:"absolute",display:"none",width:d.columns[n].width||"12rem",height:"fit-content",border:"1px solid lightgray",backgroundColor:"whitesmoke",zIndex:1,left:0,top:"2rem",bottom:0,right:0,padding:".25rem"}},i)}else t=h("a",{href:"#",onClick(t){g(n),t.preventDefault()},style:s},r);d.columns[n].filter,o.push(h("th",{colspan:1<l?l:null,style:a},[t,e]))}return[h("tr",{},o)]},renderBody:function(){var n=[];if(l&&0<l.length){let e=0;for(let t=0;t<l.length;t+=1){var o=l[t];if(n.push(function(e){var t=h("button",{title:e.expand,onClick:t=>{console.log(e.expand),e.expand=!e.expand,t.currentTarget.value=e.expand?"▼":"►",d.time=Date.now(),t.preventDefault()},style:{padding:0,margin:"0 6px 0 0",width:"12px",height:"100%",border:"none",outline:0,backgroundColor:"transparent"}},e.expand?"▼":"►"),n=e.content||e.group;return h("tr",{},h("td",{colspan:d.columns.length,class:d.group.class},[t,n]))}(o)),o.expand&&o.rows&&0<o.rows.length)for(let t=0;t<o.rows.length;t+=1)n.push(y(e,o.rows[t])),e++}}else if(u&&0<u.length)for(let t=0;t<u.length;t+=1)n.push(y(t,u[t]));return n},renderFooter:function(){var t=h("button",{class:d.footer.button.class,style:"margin-right: .5rem",onClick:r,disabled:1==d.page.current},"◀◀"),e=h("button",{class:d.footer.button.class,style:"margin-right: .5rem",onClick:p,disabled:0<d.page.count},"▶▶"),n=h("button",{class:d.footer.button.class,style:"margin-right: .5rem"},d.page.current),o=h("button",{class:d.footer.button.class,style:"margin-right: .5rem",onClick:a,disabled:1==d.page.current},"◀"),l=h("button",{class:d.footer.button.class,style:"margin-right: .5rem",onClick:s,disabled:0<d.page.count&&d.page.current==d.page.count},"▶"),t=h("td",{colspan:d.columns.length,align:"center"},[t,o,n,l,e]);return[h("tr",{},[t])]},renderCaption:function(){return null}}},render(t){console.log("tablevu.render",this.spec.status);var e={class:"tablevu"},t=(t.class&&(e.class="tablevu "+t.class),t.style&&(e.style=t.style),[]);return t.push(h("thead",{},this.renderHeader())),this.spec.status==tablevuStatuses.Ready&&t.push(h("tbody",{"data-time":this.spec.time},this.renderBody())),this.spec.caption&&t.push(h("caption",{},this.renderCaption())),0<this.spec.page.size&&t.push(h("tfoot",{},this.renderFooter())),h("table",e,t)}};export default tablevu;
1
+ import{h,onMounted,reactive,ref,watch}from"vue";import adaptarr from"./array.js";const tablevuStatuses={Error:-1,Ready:0,Loading:1},tablevu={props:{settings:{type:Object,default:null},data:{type:[Array,Function]},search:{type:String},filter:{type:[Array,Object]},command:{type:Array,default:[]},rowid:{type:String},onRowClick:{type:Function},onRowDblClick:{type:Function},class:{type:String,default:"table"},style:{type:String,default:null},buttonClass:{type:String,default:"btn"}},emits:["onRowClick","onRowDblClick"],setup(i,{emit:c}){let l=[],u=[],n=0;const p=reactive({adapter:null,group:{value:i.settings&&i.settings.group?i.settings.group.value:i.group||null,content:i.settings&&i.settings.group?i.settings.group.content:null,expandAll:!0,class:"table-light"},page:{count:0,size:i.settings&&i.settings.page?i.settings.page.size:0,current:0,type:null},footer:{button:{first:{visible:!0,content:null},prior:{visible:!0,content:null},next:{visible:!0,content:null},last:{visible:!0,content:null},page:{visible:!0,content:null},size:{visible:!0,content:null},class:"btn"}},sort:i.settings&&i.settings.sort?i.settings.sort:[],columns:i.settings&&i.settings.columns?i.settings.columns:[],onRowClick:i.settings.onRowClick||i.onRowClick,onRowDblClick:i.settings.onRowDblClick||i.onRowDblClick});function r(){m(1)}function a(){1<p.page.current?m(p.page.current-1):m(p.page.current)}function s(){m(p.page.current+1)}function d(){m(p.page.count)}function o(){m(p.page.current)}function g(e,t){var n;p.sort&&0<p.sort.length?(0==(n=p.sort.findIndex(t=>t.index==e))?p.sort[n].dir=t||(p.sort[0].dir?null:"desc"):0<n&&p.sort.splice(n,1),0!=n&&p.sort.unshift({index:e,dir:t||null}),2<p.sort.length&&p.sort.pop()):p.sort.push({index:e,dir:t||null}),m(p.page.current)}function m(e){let t=null;i.data&&(Array.isArray(i.data)&&(t=i.data),p.status=tablevuStatuses.Loading,p.adapter)&&p.adapter({pageSize:p.page.size,currPage:e,sort:p.sort,cols:p.columns,filter:p.filter,search:p.search},t).then(t=>{u=p.onData?p.onData(t.rows):t.rows,n=t.count,p.group&&("string"==typeof p.group||"bigint"==typeof p.group||"object"==typeof p.group&&p.group.value)&&(l=function(o,l){var r=[];for(let n=0;n<l.length;n++){let e=null,t=null;var a=l[n],s=(o.value?e="function"==typeof o.value?o.value(a):a[o.value]:"function"==typeof o?e=o(a):"bigint"==typeof o||"number"==typeof o?(s=parseInt(o))&&(e=a[s]):"string"==typeof o&&(e=a[o]),o.content&&(t="function"==typeof o.content?o.content(a):a[o.content]),r.findIndex(t=>t.group==e));-1<s?r[s].rows.push(a):r.push({group:e,content:t,expand:p.group.expandAll,rows:[a]})}return r}(p.group,u)),p.page.count=0<t.count&&0<p.page.size?t.count/p.page.size:0,p.page.current=e,p.status=tablevuStatuses.Ready,p.time=Date.now()})}function f(t,e){var n={style:{}},t=(t.colspan&&1<t.colspan&&(n.colspan=t.colspan),t.align&&(n.style["text-align"]=t.align),t.width&&(n.style["max-width"]=t.width),t.color&&(n.style.color=t.color),t.backgroundColor&&(n.style["background-color"]=t.backgroundColor),function(e,n){if(n){let t;var o;return t="datetime"==e.type||"date"==e.type||"time"==e.type?(o=new Date(n),"date"==e.type?o.toLocaleDateString():"time"==e.type?o.toLocaleTimeString():o.toLocaleString()):"numeric"==e.type?parseFloat(n):"integer"==e.type?parseInt(n):n}return""}(t,e));return h("td",n,t)}function y(t,n){var o,l,r,e={},a=[];e.key=t,e.index=t,i.rowid&&(e.rowid=n[i.rowid]);for(let t=0;t<p.columns.length;t+=1){let e;var s=p.columns[t];if(s.render)e=(l=n,void 0,r={style:{}},(o=s).colspan&&1<o.colspan&&(r.colspan=o.colspan),o.align&&(r.style["text-align"]=o.align),o.width&&(r.style["max-width"]=o.width),o=o.render(l),h("td",r,o)),a.push(e);else{if(s.depth){e=n;for(let t=0;t<s.depth.length;t+=1)e=e&&e[s.depth[t]]}else e=n[s.name];a.push(f(s,e))}}return e.ondblclick=t=>{var e=u[t.currentTarget.attributes.index.value];c("onRowDblClick",t,e)},i.onRowClick&&(e.onClick=t=>{var e=u[t.currentTarget.attributes.index.value];i.onRowClick(t,e)}),h("tr",e,a)}i.data&&(Array.isArray(i.data)?p.adapter=adaptarr:p.adapter=i.data),i.filter&&(p.filter=i.filter),watch(()=>i.filter,(t,e)=>{p.filter=t||null,o()},{deep:!0}),watch(()=>i.search,(t,e)=>{p.timer&&clearTimeout(p.timer),(e&&e.length>(i.data.searchMinChar||3)&&(null==t||t.length<=(i.data.searchMinChar||3))||t&&t.length>(i.data.searchMinChar||3))&&(p.timer=setTimeout(()=>{i.search&&i.search.length>(i.data.searchMinChar||3)?p.search=i.search:p.search=null,o()},444))}),watch(()=>i.command,(t,e)=>{t&&0<t.length&&((t=i.command[t.length-1])&&t.name&&("refresh"==t.name.toLowerCase()?o():"first"==t.name.toLowerCase()?r():"prior"==t.name.toLowerCase()?a():"next"==t.name.toLowerCase()?s():"last"==t.name.toLowerCase()?d():console.log("Unknown command")),i.command.length=0)},{deep:!0}),0==p.columns.length&&alert("Columns not defined !");for(let t=0;t<p.columns.length;t++)p.columns[t].name&&-1<p.columns[t].name.indexOf(".")&&(p.columns[t].depth=p.columns[t].name.split("."));return m(1),onMounted(()=>{console.log("tablevu.mounted")}),{spec:p,renderHeader:function(){var o=[];let l=1;for(let n=0;n<p.columns.length;n+=1)if(1<l)l--;else{var r=[],a=(p.columns[n].label?r.push(h("span",p.columns[n].label)):r.push(h("span",p.columns[n].name)),p.sort&&0<p.sort.length&&p.sort[0].index==n&&("desc"==p.sort[0].dir?r.push(h("span",{style:{float:"right"}},"▼")):r.push(h("span",{style:{float:"right"}},"▲"))),{position:"relative"}),s=(p.columns[n].width&&(a.width=p.columns[n].width,a.minWidth=p.columns[n].width,a.maxWidth=p.columns[n].width),{display:"block","font-weight":500,textDecoration:"none",color:"black",textAlign:"center"});p.columns[n].header&&(p.columns[n].header.colspan&&(l=parseInt(p.columns[n].header.colspan)||1),p.columns[n].header.align&&(s.textAlign=p.columns[n].header.align),p.columns[n].header.backgroundColor&&(a.backgroundColor=p.columns[n].header.backgroundColor),p.columns[n].header.color)&&(s.color=p.columns[n].header.color);let t,e;if(p.columns[n].popup){const c=ref(null);var i=[h("a",{href:"#",onClick(t){g(n),t.preventDefault()},style:{display:"block",textDecoration:"none",color:"black",fontWeight:"initial",padding:".25rem"}},"Order by Ascending"),h("a",{href:"#",onClick(t){g(n,"desc"),t.preventDefault()},style:{display:"block",textDecoration:"none",color:"black",fontWeight:"initial",padding:".25rem"}},"Order by Descending")];t=h("a",{href:"#",onClick(t){c.value&&c.value.style&&c.value.style.display&&"block"==c.value.style.display?c.value.style.display="none":c.value.style.display="block",t.preventDefault()},style:s},r),e=h("div",{ref:c,style:{position:"absolute",display:"none",width:p.columns[n].width||"12rem",height:"fit-content",border:"1px solid lightgray",backgroundColor:"whitesmoke",zIndex:1,left:0,top:"2rem",bottom:0,right:0,padding:".25rem"}},i)}else t=h("a",{href:"#",onClick(t){g(n),t.preventDefault()},style:s},r);p.columns[n].filter,o.push(h("th",{colspan:1<l?l:null,style:a},[t,e]))}return[h("tr",{},o)]},renderBody:function(){var n=[];if(l&&0<l.length){let e=0;for(let t=0;t<l.length;t+=1){var o=l[t];if(n.push(function(e){var t=h("button",{title:e.expand,onClick:t=>{console.log(e.expand),e.expand=!e.expand,t.currentTarget.value=e.expand?"▼":"►",p.time=Date.now(),t.preventDefault()},style:{padding:0,margin:"0 6px 0 0",width:"12px",height:"100%",border:"none",outline:0,backgroundColor:"transparent"}},e.expand?"▼":"►"),n=e.content||e.group;return h("tr",{},h("td",{colspan:p.columns.length,class:p.group.class},[t,n]))}(o)),o.expand&&o.rows&&0<o.rows.length)for(let t=0;t<o.rows.length;t+=1)n.push(y(e,o.rows[t])),e++}}else if(u&&0<u.length)for(let t=0;t<u.length;t+=1)n.push(y(t,u[t]));return n},renderFooter:function(){var t=h("button",{class:p.footer.button.class,style:"margin-right: .5rem",onClick:r,disabled:1==p.page.current},"◀◀"),e=h("button",{class:p.footer.button.class,style:"margin-right: .5rem",onClick:d,disabled:0<p.page.count},"▶▶"),n=h("button",{class:p.footer.button.class,style:"margin-right: .5rem"},p.page.current),o=h("button",{class:p.footer.button.class,style:"margin-right: .5rem",onClick:a,disabled:1==p.page.current},"◀"),l=h("button",{class:p.footer.button.class,style:"margin-right: .5rem",onClick:s,disabled:0<p.page.count&&p.page.current==p.page.count},"▶"),t=h("td",{colspan:p.columns.length,align:"center"},[t,o,n,l,e]);return[h("tr",{},[t])]},renderCaption:function(){return null}}},render(t){console.log("tablevu.render",this.spec.status);var e={class:"tablevu"},t=(t.class&&(e.class="tablevu "+t.class),t.style&&(e.style=t.style),[]);return t.push(h("thead",{},this.renderHeader())),this.spec.status==tablevuStatuses.Ready&&t.push(h("tbody",{"data-time":this.spec.time},this.renderBody())),this.spec.caption&&t.push(h("caption",{},this.renderCaption())),0<this.spec.page.size&&t.push(h("tfoot",{},this.renderFooter())),h("table",e,t)}};export default tablevu;
package/dist/webapi.js CHANGED
@@ -1 +1 @@
1
- import get from"./get.js";export default class webapi{constructor(t,e,n){this.adapter=a=>{var e=new URL(t.url);a.pageSize&&(e.searchParams.append("skip",a.pageSize*(a.currPage-1)),e.searchParams.append("top",a.pageSize)),a.search&&e.searchParams.append("search",a.search),a.sort&&0<a.sort.length&&e.searchParams.append("orderby",a.sort.map(e=>{var a={index:-1,name:""};return Object.prototype.hasOwnProperty.call(e,"index")?a.index=e.index:a.name=e.name,a}).map(e=>(-1<e.index?a.cols[e.index]:e).name));let r=null;return r=n.onfetch&&"function"==typeof n.onfetch?n.onfetch(new Request(e,t)):new Request(e,t),get(r)}}}
1
+ import get from"./get.js";export default class webapi{constructor(t,e,n){this.adapter=a=>{var e=new URL(t.url);a.pageSize&&(e.searchParams.append("skip",a.pageSize*(a.currPage-1)),e.searchParams.append("top",a.pageSize)),a.search&&e.searchParams.append("search",a.search),a.sort&&0<a.sort.length&&e.searchParams.append("orderby",a.sort.map(e=>{var a={index:-1,name:""};return Object.prototype.hasOwnProperty.call(e,"index")?a.index=e.index:a.name=e.name,a}).map(e=>(-1<e.index?a.cols[e.index]:e).name));let r=null;return r=n&&n.onfetch&&"function"==typeof n.onfetch?n.onfetch(new Request(e,t)):new Request(e,t),get(r)}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tablevu",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "vue 3 data table",
5
5
  "main": "index.js",
6
6
  "directories": {
package/src/odata.js CHANGED
@@ -130,7 +130,7 @@ export default class odata {
130
130
  u.searchParams.append('$orderby', props.sort.map(m => { let n = { index: -1, name: '', dir: null }; if (Object.prototype.hasOwnProperty.call(m, 'index')) { n.index = m.index } else { n.name = m.name }; n.dir = m.dir; return n; }).map(m => { return (m.index > -1 ? props.cols[m.index].name : m.name).replaceAll('.', '/') + (m.dir ? (' ' + m.dir): '') }).join(','));
131
131
 
132
132
  let r = null;
133
- if (events.onfetch && typeof events.onfetch == 'function')
133
+ if (events && events.onfetch && typeof events.onfetch == 'function')
134
134
  r = events.onfetch(new Request(u, req))
135
135
  else
136
136
  r = new Request(u, req);
package/src/table.js CHANGED
@@ -231,7 +231,7 @@ const tablevu = {
231
231
 
232
232
  count = ada.count;
233
233
 
234
- if (spec.group)
234
+ if (spec.group && (typeof spec.group == 'string' || typeof spec.group == 'bigint' || (typeof spec.group == 'object' && spec.group.value )))
235
235
  grps = prepareGroup(spec.group, rows);
236
236
 
237
237
  spec.page.count = (ada.count > 0 && spec.page.size > 0) ? (ada.count / spec.page.size) : 0
package/src/webapi.js CHANGED
@@ -22,7 +22,7 @@ export default class webapi {
22
22
  };
23
23
 
24
24
  let r = null;
25
- if (events.onfetch && typeof events.onfetch == 'function')
25
+ if (events && events.onfetch && typeof events.onfetch == 'function')
26
26
  r = events.onfetch(new Request(u, req))
27
27
  else
28
28
  r = new Request(u, req);