UNPKG

@jecloud/ui

Version:

JECloud UI库,基于ant-design-vue封装

1 lines 3.06 kB
import{getOffsetBox as t,toggleClass as i,createElement as l,getViewportOffset as e,isFunction as n}from"@jecloud/utils";export function useIndicatorPlugin(a){var o,r;a.mount(new function(){function a(l){var e=this,n=l.options,a=n.enableInsert,s=n.vertical,d=n.indicatorRootEl,c=n.indicatorScrollEl,v=n.sort;Object.assign(this,{disabled:!1===v,indicatorRootEl:null!=d?d:l.el,indicatorScrollEl:c,vertical:s,enableInsert:a,baseClass:"je-sortable-indicator",hoverClass:"je-sortable-indicator-hover",insertTargetClass:"je-sortable-indicator-insert",toggleTargetClass:function(l,n){var a,d,v;if(void 0===l&&(l=o),r&&(r.setStyle("display",n?"":"none"),i(l,e.insertTargetClass,null!==(a=null==n?void 0:n.insert)&&void 0!==a&&a),n)){if(n.insert)return void r.setStyle("display","none");var u=l.clientWidth,g=l.clientHeight,p=t(l,e.indicatorRootEl),h=p.y,E=p.x;if(s){var f=null!==(d=-(null==c?void 0:c.scrollTop))&&void 0!==d?d:0;r.setStyle({width:u+"px",height:"3px",left:E+"px",top:f+(n.prev?h-2:h+g-2)+"px"})}else{var b=null!==(v=-(null==c?void 0:c.scrollLeft))&&void 0!==v?v:0;r.setStyle({width:"3px",height:g+"px",top:h+"px",left:b+(n.prev?E-2:E+u-2)+"px"})}}}}),this.indicatorRootEl.style.position="relative"}return a.prototype={dragStarted:function(t){var i=t.dragEl;o=i,this.disabled||(null==r?void 0:r.dom)||((r=l(document.createElement("div"))).addClass(this.baseClass),this.indicatorRootEl.appendChild(r.dom))},dragOver:function(t){var i=t.target,l=t.dragEl;r&&i===l&&(this.toggleTargetClass(),o=i)},dragOverValid:function(t){var l,a,r=t.completed,s=t.target,d=t.activeSortable,c=t.changed,v=t.cancel,u=t.originalEvent,g=t.sortable,p=t.dragEl;if(!this.disabled&&d.options.indicator){var h=g.el;if(this.actions=null,s&&s!==h){var E=e(s),f=u.clientX,b=E.left,C=s.clientWidth;this.vertical&&(f=u.clientY,b=E.top,C=s.clientHeight);var x=.5*C,S=0;(this.enableInsert||n(this.enableInsert)&&this.enableInsert({target:s,dragEl:p}))&&(x=.3*C,S=.4*C);var y=b,m=b+C,w=o,T=f>y+x&&f<m-x;!1!==(null===(a=(l=d.options).onMove)||void 0===a?void 0:a.call(l,Object.assign(t,{action:T?"insert":"sort"})))?(this.actions={prev:f>y&&f<y+x,next:f>y+x+S&&f<m,insert:T},this.toggleTargetClass(s,this.actions),o=s):o=null,w&&w!==o&&i(w,this.insertTargetClass,!1)}c(),r(!0),v()}},drop:function(t){var l,e,n,a=this,s=t.dragEl,d=t.putSortable,c=t.activeSortable,v=t.rootEl;null===(l=null==v?void 0:v.childNodes)||void 0===l||l.forEach((function(t){i(t,a.hoverClass,!1),i(t,a.insertTargetClass,!1)}));var u=null===(e=null!=d?d:c)||void 0===e?void 0:e.indicator;if(!this.disabled&&u&&o){u.toggleTargetClass(o),r.destroy(),r=null;var g={dragEl:s,swapEl:o,rawSwapEl:o,actions:null!==(n=u.actions)&&void 0!==n?n:{}};(g.actions.prev&&g.swapEl.previousSibling===g.dragEl||g.actions.next&&g.swapEl.nextSibling===g.dragEl)&&(g.swapEl=g.dragEl),[d,c].forEach((function(t){var i;Object.assign(null!==(i=null==t?void 0:t.indicator)&&void 0!==i?i:{},g)}))}},nulling:function(){o=null,null==r||r.destroy(),r=null}},Object.assign(a,{pluginName:"indicator",eventProperties:function(){return{}}})})}