lkt-table 1.0.13 → 1.0.14

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.
@@ -1 +1 @@
1
- (function(c,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vuedraggable"),require("lkt-events"),require("lkt-string-tools")):typeof define=="function"&&define.amd?define(["exports","vue","vuedraggable","lkt-events","lkt-string-tools"],e):(c=typeof globalThis<"u"?globalThis:c||self,e(c.LktTable={},c.Vue,c.draggable,c.LktEvents,c.LktStringTools))})(this,function(c,e,p,N,R){"use strict";var ge=Object.defineProperty;var pe=(c,e,p)=>e in c?ge(c,e,{enumerable:!0,configurable:!0,writable:!0,value:p}):c[e]=p;var g=(c,e,p)=>(pe(c,typeof e!="symbol"?e+"":e,p),p);const x=(t=>t&&typeof t=="object"&&"default"in t?t:{default:t})(p);class H{constructor(l="",i=""){g(this,"key");g(this,"label");g(this,"sortable");g(this,"hidden");g(this,"formatter");g(this,"checkEmpty");g(this,"colspan");this.key=l,this.label=i,this.sortable=!0,this.hidden=!1,this.formatter=void 0,this.checkEmpty=void 0,this.colspan=void 0}setIsSortable(l=!0){return this.sortable=l,this}setIsHidden(l=!0){return this.hidden=l,this}setFormatter(l=void 0){return this.formatter=l,this}setEmptyChecker(l=void 0){return this.checkEmpty=l,this}setColSpan(l=void 0){return this.colspan=void 0,this}}const M=(t,l,i=!0)=>new H(t,l).setIsSortable(i),z=(t,l,i=!0)=>new H(t,l).setIsSortable(i).setIsHidden(!0),j=(t,l,i,m)=>{if(!i)return 0;let f=t[i.key],a=l[i.key];if(m==="asc"){if(f>a)return 1;if(a>f)return-1}else{if(f>a)return-1;if(a>f)return 1}return 0},E=(t,l,i)=>t.formatter&&typeof t.formatter=="function"?t.formatter(l[t.key],l,t,i):l[t.key],P=(t,l,i)=>{if(!t.colspan)return-1;let m=l;return i.forEach(f=>{let a=$(t,f);a>0&&a<m&&(m=a)}),m},$=(t,l)=>t.colspan===!1?!1:typeof t.colspan=="function"?t.colspan(l):t.colspan,U=(t,l,i)=>{if(typeof t!="object"||!t.key||l.indexOf(t.key)>-1)return!1;let m=$(t,i);return typeof t.colspan>"u"?!0:(typeof t.colspan<"u"&&(typeof t.colspan=="function"?m=parseInt(t.colspan()):m=parseInt(t.colspan)),m>0)},G=(t=[])=>{if(t.length>0){for(let l=0;l<t.length;++l)if(t[l].sortable)return t[l].key}return""},J=(t,l)=>{if(t.length>0){for(let i=0;i<t.length;++i)if(t[i].key===l)return t[i]}return null},Q=["data-i","data-handle-drag"],W={key:0,"data-role":"drag-indicator"},X={key:1,"data-role":"invalid-drag-indicator"},Y=["data-column","colspan","title","onClick"],Z={name:"LktTableRow",inheritAttrs:!1},K=e.defineComponent({...Z,props:{isDraggable:{type:Boolean,default:!0},sortable:{type:Boolean,default:!0},i:{type:[Number],default:0},displayHiddenColumnsIndicator:{type:Boolean,default:!1},visibleColumns:{type:Array,default:()=>[]},emptyColumns:{type:Array,default:()=>[]},hiddenIsVisible:{type:Boolean,default:!1},item:{type:Object,default:()=>({})}},emits:["click","show"],setup(t,{emit:l}){const i=l,m=(a,s,d)=>{i("click",a,N.createLktEvent("",{item:s,column:d}))},f=(a,s)=>{i("show",a,N.createLktEvent("",{i:s}))};return(a,s)=>(e.openBlock(),e.createElementBlock("tr",{"data-i":t.i,"data-handle-drag":t.isDraggable},[t.sortable&&t.isDraggable?(e.openBlock(),e.createElementBlock("td",W)):t.sortable?(e.openBlock(),e.createElementBlock("td",X)):e.createCommentVNode("",!0),t.displayHiddenColumnsIndicator?(e.openBlock(),e.createElementBlock("td",{key:2,onClick:s[0]||(s[0]=d=>f(d,t.i)),"data-role":"show-more",class:e.normalizeClass(t.hiddenIsVisible?"state-open":"")},null,2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.visibleColumns,d=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(U)(d,t.emptyColumns,t.item)?(e.openBlock(),e.createElementBlock("td",{key:0,"data-column":d.key,colspan:e.unref($)(d,t.item),title:e.unref(E)(d,t.item,t.i),onClick:b=>m(b,t.item,d)},[a.$slots[d.key]?e.renderSlot(a.$slots,d.key,{key:0,value:t.item[d.key],item:t.item,column:d,i:t.i}):t.item?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(E)(d,t.item,t.i)),1)],64)):e.createCommentVNode("",!0)],8,Y)):e.createCommentVNode("",!0)],64))),256))],8,Q))}}),_={"data-role":"hidden-row"},v=["colspan"],ee=["data-column"],te=["data-i"],le=["data-column","title","onClick"],ne={name:"LktHiddenRow",inheritAttrs:!1},ae=e.defineComponent({...ne,props:{isDraggable:{type:Boolean,default:!0},sortable:{type:Boolean,default:!0},i:{type:[Number],default:0},hiddenColumnsColSpan:{type:Number,default:0},visibleColumns:{type:Array,default:()=>[]},hiddenColumns:{type:Array,default:()=>[]},emptyColumns:{type:Array,default:()=>[]},hiddenIsVisible:{type:Boolean,default:!1},item:{type:Object,default:()=>({})}},emits:["click"],setup(t,{emit:l}){const i=l,m=(f,a,s)=>{i("click",f,N.createLktEvent("",{item:a,column:s}))};return(f,a)=>e.withDirectives((e.openBlock(),e.createElementBlock("tr",_,[e.createElementVNode("td",{colspan:t.hiddenColumnsColSpan},[e.createElementVNode("table",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.hiddenColumns,s=>(e.openBlock(),e.createElementBlock("th",{"data-column":s.key},[e.createElementVNode("div",null,e.toDisplayString(s.label),1)],8,ee))),256))]),e.createElementVNode("tr",{"data-i":t.i},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.hiddenColumns,(s,d)=>(e.openBlock(),e.createElementBlock("td",{"data-column":s.key,title:e.unref(E)(s,t.item,d),onClick:b=>m(b,t.item,s)},[f.$slots[s.key]?e.renderSlot(f.$slots,s.key,{key:0,value:t.item[s.key],item:t.item,column:s,i:d}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(E)(s,t.item,d)),1)],64))],8,le))),256))],8,te)])],8,v)],512)),[[e.vShow,t.hiddenIsVisible]])}}),re=["data-sortable"],oe={key:0,"data-role":"drag-indicator"},ie={key:1},se=["data-column","data-sortable","data-sort","colspan","title","onClick"],de={key:1},ce={key:1,class:"lkt-empty-table"},me={name:"LktTable",inheritAttrs:!1},fe=e.defineComponent({...me,props:{modelValue:{type:Array,default:()=>[]},columns:{type:Array,default:()=>[]},sorter:{type:Function,default:j},sortable:{type:Boolean,default:!1},hideEmptyColumns:{type:Boolean,default:!1},draggableChecker:{type:Function,default:t=>!0},checkValidDrag:{type:Function,default:t=>!0},draggableItemKey:{type:String,default:"name"}},emits:["update:modelValue","sort","click"],setup(t,{expose:l,emit:i}){const m=i,f=e.useSlots(),a=t,s={},d=e.ref(typeof a.sorter=="function"?a.sorter:j),b=e.ref(G(a.columns)),C=e.ref("asc"),y=e.ref(a.modelValue),S=e.ref(s),O=e.ref(!1),L=R.generateRandomString(12),ke=e.computed(()=>y.value.length>0),V=e.computed(()=>{if(!a.hideEmptyColumns)return[];let n=[];return a.columns.forEach(r=>{let o=r.key,u=!1;y.value.forEach(k=>{if(typeof k.checkEmpty=="function")return k.checkEmpty(k);k[o]&&(u=!0)}),u||n.push(o)}),n}),B=e.computed(()=>a.columns.filter(n=>!n.hidden)),I=e.computed(()=>a.columns.filter(n=>n.hidden)),ye=e.computed(()=>{let n=B.value.length+1;return a.sortable&&++n,n}),D=e.computed(()=>I.value.length>0&&!a.sortable),he=e.computed(()=>a.columns.map(n=>n.key)),w=e.computed(()=>{let n=[];for(let r in f)he.value.indexOf(r)!==-1&&n.push(r);return n}),be=n=>{let r=n.target;if(typeof r.dataset.column>"u")do r=r.parentNode;while(typeof r.dataset.column>"u"&&r.tagName!=="TABLE"&&r.tagName!=="body");if(r.tagName==="TD"&&(r=r.parentNode,r=r.dataset.i,typeof r<"u"))return y.value[r]},F=n=>S.value["tr_"+n]===!0,q=n=>{!n||n.sortable&&(y.value=y.value.sort((r,o)=>d.value(r,o,n,C.value)),C.value=C.value==="asc"?"desc":"asc",b.value=n.key,m("sort",[b.value,C.value]))},T=(n,r)=>{m("click",n,r)},A=(n,r)=>{let o="tr_"+r.value.i;S.value[o]=typeof S.value[o]>"u"?!0:!S.value[o]};return e.onMounted(()=>{q(J(a.columns,b.value))}),e.watch(()=>a.modelValue,n=>y.value=n),e.watch(y,n=>m("update:modelValue",n)),l({getItemByEvent:be}),(n,r)=>ke.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"lkt-table","data-sortable":t.sortable},[e.createElementVNode("table",null,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[t.sortable?(e.openBlock(),e.createElementBlock("th",oe)):e.createCommentVNode("",!0),D.value?(e.openBlock(),e.createElementBlock("th",ie)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,o=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[V.value.indexOf(o.key)===-1?(e.openBlock(),e.createElementBlock("th",{key:0,"data-column":o.key,"data-sortable":o.sortable===!0,"data-sort":o.sortable===!0&&b.value===o.key?C.value:"",colspan:e.unref(P)(o,t.columns.length,y.value),title:o.label,onClick:u=>q(o)},[e.createElementVNode("div",null,e.toDisplayString(o.label),1)],8,se)):e.createCommentVNode("",!0)],64))),256))])]),t.sortable?(e.openBlock(),e.createBlock(e.unref(x.default),{key:0,modelValue:y.value,"onUpdate:modelValue":r[0]||(r[0]=o=>y.value=o),move:t.checkValidDrag,itemKey:t.draggableItemKey,onStart:r[1]||(r[1]=o=>O.value=!0),onEnd:r[2]||(r[2]=o=>O.value=!1),tag:"tbody",class:"lkt-sortable-table",handle:"[data-handle-drag]"},{item:e.withCtx(({element:o,index:u})=>[(e.openBlock(),e.createBlock(K,{key:e.unref(L)+"-"+u,i:u,item:o,"display-hidden-columns-indicator":D.value,"is-draggable":t.draggableChecker?t.draggableChecker(o):!0,sortable:t.sortable,"visible-columns":B.value,"empty-columns":V.value,"hidden-is-visible":F(u),onClick:T,onShow:A},e.createSlots({_:2},[e.renderList(w.value,k=>({name:k,fn:e.withCtx(h=>[e.renderSlot(n.$slots,k,{item:h.item,value:h.value,column:h.column})])}))]),1032,["i","item","display-hidden-columns-indicator","is-draggable","sortable","visible-columns","empty-columns","hidden-is-visible"]))]),_:3},8,["modelValue","move","itemKey"])):(e.openBlock(),e.createElementBlock("tbody",de,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,(o,u)=>(e.openBlock(),e.createBlock(K,{key:e.unref(L)+"-"+u,i:u,item:o,"display-hidden-columns-indicator":D.value,"is-draggable":t.draggableChecker?t.draggableChecker(o):!0,sortable:t.sortable,"visible-columns":B.value,"empty-columns":V.value,"hidden-is-visible":F(u),onClick:T,onShow:A},e.createSlots({_:2},[e.renderList(w.value,k=>({name:k,fn:e.withCtx(h=>[e.renderSlot(n.$slots,k,{item:h.item,value:h.value,column:h.column})])}))]),1032,["i","item","display-hidden-columns-indicator","is-draggable","sortable","visible-columns","empty-columns","hidden-is-visible"]))),128)),I.value.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(y.value,(o,u)=>(e.openBlock(),e.createBlock(ae,{key:e.unref(L)+"-"+u,i:u,item:o,"hidden-columns":I.value,"hidden-columns-col-span":ye.value,"is-draggable":t.draggableChecker?t.draggableChecker(o):!0,sortable:t.sortable,"visible-columns":B.value,"empty-columns":V.value,"hidden-is-visible":F(u),onClick:T,onShow:A},e.createSlots({_:2},[e.renderList(w.value,k=>({name:k,fn:e.withCtx(h=>[e.renderSlot(n.$slots,k,{item:h.item,value:h.value,column:h.column})])}))]),1032,["i","item","hidden-columns","hidden-columns-col-span","is-draggable","sortable","visible-columns","empty-columns","hidden-is-visible"]))),128)):e.createCommentVNode("",!0)]))])],8,re)):n.$slots["no-items"]?(e.openBlock(),e.createElementBlock("div",ce,[e.renderSlot(n.$slots,"no-items")])):e.createCommentVNode("",!0)}}),ue={install:t=>{t.component("lkt-table",fe)}};c.createColumn=M,c.createHiddenColumn=z,c.default=ue,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(u,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vuedraggable"),require("lkt-events"),require("lkt-string-tools")):typeof define=="function"&&define.amd?define(["exports","vue","vuedraggable","lkt-events","lkt-string-tools"],e):(u=typeof globalThis<"u"?globalThis:u||self,e(u.LktTable={},u.Vue,u.draggable,u.LktEvents,u.LktStringTools))})(this,function(u,e,S,$,R){"use strict";var $e=Object.defineProperty;var Le=(u,e,S)=>e in u?$e(u,e,{enumerable:!0,configurable:!0,writable:!0,value:S}):u[e]=S;var C=(u,e,S)=>(Le(u,typeof e!="symbol"?e+"":e,S),S);const M=(t=>t&&typeof t=="object"&&"default"in t?t:{default:t})(S);class B{constructor(l="",n=""){C(this,"key");C(this,"label");C(this,"sortable");C(this,"hidden");C(this,"editable");C(this,"formatter");C(this,"checkEmpty");C(this,"colspan");C(this,"type");C(this,"link");C(this,"action");C(this,"options");this.key=l,this.label=n,this.sortable=!0,this.hidden=!1,this.formatter=void 0,this.checkEmpty=void 0,this.colspan=void 0}setIsSortable(l=!0){return this.sortable=l,this}setIsEditable(l=!0){return this.editable=l,this}setIsHidden(l=!0){return this.hidden=l,this}setFormatter(l=void 0){return this.formatter=l,this}setEmptyChecker(l=void 0){return this.checkEmpty=l,this}setColSpan(l=void 0){return this.colspan=void 0,this}getHref(l){return typeof this.link=="function"?this.link(l):this.link}doAction(l){if(typeof this.action=="function")return this.action(l);console.warn("No action defined")}defineAsLink(l){return this.type="link",this.link=l,this}defineAsText(){return this.type="text",this}defineAsEmail(){return this.type="email",this}defineAsTel(){return this.type="tel",this}defineAsInt(){return this.type="int",this}defineAsFloat(){return this.type="float",this}defineAsCheck(){return this.type="check",this}defineAsSwitch(){return this.type="switch",this}defineAsAction(l){return this.type="action",this.action=l,this}defineAsSelect(l){return this.type="select",this.options=l,this}}const z=(t,l,n=!0)=>new B(t,l).setIsSortable(n),J=(t,l,n,s=!0)=>new B(t,l).setIsSortable(s).defineAsLink(n),P=(t,l,n,s=!0)=>new B(t,l).setIsSortable(s).defineAsAction(n),G=(t,l,n=!0)=>new B(t,l).setIsSortable(n).defineAsText(),Q=(t,l,n=!0)=>new B(t,l).setIsSortable(n).defineAsEmail(),W=(t,l,n=!0)=>new B(t,l).setIsSortable(n).defineAsTel(),X=(t,l,n=!0)=>new B(t,l).setIsSortable(n).defineAsCheck(),Y=(t,l,n=!0)=>new B(t,l).setIsSortable(n).defineAsSwitch(),Z=(t,l,n,s=!0)=>new B(t,l).setIsSortable(s).defineAsSelect(n),v=(t,l,n=!0)=>new B(t,l).setIsSortable(n).setIsHidden(!0),j=(t,l,n,s)=>{if(!n)return 0;let d=t[n.key],o=l[n.key];if(s==="asc"){if(d>o)return 1;if(o>d)return-1}else{if(d>o)return-1;if(o>d)return 1}return 0},E=(t,l,n)=>t.formatter&&typeof t.formatter=="function"?t.formatter(l[t.key],l,t,n):l[t.key],_=(t,l,n)=>{if(!t.colspan)return-1;let s=l;return n.forEach(d=>{let o=L(t,d);o>0&&o<s&&(s=o)}),s},L=(t,l)=>t.colspan===!1?!1:typeof t.colspan=="function"?t.colspan(l):t.colspan,ee=(t,l,n)=>{if(typeof t!="object"||!t.key||l.indexOf(t.key)>-1)return!1;let s=L(t,n);return typeof t.colspan>"u"?!0:(typeof t.colspan<"u"&&(typeof t.colspan=="function"?s=parseInt(t.colspan()):s=parseInt(t.colspan)),s>0)},te=(t=[])=>{if(t.length>0){for(let l=0;l<t.length;++l)if(t[l].sortable)return t[l].key}return""},le=(t,l)=>{if(t.length>0){for(let n=0;n<t.length;++n)if(t[n].key===l)return t[n]}return null},ne={name:"LktTableCell",inheritAttrs:!1},K=e.defineComponent({...ne,props:{column:{type:Object,default:()=>({})},i:{type:[Number],default:0},modelValue:{type:Object,default:()=>({})}},emits:["edited"],setup(t,{emit:l}){const n=l,s=t,d=e.ref(s.modelValue),o=e.ref(d.value[s.column.key]),y=e.ref(null);return e.watch(o,()=>{const b=JSON.parse(JSON.stringify(d.value));b[s.column.key]=o.value,n("edited",b,s.i)}),e.watch(()=>s.modelValue,b=>{d.value=b,o.value=d.value[s.column.key]}),(b,a)=>{const k=e.resolveComponent("router-link"),i=e.resolveComponent("lkt-field-text"),V=e.resolveComponent("lkt-field-check"),N=e.resolveComponent("lkt-field-switch"),w=e.resolveComponent("lkt-field-select");return t.column.type==="link"?(e.openBlock(),e.createBlock(k,{key:0,to:t.column.getHref(d.value)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(E)(t.column,d.value,t.i)),1)]),_:1},8,["to"])):t.column.type==="action"?(e.openBlock(),e.createElementBlock("a",{key:1,href:"#",onClick:a[0]||(a[0]=f=>t.column.doAction(d.value))},e.toDisplayString(e.unref(E)(t.column,d.value,t.i)),1)):t.column.type==="text"?(e.openBlock(),e.createBlock(i,{key:2,"read-mode":!t.column.editable,ref:f=>y.value=f,modelValue:o.value,"onUpdate:modelValue":a[1]||(a[1]=f=>o.value=f)},null,8,["read-mode","modelValue"])):t.column.type==="email"?(e.openBlock(),e.createBlock(i,{key:3,"read-mode":!t.column.editable,ref:f=>y.value=f,"is-email":"",modelValue:o.value,"onUpdate:modelValue":a[2]||(a[2]=f=>o.value=f)},null,8,["read-mode","modelValue"])):t.column.type==="tel"?(e.openBlock(),e.createBlock(i,{key:4,"read-mode":!t.column.editable,ref:f=>y.value=f,"is-tel":"",modelValue:o.value,"onUpdate:modelValue":a[3]||(a[3]=f=>o.value=f)},null,8,["read-mode","modelValue"])):t.column.type==="check"?(e.openBlock(),e.createBlock(V,{key:5,"read-mode":!t.column.editable,ref:f=>y.value=f,modelValue:o.value,"onUpdate:modelValue":a[4]||(a[4]=f=>o.value=f)},null,8,["read-mode","modelValue"])):t.column.type==="switch"?(e.openBlock(),e.createBlock(N,{key:6,"read-mode":!t.column.editable,ref:f=>y.value=f,modelValue:o.value,"onUpdate:modelValue":a[5]||(a[5]=f=>o.value=f)},null,8,["read-mode","modelValue"])):t.column.type==="select"?(e.openBlock(),e.createBlock(w,{key:7,"read-mode":!t.column.editable,ref:f=>y.value=f,modelValue:o.value,"onUpdate:modelValue":a[6]||(a[6]=f=>o.value=f),options:t.column.options},null,8,["read-mode","modelValue","options"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:8},[e.createTextVNode(e.toDisplayString(e.unref(E)(t.column,d.value,t.i)),1)],64))}}}),ae=["data-i","data-handle-drag"],oe={key:0,"data-role":"drag-indicator"},re={key:1,"data-role":"invalid-drag-indicator"},ie=["data-column","colspan","title","onClick"],de={name:"LktTableRow",inheritAttrs:!1},q=e.defineComponent({...de,props:{isDraggable:{type:Boolean,default:!0},sortable:{type:Boolean,default:!0},i:{type:[Number],default:0},displayHiddenColumnsIndicator:{type:Boolean,default:!1},visibleColumns:{type:Array,default:()=>[]},emptyColumns:{type:Array,default:()=>[]},hiddenIsVisible:{type:Boolean,default:!1},item:{type:Object,default:()=>({})}},emits:["edited","click","show"],setup(t,{emit:l}){const n=l,s=t,d=e.ref(s.item),o=(a,k,i)=>{n("click",a,$.createLktEvent("",{item:k,column:i}))},y=(a,k)=>{n("show",a,$.createLktEvent("",{i:k}))},b=(a,k)=>{d.value=a};return e.watch(()=>s.item,a=>d.value=a),e.watch(d,()=>n("edited",d.value,s.i)),(a,k)=>(e.openBlock(),e.createElementBlock("tr",{"data-i":t.i,"data-handle-drag":t.isDraggable},[t.sortable&&t.isDraggable?(e.openBlock(),e.createElementBlock("td",oe)):t.sortable?(e.openBlock(),e.createElementBlock("td",re)):e.createCommentVNode("",!0),t.displayHiddenColumnsIndicator?(e.openBlock(),e.createElementBlock("td",{key:2,onClick:k[0]||(k[0]=i=>y(i,t.i)),"data-role":"show-more",class:e.normalizeClass(t.hiddenIsVisible?"state-open":"")},null,2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.visibleColumns,i=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(ee)(i,t.emptyColumns,t.item)?(e.openBlock(),e.createElementBlock("td",{key:0,"data-column":i.key,colspan:e.unref(L)(i,t.item),title:e.unref(E)(i,t.item,t.i),onClick:V=>o(V,t.item,i)},[a.$slots[i.key]?e.renderSlot(a.$slots,i.key,{key:0,value:t.item[i.key],item:t.item,column:i,i:t.i}):t.item?(e.openBlock(),e.createBlock(K,{key:1,column:i,modelValue:d.value,"onUpdate:modelValue":k[1]||(k[1]=V=>d.value=V),i:t.i,onEdited:b},null,8,["column","modelValue","i"])):e.createCommentVNode("",!0)],8,ie)):e.createCommentVNode("",!0)],64))),256))],8,ae))}}),se={"data-role":"hidden-row"},ce=["colspan"],me=["data-column"],ue=["data-i"],fe=["data-column","title","onClick"],ke={name:"LktHiddenRow",inheritAttrs:!1},ye=e.defineComponent({...ke,props:{isDraggable:{type:Boolean,default:!0},sortable:{type:Boolean,default:!0},i:{type:[Number],default:0},hiddenColumnsColSpan:{type:Number,default:0},visibleColumns:{type:Array,default:()=>[]},hiddenColumns:{type:Array,default:()=>[]},emptyColumns:{type:Array,default:()=>[]},hiddenIsVisible:{type:Boolean,default:!1},modelValue:{type:Object,default:()=>({})}},emits:["update:modelValue","click"],setup(t,{emit:l}){const n=l,s=t,d=e.ref(s.modelValue),o=(y,b,a)=>{n("click",y,$.createLktEvent("",{item:b,column:a}))};return e.watch(()=>s.modelValue,y=>d.value=y),e.watch(d,()=>n("update:modelValue",d.value)),(y,b)=>e.withDirectives((e.openBlock(),e.createElementBlock("tr",se,[e.createElementVNode("td",{colspan:t.hiddenColumnsColSpan},[e.createElementVNode("table",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.hiddenColumns,a=>(e.openBlock(),e.createElementBlock("th",{"data-column":a.key},[e.createElementVNode("div",null,e.toDisplayString(a.label),1)],8,me))),256))]),e.createElementVNode("tr",{"data-i":t.i},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.hiddenColumns,(a,k)=>(e.openBlock(),e.createElementBlock("td",{"data-column":a.key,title:e.unref(E)(a,d.value,k),onClick:i=>o(i,d.value,a)},[y.$slots[a.key]?e.renderSlot(y.$slots,a.key,{key:0,value:d.value[a.key],item:d.value,column:a,i:k}):(e.openBlock(),e.createBlock(K,{key:1,column:a,modelValue:d.value,"onUpdate:modelValue":b[0]||(b[0]=i=>d.value=i),i:k},null,8,["column","modelValue","i"]))],8,fe))),256))],8,ue)])],8,ce)],512)),[[e.vShow,t.hiddenIsVisible]])}}),he=["data-sortable"],be={key:0,"data-role":"drag-indicator"},pe={key:1},Ce=["data-column","data-sortable","data-sort","colspan","title","onClick"],ge={key:1},Be={key:1,class:"lkt-empty-table"},Ve={name:"LktTable",inheritAttrs:!1},Se=e.defineComponent({...Ve,props:{modelValue:{type:Array,default:()=>[]},columns:{type:Array,default:()=>[]},sorter:{type:Function,default:j},sortable:{type:Boolean,default:!1},hideEmptyColumns:{type:Boolean,default:!1},draggableChecker:{type:Function,default:t=>!0},checkValidDrag:{type:Function,default:t=>!0},draggableItemKey:{type:String,default:"name"}},emits:["update:modelValue","sort","click"],setup(t,{expose:l,emit:n}){const s=n,d=e.useSlots(),o=t,y={},b=e.ref(typeof o.sorter=="function"?o.sorter:j),a=e.ref(te(o.columns)),k=e.ref("asc"),i=e.ref(o.modelValue),V=e.ref(y),N=e.ref(!1),w=R.generateRandomString(12),f=e.computed(()=>i.value.length>0),I=e.computed(()=>{if(!o.hideEmptyColumns)return[];let r=[];return o.columns.forEach(c=>{let m=c.key,h=!1;i.value.forEach(p=>{if(typeof p.checkEmpty=="function")return p.checkEmpty(p);p[m]&&(h=!0)}),h||r.push(m)}),r}),A=e.computed(()=>o.columns.filter(r=>!r.hidden)),T=e.computed(()=>o.columns.filter(r=>r.hidden)),we=e.computed(()=>{let r=A.value.length+1;return o.sortable&&++r,r}),D=e.computed(()=>T.value.length>0&&!o.sortable),Ae=e.computed(()=>o.columns.map(r=>r.key)),F=e.computed(()=>{let r=[];for(let c in d)Ae.value.indexOf(c)!==-1&&r.push(c);return r}),Ne=r=>{let c=r.target;if(typeof c.dataset.column>"u")do c=c.parentNode;while(typeof c.dataset.column>"u"&&c.tagName!=="TABLE"&&c.tagName!=="body");if(c.tagName==="TD"&&(c=c.parentNode,c=c.dataset.i,typeof c<"u"))return i.value[c]},H=r=>V.value["tr_"+r]===!0,x=r=>{!r||r.sortable&&(i.value=i.value.sort((c,m)=>b.value(c,m,r,k.value)),k.value=k.value==="asc"?"desc":"asc",a.value=r.key,s("sort",[a.value,k.value]))},O=(r,c)=>{s("click",r,c)},U=(r,c)=>{let m="tr_"+c.value.i;V.value[m]=typeof V.value[m]>"u"?!0:!V.value[m]},Ie=(r,c)=>{i.value[c]=r};return e.onMounted(()=>{x(le(o.columns,a.value))}),e.watch(()=>o.modelValue,r=>i.value=r),e.watch(i,r=>{s("update:modelValue",r)}),l({getItemByEvent:Ne}),(r,c)=>f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"lkt-table","data-sortable":t.sortable},[e.createElementVNode("table",null,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[t.sortable?(e.openBlock(),e.createElementBlock("th",be)):e.createCommentVNode("",!0),D.value?(e.openBlock(),e.createElementBlock("th",pe)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(A.value,m=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[I.value.indexOf(m.key)===-1?(e.openBlock(),e.createElementBlock("th",{key:0,"data-column":m.key,"data-sortable":m.sortable===!0,"data-sort":m.sortable===!0&&a.value===m.key?k.value:"",colspan:e.unref(_)(m,t.columns.length,i.value),title:m.label,onClick:h=>x(m)},[e.createElementVNode("div",null,e.toDisplayString(m.label),1)],8,Ce)):e.createCommentVNode("",!0)],64))),256))])]),t.sortable?(e.openBlock(),e.createBlock(e.unref(M.default),{key:0,modelValue:i.value,"onUpdate:modelValue":c[0]||(c[0]=m=>i.value=m),move:t.checkValidDrag,itemKey:t.draggableItemKey,onStart:c[1]||(c[1]=m=>N.value=!0),onEnd:c[2]||(c[2]=m=>N.value=!1),tag:"tbody",class:"lkt-sortable-table",handle:"[data-handle-drag]"},{item:e.withCtx(({element:m,index:h})=>[(e.openBlock(),e.createBlock(q,{key:e.unref(w)+"-"+h,i:h,item:m,"display-hidden-columns-indicator":D.value,"is-draggable":t.draggableChecker?t.draggableChecker(m):!0,sortable:t.sortable,"visible-columns":A.value,"empty-columns":I.value,"hidden-is-visible":H(h),onClick:O,onShow:U},e.createSlots({_:2},[e.renderList(F.value,p=>({name:p,fn:e.withCtx(g=>[e.renderSlot(r.$slots,p,{item:g.item,value:g.value,column:g.column})])}))]),1032,["i","item","display-hidden-columns-indicator","is-draggable","sortable","visible-columns","empty-columns","hidden-is-visible"]))]),_:3},8,["modelValue","move","itemKey"])):(e.openBlock(),e.createElementBlock("tbody",ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(m,h)=>(e.openBlock(),e.createBlock(q,{key:e.unref(w)+"-"+h,i:h,item:m,"display-hidden-columns-indicator":D.value,"is-draggable":t.draggableChecker?t.draggableChecker(m):!0,sortable:t.sortable,"visible-columns":A.value,"empty-columns":I.value,"hidden-is-visible":H(h),onClick:O,onShow:U,onEdited:Ie},e.createSlots({_:2},[e.renderList(F.value,p=>({name:p,fn:e.withCtx(g=>[e.renderSlot(r.$slots,p,{item:g.item,value:g.value,column:g.column})])}))]),1032,["i","item","display-hidden-columns-indicator","is-draggable","sortable","visible-columns","empty-columns","hidden-is-visible"]))),128)),T.value.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,(m,h)=>(e.openBlock(),e.createBlock(ye,{key:e.unref(w)+"-"+h,i:h,item:m,"hidden-columns":T.value,"hidden-columns-col-span":we.value,"is-draggable":t.draggableChecker?t.draggableChecker(m):!0,sortable:t.sortable,"visible-columns":A.value,"empty-columns":I.value,"hidden-is-visible":H(h),onClick:O,onShow:U},e.createSlots({_:2},[e.renderList(F.value,p=>({name:p,fn:e.withCtx(g=>[e.renderSlot(r.$slots,p,{item:g.item,value:g.value,column:g.column})])}))]),1032,["i","item","hidden-columns","hidden-columns-col-span","is-draggable","sortable","visible-columns","empty-columns","hidden-is-visible"]))),128)):e.createCommentVNode("",!0)]))])],8,he)):r.$slots["no-items"]?(e.openBlock(),e.createElementBlock("div",Be,[e.renderSlot(r.$slots,"no-items")])):e.createCommentVNode("",!0)}}),Ee={install:t=>{t.component("lkt-table",Se)}};u.createActionColumn=P,u.createCheckColumn=X,u.createColumn=z,u.createEmailColumn=Q,u.createHiddenColumn=v,u.createLinkColumn=J,u.createSelectColumn=Z,u.createSwitchColumn=Y,u.createTelColumn=W,u.createTextColumn=G,u.default=Ee,Object.defineProperties(u,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -1,7 +1,7 @@
1
1
  import { LktTableColumn } from "../instances/LktTableColumn";
2
2
  import { PropType } from "vue/dist/vue";
3
3
  declare const _default: {
4
- new (...args: any[]): import("@vue/runtime-core").CreateComponentPublicInstance<Readonly<import("@vue/runtime-core").ExtractPropTypes<{
4
+ new (...args: any[]): import("vue/dist/vue").CreateComponentPublicInstance<Readonly<import("vue/dist/vue").ExtractPropTypes<{
5
5
  isDraggable: {
6
6
  type: BooleanConstructor;
7
7
  default: boolean;
@@ -34,13 +34,14 @@ declare const _default: {
34
34
  type: BooleanConstructor;
35
35
  default: boolean;
36
36
  };
37
- item: {
37
+ modelValue: {
38
38
  type: PropType<any>;
39
39
  default: () => {};
40
40
  };
41
41
  }>> & {
42
42
  onClick?: ((...args: any[]) => any) | undefined;
43
- }, {}, unknown, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, "click"[], import("@vue/runtime-core").VNodeProps & import("@vue/runtime-core").AllowedComponentProps & import("@vue/runtime-core").ComponentCustomProps & Readonly<import("@vue/runtime-core").ExtractPropTypes<{
43
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
44
+ }, {}, unknown, {}, {}, import("vue/dist/vue").ComponentOptionsMixin, import("vue/dist/vue").ComponentOptionsMixin, ("click" | "update:modelValue")[], import("vue/dist/vue").VNodeProps & import("vue/dist/vue").AllowedComponentProps & import("vue/dist/vue").ComponentCustomProps & Readonly<import("vue/dist/vue").ExtractPropTypes<{
44
45
  isDraggable: {
45
46
  type: BooleanConstructor;
46
47
  default: boolean;
@@ -73,15 +74,16 @@ declare const _default: {
73
74
  type: BooleanConstructor;
74
75
  default: boolean;
75
76
  };
76
- item: {
77
+ modelValue: {
77
78
  type: PropType<any>;
78
79
  default: () => {};
79
80
  };
80
81
  }>> & {
81
82
  onClick?: ((...args: any[]) => any) | undefined;
83
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
82
84
  }, {
83
- item: any;
84
85
  i: number;
86
+ modelValue: any;
85
87
  isDraggable: boolean;
86
88
  sortable: boolean;
87
89
  hiddenColumnsColSpan: number;
@@ -96,7 +98,7 @@ declare const _default: {
96
98
  C: {};
97
99
  M: {};
98
100
  Defaults: {};
99
- }, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
101
+ }, Readonly<import("vue/dist/vue").ExtractPropTypes<{
100
102
  isDraggable: {
101
103
  type: BooleanConstructor;
102
104
  default: boolean;
@@ -129,15 +131,16 @@ declare const _default: {
129
131
  type: BooleanConstructor;
130
132
  default: boolean;
131
133
  };
132
- item: {
134
+ modelValue: {
133
135
  type: PropType<any>;
134
136
  default: () => {};
135
137
  };
136
138
  }>> & {
137
139
  onClick?: ((...args: any[]) => any) | undefined;
140
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
138
141
  }, {}, {}, {}, {}, {
139
- item: any;
140
142
  i: number;
143
+ modelValue: any;
141
144
  isDraggable: boolean;
142
145
  sortable: boolean;
143
146
  hiddenColumnsColSpan: number;
@@ -149,7 +152,7 @@ declare const _default: {
149
152
  __isFragment?: undefined;
150
153
  __isTeleport?: undefined;
151
154
  __isSuspense?: undefined;
152
- } & import("@vue/runtime-core").ComponentOptionsBase<Readonly<import("@vue/runtime-core").ExtractPropTypes<{
155
+ } & import("vue/dist/vue").ComponentOptionsBase<Readonly<import("vue/dist/vue").ExtractPropTypes<{
153
156
  isDraggable: {
154
157
  type: BooleanConstructor;
155
158
  default: boolean;
@@ -182,15 +185,16 @@ declare const _default: {
182
185
  type: BooleanConstructor;
183
186
  default: boolean;
184
187
  };
185
- item: {
188
+ modelValue: {
186
189
  type: PropType<any>;
187
190
  default: () => {};
188
191
  };
189
192
  }>> & {
190
193
  onClick?: ((...args: any[]) => any) | undefined;
191
- }, {}, unknown, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, "click"[], "click", {
192
- item: any;
194
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
195
+ }, {}, unknown, {}, {}, import("vue/dist/vue").ComponentOptionsMixin, import("vue/dist/vue").ComponentOptionsMixin, ("click" | "update:modelValue")[], "click" | "update:modelValue", {
193
196
  i: number;
197
+ modelValue: any;
194
198
  isDraggable: boolean;
195
199
  sortable: boolean;
196
200
  hiddenColumnsColSpan: number;
@@ -198,7 +202,7 @@ declare const _default: {
198
202
  hiddenColumns: LktTableColumn[];
199
203
  emptyColumns: string[];
200
204
  hiddenIsVisible: boolean;
201
- }, {}, string, {}> & import("@vue/runtime-core").VNodeProps & import("@vue/runtime-core").AllowedComponentProps & import("@vue/runtime-core").ComponentCustomProps & (new () => {
205
+ }, {}, string, {}> & import("vue/dist/vue").VNodeProps & import("vue/dist/vue").AllowedComponentProps & import("vue/dist/vue").ComponentCustomProps & (new () => {
202
206
  $slots: Record<string, {
203
207
  value: any;
204
208
  item: any;
@@ -0,0 +1,91 @@
1
+ import { LktTableColumn } from "../instances/LktTableColumn";
2
+ import { PropType } from "vue/dist/vue";
3
+ import { LktObject } from "lkt-ts-interfaces";
4
+ declare const _default: {
5
+ new (...args: any[]): import("vue/dist/vue").CreateComponentPublicInstance<Readonly<import("vue/dist/vue").ExtractPropTypes<{
6
+ column: {
7
+ type: PropType<LktTableColumn>;
8
+ default: () => {};
9
+ };
10
+ i: {
11
+ type: NumberConstructor[];
12
+ default: number;
13
+ };
14
+ modelValue: {
15
+ type: PropType<LktObject>;
16
+ default: () => {};
17
+ };
18
+ }>> & {
19
+ onEdited?: ((...args: any[]) => any) | undefined;
20
+ }, {}, unknown, {}, {}, import("vue/dist/vue").ComponentOptionsMixin, import("vue/dist/vue").ComponentOptionsMixin, "edited"[], import("vue/dist/vue").VNodeProps & import("vue/dist/vue").AllowedComponentProps & import("vue/dist/vue").ComponentCustomProps & Readonly<import("vue/dist/vue").ExtractPropTypes<{
21
+ column: {
22
+ type: PropType<LktTableColumn>;
23
+ default: () => {};
24
+ };
25
+ i: {
26
+ type: NumberConstructor[];
27
+ default: number;
28
+ };
29
+ modelValue: {
30
+ type: PropType<LktObject>;
31
+ default: () => {};
32
+ };
33
+ }>> & {
34
+ onEdited?: ((...args: any[]) => any) | undefined;
35
+ }, {
36
+ i: number;
37
+ column: LktTableColumn;
38
+ modelValue: LktObject;
39
+ }, true, {}, {}, {
40
+ P: {};
41
+ B: {};
42
+ D: {};
43
+ C: {};
44
+ M: {};
45
+ Defaults: {};
46
+ }, Readonly<import("vue/dist/vue").ExtractPropTypes<{
47
+ column: {
48
+ type: PropType<LktTableColumn>;
49
+ default: () => {};
50
+ };
51
+ i: {
52
+ type: NumberConstructor[];
53
+ default: number;
54
+ };
55
+ modelValue: {
56
+ type: PropType<LktObject>;
57
+ default: () => {};
58
+ };
59
+ }>> & {
60
+ onEdited?: ((...args: any[]) => any) | undefined;
61
+ }, {}, {}, {}, {}, {
62
+ i: number;
63
+ column: LktTableColumn;
64
+ modelValue: LktObject;
65
+ }>;
66
+ __isFragment?: undefined;
67
+ __isTeleport?: undefined;
68
+ __isSuspense?: undefined;
69
+ } & import("vue/dist/vue").ComponentOptionsBase<Readonly<import("vue/dist/vue").ExtractPropTypes<{
70
+ column: {
71
+ type: PropType<LktTableColumn>;
72
+ default: () => {};
73
+ };
74
+ i: {
75
+ type: NumberConstructor[];
76
+ default: number;
77
+ };
78
+ modelValue: {
79
+ type: PropType<LktObject>;
80
+ default: () => {};
81
+ };
82
+ }>> & {
83
+ onEdited?: ((...args: any[]) => any) | undefined;
84
+ }, {}, unknown, {}, {}, import("vue/dist/vue").ComponentOptionsMixin, import("vue/dist/vue").ComponentOptionsMixin, "edited"[], "edited", {
85
+ i: number;
86
+ column: LktTableColumn;
87
+ modelValue: LktObject;
88
+ }, {}, string, {}> & import("vue/dist/vue").VNodeProps & import("vue/dist/vue").AllowedComponentProps & import("vue/dist/vue").ComponentCustomProps & (new () => {
89
+ $slots: {};
90
+ });
91
+ export default _default;
@@ -1,7 +1,7 @@
1
1
  import { LktTableColumn } from "../instances/LktTableColumn";
2
2
  import { PropType } from "vue/dist/vue";
3
3
  declare const _default: {
4
- new (...args: any[]): import("@vue/runtime-core").CreateComponentPublicInstance<Readonly<import("@vue/runtime-core").ExtractPropTypes<{
4
+ new (...args: any[]): import("vue/dist/vue").CreateComponentPublicInstance<Readonly<import("vue/dist/vue").ExtractPropTypes<{
5
5
  isDraggable: {
6
6
  type: BooleanConstructor;
7
7
  default: boolean;
@@ -36,8 +36,9 @@ declare const _default: {
36
36
  };
37
37
  }>> & {
38
38
  onClick?: ((...args: any[]) => any) | undefined;
39
+ onEdited?: ((...args: any[]) => any) | undefined;
39
40
  onShow?: ((...args: any[]) => any) | undefined;
40
- }, {}, unknown, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, ("show" | "click")[], import("@vue/runtime-core").VNodeProps & import("@vue/runtime-core").AllowedComponentProps & import("@vue/runtime-core").ComponentCustomProps & Readonly<import("@vue/runtime-core").ExtractPropTypes<{
41
+ }, {}, unknown, {}, {}, import("vue/dist/vue").ComponentOptionsMixin, import("vue/dist/vue").ComponentOptionsMixin, ("show" | "click" | "edited")[], import("vue/dist/vue").VNodeProps & import("vue/dist/vue").AllowedComponentProps & import("vue/dist/vue").ComponentCustomProps & Readonly<import("vue/dist/vue").ExtractPropTypes<{
41
42
  isDraggable: {
42
43
  type: BooleanConstructor;
43
44
  default: boolean;
@@ -72,6 +73,7 @@ declare const _default: {
72
73
  };
73
74
  }>> & {
74
75
  onClick?: ((...args: any[]) => any) | undefined;
76
+ onEdited?: ((...args: any[]) => any) | undefined;
75
77
  onShow?: ((...args: any[]) => any) | undefined;
76
78
  }, {
77
79
  item: any;
@@ -89,7 +91,7 @@ declare const _default: {
89
91
  C: {};
90
92
  M: {};
91
93
  Defaults: {};
92
- }, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
94
+ }, Readonly<import("vue/dist/vue").ExtractPropTypes<{
93
95
  isDraggable: {
94
96
  type: BooleanConstructor;
95
97
  default: boolean;
@@ -124,6 +126,7 @@ declare const _default: {
124
126
  };
125
127
  }>> & {
126
128
  onClick?: ((...args: any[]) => any) | undefined;
129
+ onEdited?: ((...args: any[]) => any) | undefined;
127
130
  onShow?: ((...args: any[]) => any) | undefined;
128
131
  }, {}, {}, {}, {}, {
129
132
  item: any;
@@ -138,7 +141,7 @@ declare const _default: {
138
141
  __isFragment?: undefined;
139
142
  __isTeleport?: undefined;
140
143
  __isSuspense?: undefined;
141
- } & import("@vue/runtime-core").ComponentOptionsBase<Readonly<import("@vue/runtime-core").ExtractPropTypes<{
144
+ } & import("vue/dist/vue").ComponentOptionsBase<Readonly<import("vue/dist/vue").ExtractPropTypes<{
142
145
  isDraggable: {
143
146
  type: BooleanConstructor;
144
147
  default: boolean;
@@ -173,8 +176,9 @@ declare const _default: {
173
176
  };
174
177
  }>> & {
175
178
  onClick?: ((...args: any[]) => any) | undefined;
179
+ onEdited?: ((...args: any[]) => any) | undefined;
176
180
  onShow?: ((...args: any[]) => any) | undefined;
177
- }, {}, unknown, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, ("show" | "click")[], "show" | "click", {
181
+ }, {}, unknown, {}, {}, import("vue/dist/vue").ComponentOptionsMixin, import("vue/dist/vue").ComponentOptionsMixin, ("show" | "click" | "edited")[], "show" | "click" | "edited", {
178
182
  item: any;
179
183
  i: number;
180
184
  isDraggable: boolean;
@@ -183,7 +187,7 @@ declare const _default: {
183
187
  emptyColumns: string[];
184
188
  hiddenIsVisible: boolean;
185
189
  displayHiddenColumnsIndicator: boolean;
186
- }, {}, string, {}> & import("@vue/runtime-core").VNodeProps & import("@vue/runtime-core").AllowedComponentProps & import("@vue/runtime-core").ComponentCustomProps & (new () => {
190
+ }, {}, string, {}> & import("vue/dist/vue").VNodeProps & import("vue/dist/vue").AllowedComponentProps & import("vue/dist/vue").ComponentCustomProps & (new () => {
187
191
  $slots: Record<string, {
188
192
  value: any;
189
193
  item: any;
@@ -1,5 +1,6 @@
1
1
  import { LktTableColumn } from "../instances/LktTableColumn";
2
2
  import { LktObject } from "lkt-ts-interfaces";
3
+ import { Option } from "lkt-field-select/dist/types/types/Option";
3
4
  /**
4
5
  *
5
6
  * @param key
@@ -8,6 +9,14 @@ import { LktObject } from "lkt-ts-interfaces";
8
9
  * @returns {LktTableColumn}
9
10
  */
10
11
  export declare const createColumn: (key: string, label: string, sortable?: boolean) => LktTableColumn;
12
+ export declare const createLinkColumn: (key: string, label: string, href: string | Function, sortable?: boolean) => LktTableColumn;
13
+ export declare const createActionColumn: (key: string, label: string, action: Function, sortable?: boolean) => LktTableColumn;
14
+ export declare const createTextColumn: (key: string, label: string, sortable?: boolean) => LktTableColumn;
15
+ export declare const createEmailColumn: (key: string, label: string, sortable?: boolean) => LktTableColumn;
16
+ export declare const createTelColumn: (key: string, label: string, sortable?: boolean) => LktTableColumn;
17
+ export declare const createCheckColumn: (key: string, label: string, sortable?: boolean) => LktTableColumn;
18
+ export declare const createSwitchColumn: (key: string, label: string, sortable?: boolean) => LktTableColumn;
19
+ export declare const createSelectColumn: (key: string, label: string, options: Option[], sortable?: boolean) => LktTableColumn;
11
20
  export declare const createHiddenColumn: (key: string, label: string, sortable?: boolean) => LktTableColumn;
12
21
  /**
13
22
  *
@@ -0,0 +1,6 @@
1
+ import { App } from "vue";
2
+ export { createColumn, createHiddenColumn, createLinkColumn, createActionColumn, createTextColumn, createCheckColumn, createSwitchColumn, createSelectColumn, createEmailColumn, createTelColumn } from "./functions/table-functions";
3
+ declare const LktTable: {
4
+ install: (app: App) => void;
5
+ };
6
+ export default LktTable;
@@ -0,0 +1,39 @@
1
+ declare namespace _default {
2
+ const plugins: import("vite").Plugin[];
3
+ namespace resolve {
4
+ const alias: {
5
+ '@': string;
6
+ '@test': string;
7
+ };
8
+ }
9
+ namespace build {
10
+ export namespace lib {
11
+ const entry: string;
12
+ const name: string;
13
+ function fileName(format: any): string;
14
+ }
15
+ export { outDir };
16
+ export const minify: boolean;
17
+ export namespace rollupOptions {
18
+ const external: string[];
19
+ namespace output {
20
+ const globals: {
21
+ vue: string;
22
+ vuedraggable: string;
23
+ "lkt-string-tools": string;
24
+ "lkt-ts-interfaces": string;
25
+ "lkt-events": string;
26
+ };
27
+ const sourcemapExcludeSources: boolean;
28
+ }
29
+ }
30
+ }
31
+ namespace test {
32
+ namespace coverage {
33
+ const reporter: string[];
34
+ }
35
+ function resolveSnapshotPath(testPath: any, snapExtension: any): string;
36
+ }
37
+ }
38
+ export default _default;
39
+ declare const outDir: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lkt-table",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "",
5
5
  "main": "src/index.ts",
6
6
  "module": "src/index.ts",
@@ -60,9 +60,14 @@
60
60
  },
61
61
  "dependencies": {
62
62
  "lkt-events": "^1.0.2",
63
+ "lkt-field-check": "git+https://github.com/lekrat/lkt-field-check.git",
64
+ "lkt-field-select": "git+https://github.com/lekrat/lkt-field-select.git",
65
+ "lkt-field-switch": "git+https://github.com/lekrat/lkt-field-switch.git",
66
+ "lkt-field-text": "git+https://github.com/lekrat/lkt-field-text.git",
63
67
  "lkt-string-tools": "^1.0.3",
64
68
  "lkt-ts-interfaces": "^1.0.2",
65
69
  "vue": "^3.3",
70
+ "vue-router": "^4.2.5",
66
71
  "vuedraggable": "^4.1.0"
67
72
  },
68
73
  "engines": {
@@ -7,8 +7,10 @@ import {createLktEvent} from "lkt-events";
7
7
  import {getColumnDisplayContent} from "../functions/table-functions";
8
8
  import {LktTableColumn} from "../instances/LktTableColumn";
9
9
  import {PropType} from "vue/dist/vue";
10
+ import LktTableCell from "./LktTableCell.vue";
11
+ import {ref, watch} from "vue";
10
12
 
11
- const emit = defineEmits(['click']);
13
+ const emit = defineEmits(['update:modelValue', 'click']);
12
14
 
13
15
  const props = defineProps({
14
16
  isDraggable: {type: Boolean, default: true},
@@ -19,12 +21,17 @@ const props = defineProps({
19
21
  hiddenColumns: {type: Array as PropType<LktTableColumn[]>, default: (): LktTableColumn[] => []},
20
22
  emptyColumns: {type: Array as PropType<string[]>, default: (): string[] => []},
21
23
  hiddenIsVisible: {type: Boolean, default: false},
22
- item: {type: Object as PropType<any>, default: () => ({})},
24
+ modelValue: {type: Object as PropType<any>, default: () => ({})},
23
25
  });
24
26
 
27
+ const item = ref(props.modelValue);
28
+
25
29
  const onClick = ($event: any, item: any, column: LktTableColumn) => {
26
30
  emit('click', $event, createLktEvent('', {item, column}))
27
31
  };
32
+
33
+ watch(() => props.modelValue, (v) => item.value = v);
34
+ watch(item, () => emit('update:modelValue', item.value));
28
35
  </script>
29
36
 
30
37
  <template>
@@ -49,7 +56,7 @@ const onClick = ($event: any, item: any, column: LktTableColumn) => {
49
56
  v-bind:i="i"></slot>
50
57
  </template>
51
58
  <template v-else>
52
- {{ getColumnDisplayContent(column, item, i) }}
59
+ <lkt-table-cell :column="column" v-model="item" :i="i"></lkt-table-cell>
53
60
  </template>
54
61
  </td>
55
62
  </tr>
@@ -0,0 +1,76 @@
1
+ <script lang="ts">
2
+ export default {name: "LktTableCell", inheritAttrs: false}
3
+ </script>
4
+
5
+ <script lang="ts" setup>
6
+ import {getColumnDisplayContent} from "../functions/table-functions";
7
+ import {LktTableColumn} from "../instances/LktTableColumn";
8
+ import {PropType} from "vue/dist/vue";
9
+ import {ref, watch} from "vue";
10
+ import {LktObject} from "lkt-ts-interfaces";
11
+
12
+ const emit = defineEmits(['edited']);
13
+
14
+ const props = defineProps({
15
+ column: {type: Object as PropType<LktTableColumn>, default: () => ({})},
16
+ i: {type: [Number], default: 0},
17
+ modelValue: {type: Object as PropType<LktObject>, default: () => ({})},
18
+ });
19
+
20
+ const item = ref(props.modelValue),
21
+ value = ref(item.value[props.column.key]),
22
+ inputElement = ref(null);
23
+
24
+ watch(value, () => {
25
+ const payload = JSON.parse(JSON.stringify(item.value));
26
+ payload[props.column.key] = value.value;
27
+ emit('edited', payload, props.i);
28
+ })
29
+
30
+ watch(() => props.modelValue, (v) => {
31
+ item.value = v
32
+ value.value = item.value[props.column.key];
33
+ });
34
+ </script>
35
+
36
+ <template>
37
+ <template v-if="column.type === 'link'">
38
+ <router-link :to="column.getHref(item)">{{ getColumnDisplayContent(column, item, i) }}</router-link>
39
+ </template>
40
+ <template v-else-if="column.type === 'action'">
41
+ <a href="#" v-on:click="column.doAction(item)">{{ getColumnDisplayContent(column, item, i) }}</a>
42
+ </template>
43
+ <template v-else-if="column.type === 'text'">
44
+ <lkt-field-text
45
+ v-bind:read-mode="!column.editable"
46
+ :ref="(el:any) => inputElement = el"
47
+ v-model="value"></lkt-field-text>
48
+ </template>
49
+ <template v-else-if="column.type === 'email'">
50
+ <lkt-field-text
51
+ v-bind:read-mode="!column.editable"
52
+ :ref="(el:any) => inputElement = el"
53
+ is-email
54
+ v-model="value"></lkt-field-text>
55
+ </template>
56
+ <template v-else-if="column.type === 'tel'">
57
+ <lkt-field-text
58
+ v-bind:read-mode="!column.editable"
59
+ :ref="(el:any) => inputElement = el"
60
+ is-tel
61
+ v-model="value"></lkt-field-text>
62
+ </template>
63
+ <template v-else-if="column.type === 'check'">
64
+ <lkt-field-check v-bind:read-mode="!column.editable" :ref="(el:any) => inputElement = el" v-model="value"></lkt-field-check>
65
+ </template>
66
+ <template v-else-if="column.type === 'switch'">
67
+ <lkt-field-switch v-bind:read-mode="!column.editable" :ref="(el:any) => inputElement = el" v-model="value"></lkt-field-switch>
68
+ </template>
69
+ <template v-else-if="column.type === 'select'">
70
+ <lkt-field-select
71
+ v-bind:read-mode="!column.editable" :ref="(el:any) => inputElement = el" v-model="value" v-bind:options="column.options"></lkt-field-select>
72
+ </template>
73
+ <template v-else>
74
+ {{ getColumnDisplayContent(column, item, i) }}
75
+ </template>
76
+ </template>
@@ -7,8 +7,11 @@ import {createLktEvent} from "lkt-events";
7
7
  import {getColumnDisplayContent, getHorizontalColSpan, canRenderColumn} from "../functions/table-functions";
8
8
  import {LktTableColumn} from "../instances/LktTableColumn";
9
9
  import {PropType} from "vue/dist/vue";
10
+ import LktTableCell from "./LktTableCell.vue";
11
+ import {ref, watch} from "vue";
12
+ import {LktObject} from "lkt-ts-interfaces";
10
13
 
11
- const emit = defineEmits(['click', 'show']);
14
+ const emit = defineEmits(['edited', 'click', 'show']);
12
15
 
13
16
  const props = defineProps({
14
17
  isDraggable: {type: Boolean, default: true},
@@ -21,12 +24,21 @@ const props = defineProps({
21
24
  item: {type: Object as PropType<any>, default: () => ({})},
22
25
  });
23
26
 
27
+ const Item = ref(props.item);
28
+
24
29
  const onClick = ($event: any, item: any, column: LktTableColumn) => {
25
30
  emit('click', $event, createLktEvent('', {item, column}))
26
31
  };
27
32
  const onShow = ($event: any, i: any) => {
28
33
  emit('show', $event, createLktEvent('', {i}))
29
34
  };
35
+
36
+ const onEdited = (payload: LktObject, i: any) => {
37
+ Item.value = payload;
38
+ }
39
+
40
+ watch(() => props.item, (v) => Item.value = v);
41
+ watch(Item, () => emit('edited', Item.value, props.i));
30
42
  </script>
31
43
 
32
44
  <template>
@@ -51,7 +63,7 @@ const onShow = ($event: any, i: any) => {
51
63
  v-bind:i="i"></slot>
52
64
  </template>
53
65
  <template v-else-if="item">
54
- {{ getColumnDisplayContent(column, item, i) }}
66
+ <lkt-table-cell :column="column" v-model="Item" :i="i" v-on:edited="onEdited"></lkt-table-cell>
55
67
  </template>
56
68
  </td>
57
69
  </template>
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  import {default as table} from "./lib-components/LktTable.vue";
3
3
  import {App} from "vue";
4
4
 
5
- export {createColumn, createHiddenColumn} from "./functions/table-functions";
5
+ export {createColumn, createHiddenColumn, createLinkColumn, createActionColumn, createTextColumn, createCheckColumn, createSwitchColumn, createSelectColumn, createEmailColumn, createTelColumn} from "./functions/table-functions";
6
6
 
7
7
  const LktTable = {
8
8
  install: (app: App) => {
@@ -127,14 +127,21 @@ const getItemByEvent = (e: any) => {
127
127
  show = ($event: any, $lkt: LktEvent) => {
128
128
  let k = 'tr_' + $lkt.value.i;
129
129
  Hidden.value[k] = typeof Hidden.value[k] === 'undefined' ? true : !Hidden.value[k];
130
- }
130
+ };
131
+
132
+
133
+ const onEdited = (payload: LktObject, i: any) => {
134
+ Items.value[i] = payload;
135
+ }
131
136
 
132
137
  onMounted(() => {
133
138
  sort(getColumnByKey(props.columns, SortBy.value));
134
139
  })
135
140
 
136
141
  watch(() => props.modelValue, (v) => Items.value = v);
137
- watch(Items, (v: any) => emit('update:modelValue', v));
142
+ watch(Items, (v: any) => {
143
+ emit('update:modelValue', v)
144
+ });
138
145
 
139
146
  defineExpose({getItemByEvent});
140
147
 
@@ -212,6 +219,7 @@ defineExpose({getItemByEvent});
212
219
  v-bind:hidden-is-visible="isVisible(i)"
213
220
  v-on:click="onClick"
214
221
  v-on:show="show"
222
+ v-on:edited="onEdited"
215
223
  >
216
224
  <template
217
225
  v-for="column in colSlots"