@jecloud/ui
Version:
JECloud UI库,基于ant-design-vue封装
1 lines • 4.71 kB
JavaScript
var e=this&&this.__assign||function(){return e=Object.assign||function(e){for(var t,o=1,n=arguments.length;o<n;o++)for(var i in t=arguments[o])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},e.apply(this,arguments)};import t from"sortablejs";import{nextTick as o,onUnmounted as n,toRaw as i,getCurrentInstance as r,onMounted as a}from"vue";import{findTree as l,getEventTargetNode as d,isObject as s,createElement as c}from"@jecloud/utils";import{dragClass as u}from"./index";export function useRowDD(e){var t,i,l=[],d=r(),s=null===(t=null==d?void 0:d.vnode)||void 0===t?void 0:t.props.onBeforeDrop;a((function(){o((function(){i=setTimeout((function(){l=f(Object.assign(e,{onBeforeDrop:s}))}),500)}))})),n((function(){clearTimeout(i),null==l||l.forEach((function(e){null==e||e.destroy()}))}))}var f=function(t){var o=t.$plugin.value,n=[];["refTableBody","refTableLeftBody","refTableRightBody"].forEach((function(i){var r=o.getRefMaps()[i];(null==r?void 0:r.value)&&n.push(v(e(e({},t),{tbody:r.value})))}))},v=function(e){var o=e.$plugin,n=e.context,r=e.props,a=e.tbody,l=e.delay,f=void 0===l?100:l,v=e.onBeforeDrop,g=n.emit,b=o.value,w=a.$el.querySelector(".vxe-table--body tbody");if(w){var h=b.getRefMaps(),x=h.refElem,y=h.refTableBody,D=x.value.querySelector(".vxe-table--render-wrapper"),R=y.value.$el,$=!!b.treeConfig,E=!1;if($){var T=c(w);T.on("mousedown",(function(){E=!0})),T.on("mouseup",(function(){E=!1}))}var I=t.create(w,Object.assign({$table:b,handle:"."+u,dropRemoveClone:!0,forceFallback:!0,dragClass:"je-sortable-drag",delay:$?0:f,vertical:!0,indicator:!0,indicatorRootEl:D,indicatorScrollEl:R,enableInsert:$,preventOnFilter:!1,filter:function(e,t){return d(e,t,"col--actived").flag},onMove:function(e){var t=e.dragEl,o=e.target,n=e.action,r=b.getRowNode(t),a=b.getRowNode(o);return!1!==(null==v?void 0:v({row:i(null==r?void 0:r.item),target:i(null==a?void 0:a.item),$table:b,action:n,sortableEvent:e}))},onStartPromise:function(e){var t=this,o=e.item;if($){var n=b.getRowNode(o);return new Promise((function(e,o){t.startTimer&&clearTimeout(t.startTimer),t.startTimer=setTimeout((function(){E?b.setTreeExpand(n.item,!1).then(e):o()}),200)}))}return Promise.resolve()},onStart:function(e){for(var t=e.item,o=e.from.querySelector("."+I.options.dragClass),n=0;n<t.cells.length;n++)o.cells[n].style.width=t.cells[n].clientWidth+"px"},onEnd:function(e){var t=e.item,n=e.clone,a=e.from,l=e.to,d=this.indicator;if(d.disabled){var s=b.getRowNode(t);if(a===l)return;return n&&this.options.dropRemoveClone&&a.replaceChild(t,n),void g("drop",{row:i(null==s?void 0:s.item),$table:b,action:"none"})}d.actions&&($?m({$plugin:o,emit:g,indicator:d,props:r}):p({$plugin:o,emit:g,indicator:d,props:r}))}},Object.assign({},s(r.draggable)?r.draggable:{})));if(f){var N=I._disableDelayedDrag;I._disableDelayedDrag=function(){N(),I._nulling()}}return b.$el.removeAttribute("draggable"),I}},p=function(e){var t=e.indicator,n=e.$plugin,r=e.emit,a=e.props,l=n.value,d=a.store,s=t.dragEl,c=t.swapEl,u=t.actions;if(s!==c){var f=l.getRowNode(s),v=l.getRowNode(c),p=f.index,m=v.index;u.next&&m++;var b=l.data.slice(0);g({targetData:b,newIndex:m,oldIndex:p});var w=i(f.item);d?(d.data=b,o((function(){r("drop",{row:w,$table:l,action:"sort"})}))):l.loadData(b).then((function(){r("drop",{row:w,$table:l,action:"sort"})}))}else console.log("没有改变")},m=function(e){var t,n,r,a=e.indicator,d=e.$plugin,s=e.emit,c=e.props,u=d.value,f=c.store,v=a.dragEl,p=a.swapEl,m=a.rawSwapEl,b=a.actions;if(v===p){var w=u.getRowNode(p),h=u.getRowNode(m);if(w.parent==h.parent)return void console.log("没有改变");p=m}var x=u.treeConfig,y=x.rowField,D=x.children,R=x.parentField,$={children:D},E=u.getTableData().fullData.slice(0),T=function(e){return l(E,(function(t){return t[y]===e[y]}),$)},I=T(u.getRowNode(v).item),N=I.index,_=u.getRowNode(p),j=T(_.item),O=j.index;if(b.next&&O++,b.insert){var B=j.item,C=I.items.splice(N,1)[0];C[R]=B[y],B[$.children]=null!==(t=B[$.children])&&void 0!==t?t:[],B[$.children].push(C)}else I.item[R]=j.item[R],g({sourceData:I.items,targetData:j.items,newIndex:O,oldIndex:N});var S=T(I.item),F={id:S.item[y],toId:_.item[y],place:b.insert?"inside":b.next?"below":"above",parentId:S.item[R],prevId:null===(n=S.items[S.index-1])||void 0===n?void 0:n[y],nextId:null===(r=S.items[S.index+1])||void 0===r?void 0:r[y]},P=i(S.item);f?(f.data=E,o((function(){s("drop",{row:P,$table:u,action:b.insert?"insert":"sort",info:F})}))):u.loadData(E).then((function(){s("drop",{row:P,$table:u,action:b.insert?"insert":"sort",info:F})}))};function g(e){var t=e.targetData,o=e.sourceData,n=void 0===o?t:o,i=e.newIndex,r=e.oldIndex,a="__temp__",l=n.splice(r,1,a)[0];t.splice(i,0,l),n.splice(n.indexOf(a),1)}