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.
- package/dist/README.md.d.ts +2 -0
- package/dist/lkt-table.es.js +368 -225
- package/dist/lkt-table.umd.js +1 -1
- package/dist/{types → src}/components/LktHiddenRow.vue.d.ts +17 -13
- package/dist/src/components/LktTableCell.vue.d.ts +91 -0
- package/dist/{types → src}/components/LktTableRow.vue.d.ts +10 -6
- package/dist/{types → src}/functions/table-functions.d.ts +9 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/vite.config.d.ts +39 -0
- package/package.json +6 -1
- package/src/components/LktHiddenRow.vue +10 -3
- package/src/components/LktTableCell.vue +76 -0
- package/src/components/LktTableRow.vue +14 -2
- package/src/index.ts +1 -1
- package/src/lib-components/LktTable.vue +10 -2
- package/dist/types/index.d.ts +0 -6
- package/dist/types/instances/LktTableColumn.d.ts +0 -16
- package/dist/types/interfaces/TableColumn.d.ts +0 -9
- package/dist/{types → src}/lib-components/LktTable.vue.d.ts +7 -7
package/dist/lkt-table.umd.js
CHANGED
|
@@ -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("
|
|
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
|
-
|
|
37
|
+
modelValue: {
|
|
38
38
|
type: PropType<any>;
|
|
39
39
|
default: () => {};
|
|
40
40
|
};
|
|
41
41
|
}>> & {
|
|
42
42
|
onClick?: ((...args: any[]) => any) | undefined;
|
|
43
|
-
|
|
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
|
-
|
|
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("
|
|
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
|
-
|
|
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("
|
|
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
|
-
|
|
188
|
+
modelValue: {
|
|
186
189
|
type: PropType<any>;
|
|
187
190
|
default: () => {};
|
|
188
191
|
};
|
|
189
192
|
}>> & {
|
|
190
193
|
onClick?: ((...args: any[]) => any) | undefined;
|
|
191
|
-
|
|
192
|
-
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
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"
|