UNPKG

@easyui/element-plus-pro

Version:

This is an extended ui components library for element-plus

2 lines (1 loc) 4.95 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("../../../utils/_install.min.js"),e=require("vue"),u=require("../../../_dependencies/lodash.min.js"),m=require("../../../_dependencies/element-plus-icons.min.js"),V=require("../../../hooks/_useTheme.min.js"),$=require("../../../hooks/_useSortable.min.js"),K=require("../../../hooks/useCurtInstance.min.js"),P=require("../../../_dependencies/v4.min.js"),A=e.defineComponent({name:"SDynamicTable",__name:"dynamic-table",props:{dataSource:{default:()=>[]},sortable:{type:Boolean,default:!1},removeAll:{type:Boolean,default:!0},removeDisable:{},columns:{default:()=>[]},loading:{type:Boolean,default:!1},height:{},maxHeight:{},size:{},selection:{},rowKey:{default:"id"},fit:{type:Boolean,default:!0},stripe:{type:Boolean,default:!1},border:{type:Boolean,default:!1},hasSerial:{type:Boolean,default:!0},showHeader:{type:Boolean,default:!0},emptyText:{default:"暂无数据"},emptyPlaceholder:{type:Boolean,default:!0}},emits:["update:dataSource","dragStart","dragChange","dragEnd","add","added","removed"],setup(n,{emit:z}){const{_themePre:S}=V(),{existEmit:x}=K(),_=e.useSlots(),f=z,o=n,{dragHandleClass:T,sortDragging:B,dataRecords:s,initSortable:g}=$(o,()=>{var l,a;return(a=(l=y.value)==null?void 0:l.$el)==null?void 0:a.querySelector(".el-table .el-table__body-wrapper .el-table__body > tbody")}),y=e.ref(),H=e.computed(()=>({[`${S}-dynamic-table`]:!0,[`${S}-sort-table`]:o.sortable,"sort-table-dragging":B.value})),N=e.computed(()=>u.lodashExports.omit(o,["columns","dataSource","sortable","removeDisable"])),v=e.computed(()=>!!(o.columns||[]).find(t=>t.fixed)),R=e.computed(()=>{const t=[...o.columns];return o.sortable&&t.unshift({width:o.size==="small"?35:45,className:T,align:"center",resizable:!1,headerSlot:"dragHeaderHandle",columnOrder:-1,fixed:v.value}),t.unshift({width:o.size==="small"?53:65,align:"center",resizable:!1,slot:"editHandle",headerSlot:"editHeaderHandle",columnOrder:-2,fixed:v.value}),t}),q=e.computed(()=>Object.keys(_)),E=e.computed(()=>{var t,l,a;return o.selection?!(((l=(t=o.selection)==null?void 0:t.selectedRowKeys)==null?void 0:l.length)>0):!(((a=s.value)==null?void 0:a.length)>0)}),k=t=>{if(x("onAdd"))f("add",t);else{const l=u.lodashExports.cloneDeep(s.value),a=u.lodashExports.isNumber(t)?t+1:l.length,{rowKey:r,columns:c}=o,d={...Object.fromEntries(c.map(h=>[h.prop,void 0])),[r]:P.v4()};l.splice(a,0,d),s.value=l,f("added",d,t)}},w=t=>{const l=u.lodashExports.cloneDeep(s.value);let a=[];if(u.lodashExports.isNumber(t))a=l.splice(t,1),s.value=l;else if(o.selection){const{selection:r,rowKey:c}=o;s.value=l.filter(d=>!r.selectedRowKeys.includes(d[c])),a=l.filter(d=>r.selectedRowKeys.includes(d[c]))}else s.value=[],a=l;f("removed",a,t)};return e.watch([()=>o.sortable,v],()=>{y.value&&e.nextTick(()=>{g()})}),e.watch(s,t=>{!u.lodashExports.isEqual(t,o.dataSource)&&f("update:dataSource",t)},{deep:!0}),e.onMounted(()=>{o.sortable&&e.nextTick(()=>{g()})}),(t,l)=>{const a=e.resolveComponent("el-icon"),r=e.resolveComponent("el-button"),c=e.resolveComponent("el-popconfirm"),d=e.resolveComponent("el-space"),h=e.resolveComponent("s-table");return e.openBlock(),e.createBlock(h,e.mergeProps({ref_key:"dynamicTableRef",ref:y,dataSource:e.unref(s),columns:R.value,class:H.value},N.value),e.createSlots({editHeaderHandle:e.withCtx(()=>[e.createVNode(d,{class:"dynamic-edit-handle",size:0},{default:e.withCtx(()=>[e.createVNode(r,{type:"primary",size:n.size==="small"?"small":void 0,icon:e.unref(m.circle_plus_default),link:"",onClick:l[0]||(l[0]=i=>k())},null,8,["size","icon"]),n.removeAll?(e.openBlock(),e.createBlock(c,{key:0,width:200,title:`是否确认${n.selection?"删除选中数据":"清空当前列表"}`,onConfirm:l[1]||(l[1]=i=>w())},{reference:e.withCtx(()=>[e.createVNode(r,{type:"danger",size:n.size==="small"?"small":void 0,icon:e.unref(m.delete_default),disabled:E.value,link:""},null,8,["size","icon","disabled"])]),_:1},8,["title"])):e.createCommentVNode("",!0)]),_:1})]),editHandle:e.withCtx(({record:i,index:b})=>[e.createVNode(d,{class:"dynamic-edit-handle",size:0},{default:e.withCtx(()=>{var p;return[e.createVNode(r,{type:"primary",size:n.size==="small"?"small":void 0,icon:e.unref(m.circle_plus_default),link:"",onClick:C=>k(b)},null,8,["size","icon","onClick"]),e.createVNode(r,{type:"danger",size:n.size==="small"?"small":void 0,icon:e.unref(m.remove_default),link:"",disabled:(p=n.removeDisable)==null?void 0:p.call(n,i),onClick:C=>w(b)},null,8,["size","icon","disabled","onClick"])]}),_:2},1024)]),_:2},[n.sortable?{name:"dragHeaderHandle",fn:e.withCtx(()=>[e.createVNode(a,null,{default:e.withCtx(()=>[e.createVNode(e.unref(m.rank_default))]),_:1})]),key:"0"}:void 0,e.renderList(q.value,i=>({name:i,fn:e.withCtx(({record:b,text:p,index:C})=>[e.renderSlot(t.$slots,i,{record:b,text:p,index:C})])}))]),1040,["dataSource","columns","class"])}}}),O=D.withInstall(A);exports.SDynamicTable=O;