UNPKG

@wetspace/pro-components

Version:
2 lines (1 loc) 4.47 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),d=require("element-plus"),D=require("./types.js"),j=require("../../../pro-table/index.js"),q=require("./columns-item.vue.js"),C=require("../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/cloneDeep.js");function O(n){return typeof n=="function"||Object.prototype.toString.call(n)==="[object Object]"&&!l.isVNode(n)}const M=l.defineComponent({name:"WetEditableTabl",props:{...D.wetEditTableProps},emits:["update:modelValue","change"],setup(n,{emit:o,expose:E}){const y=d.useNamespace("editable-table"),r=l.ref([]),b=l.shallowRef(),c=l.useSlots(),_=(t,e)=>{const a=n.modelValue||[];a[e]=t,o("update:modelValue",a),n.controlled||o("change",{row:t,$index:e})},k=(t,e)=>{o("change",{row:t,$index:e})},s=(t=!1)=>{const e=n.modelValue||[],a=C.default(n.addDefaultRow);let u=e.length;n.controlled&&r.value.push(a),t?(e.unshift(a),u=0):e.push(a),o("update:modelValue",e),o("change",{row:a,$index:u})},N=t=>{r.value=r.value.filter(e=>e!==t)},f=t=>{if(n.modelValue&&n.modelValue.length>t){const e=[...n.modelValue],a=e.splice(t,1);N(a),o("update:modelValue",e),o("change",{row:null,$index:t})}},V=(t,e)=>{const a=[...n.modelValue||[]],u=C.default(t);e!==void 0?a.splice(e+1,0,u):a.push(u),o("update:modelValue",a),o("change",{row:u,$index:e||a.length})},m=t=>{r.value.includes(t)||r.value.push(t)},g=l.shallowRef(!1),h=t=>{g.value||(N(t),g.value=!0,setTimeout(()=>{g.value=!1}))},v=t=>N(t),B=(t,e)=>{var u;const a=(u=n.modelValue)==null?void 0:u[t];a&&(Object.assign(a,e),o("update:modelValue",n.modelValue),o("change",{row:a,$index:t}))},F={placement:"top"},P=(t,e,a)=>{let u;return l.createVNode(d.ElSpace,{size:t.length===0?0:void 0},O(u=t.map(i=>i==="add"?l.createVNode(d.ElButton,{link:!0,type:"primary",onClick:()=>s()},{default:()=>[l.createTextVNode("新增")]}):i==="delete"?l.createVNode(d.ElPopconfirm,l.mergeProps(F,{title:"删除此项?",onConfirm:()=>f(a)}),{reference(){return l.createVNode(d.ElButton,{link:!0,type:"danger"},{default:()=>[l.createTextVNode("删除")]})}}):i==="copy"?l.createVNode(d.ElButton,{link:!0,type:"primary",onClick:()=>V(e,a)},{default:()=>[l.createTextVNode("复制")]}):i==="edit"?l.createVNode(l.Fragment,null,[r.value.includes(e)?l.createVNode(l.Fragment,null,[l.createVNode(d.ElButton,{link:!0,type:"primary",onClick:()=>h(e)},{default:()=>[l.createTextVNode("保存")]}),l.createVNode(d.ElButton,{link:!0,type:"primary",onClick:()=>v(e)},{default:()=>[l.createTextVNode("取消")]})]):l.createVNode(d.ElButton,{link:!0,type:"primary",onClick:()=>m(e)},{default:()=>[l.createTextVNode("编辑")]})]):l.createVNode(l.Fragment,null,null)))?u:{default:()=>[u]})},x=t=>n.readonly?!0:r.value.includes(t)?!1:n.controlled,I=l.computed(()=>(n.columns||[]).filter(e=>n.readonly?e.valueType!=="actions":e).map(e=>({...e,isRender:!1,render({row:a,$index:u}){var i,R;if(e.valueType==="actions")return e.isRender?c.actions&&c.actions({row:a,$index:u,actions:{add:s,deleteRow:f,saveRow:h,copy:V,cancel:v,edit:m,readonly:!r.value.includes(a)}}):e.render?e.render({row:a,$index:u},{add:s,deleteRow:f,saveRow:h,copy:V,cancel:v,edit:m,readonly:r.value.includes(a)}):P(e.actions||[],a,u);{const T=Array.isArray(e.dataIndex)?e.dataIndex.join(""):e.dataIndex;let p=a&&e.render;return e.isRender&&a&&(p=c[T]&&c[T]),u>=0?l.createVNode(q.default,{controlCellMethod:n.controlCellMethod,columns:(n.columns||[]).map(S=>S.dataIndex||""),row:a,index:u,prop:e.dataIndex,itemConfig:{...e,fieldProps:{...e.fieldProps||{},disabled:n.disabled||((i=e.fieldProps)==null?void 0:i.disabled),clearable:n.clearable||((R=e.fieldProps)==null?void 0:R.clearable)}},changeValue:_,emitControlChangeValue:k,readonly:x(a),controlled:n.controlled,saveFlag:g.value},{default:p?()=>p({$index:u,row:a}):null}):l.createVNode(l.Fragment,null,null)}}})));return E({scrollToIndex:t=>{var e;return(e=b.value)==null?void 0:e.scrollToIndex(t)},add:s,deleteRow:f,saveRow:h,copy:V,cancel:v,edit:m,setRowData:B}),()=>l.createVNode("div",{class:y.b()},[c.header&&l.createVNode("div",{class:y.e("header")},[c.header({addBefore:()=>s(!0),add:()=>s(),deleteRow:f,copy:V})]),l.createVNode(j.WetSchemaTable,l.mergeProps({...n,modelValue:"",adddefaultrow:""},{ref:b,data:n.modelValue||[],columns:I.value}),null),c.footer&&l.createVNode("div",{class:y.e("footer")},[c.footer({addBefore:()=>s(!0),add:()=>s(),deleteRow:f,copy:V})])])}});exports.default=M;