UNPKG

vue-devui

Version:

DevUI components based on Vite and Vue3

2 lines (1 loc) 2.76 kB
(function(f,p){typeof exports=="object"&&typeof module!="undefined"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(f=typeof globalThis!="undefined"?globalThis:f||self,p(f.index={}))})(this,function(f){"use strict";var p={},i={};function S(e,t){const a=Element.prototype;return(a.matchesSelector||a.mozMatchesSelector||a.msMatchesSelector||a.oMatchesSelector||a.webkitMatchesSelector||function(l){const v=this,h=(v.document||v.ownerDocument).querySelectorAll(l);let D=h.length;for(;--D>=0&&h.item(D)!==v;);return D>-1}).call(e,t)}var n={mounted(e,t){let a,c,l,v,h;const D=()=>{var r,s;if((r=t==null?void 0:t.value)!=null&&r.handle){const o=(s=t==null?void 0:t.value)==null?void 0:s.handle;let u=v;for(;u!==e;){if(S(u,o))return!0;u=u.parentNode}return!1}return!0},y=r=>{let s=-1,o=r.target;for(;o!==e;)o.parentNode===e&&(s=Array.from(e.children).indexOf(o)),o=o.parentNode;return s},E=()=>{var r;return((r=t==null?void 0:t.value)==null?void 0:r.dragClass)||"devui-drag-item"},m=(r,s)=>{t!=null&&t.value[r]&&(t==null||t.value[r](s))};e.addEventListener("mouseover",r=>{v=r.target}),Array.from(e.children).forEach(r=>{r.setAttribute("draggable","true"),r.addEventListener("dragstart",s=>{D()?(h=!1,a=r,c=Array.from(e.children).indexOf(a),setTimeout(()=>{a.classList.add(E())})):(s.preventDefault(),s.stopPropagation()),m("dragStart",s)})}),e.addEventListener("dragenter",function(r){m("dragEnter",r)}),e.addEventListener("dragover",function(r){var u,d;const s=Array.from(e.children).indexOf(a),o=y(r);s!==-1&&o!==-1&&(s>o?(e.removeChild(a),e.insertBefore(a,e.children[o]),l=o):s<o&&(e.removeChild(a),e.children[o]?(e.insertBefore(a,e.children[o]),l=o):(e.appendChild(a),l=e.children.length-1)),(u=t==null?void 0:t.value)!=null&&u.dragover&&((d=t==null?void 0:t.value)==null||d.dragover(r))),r.preventDefault(),m("dragOver",r)}),e.addEventListener("dragleave",function(r){m("dragLeave",r)}),e.addEventListener("drop",function(r){var s,o,u;if(h=!0,(s=t==null?void 0:t.value)!=null&&s.list){const d=(o=t==null?void 0:t.value)==null?void 0:o.list,L=d[c];d.splice(c,1),d.splice(l,0,L),(u=t==null?void 0:t.value)!=null&&u.drop&&m("drop",{event:r,list:d,fromIndex:c,targetIndex:l})}}),e.addEventListener("dragend",function(r){h||c!==-1&&l!==-1&&(l>c?(e.removeChild(a),e.insertBefore(a,e.children[c])):c>l&&(e.removeChild(a),e.children[c]?e.insertBefore(a,e.children[c]):e.appendChild(a))),c=-1,l=-1,setTimeout(()=>{a.classList.remove(E())}),m("dragEnd",r)})}},x={title:"Dragdrop \u62D6\u62FD",category:"\u6F14\u8FDB\u4E2D",status:"100%",install(e){e.directive("DSortable",n)}};f.DraggableDirective=p,f.DroppableDirective=i,f.SortableDirective=n,f.default=x,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});