1- // import { construct } from "core-js/fn/reflect"
2-
3- const TREE_DATA = { selected : false , partialSelected : false , expanded : false } ;
4- class TreeData {
5- constructor ( data ) {
6- this . data = { ...TREE_DATA , ...data } ;
7- this . children = [ ] ;
8- }
9- setParent ( node ) {
10- this . parent = node ;
11- }
12- addChild ( node ) {
13- this . children . push ( node ) ;
14- node . setParent ( this ) ;
15- }
16- isSelected ( ) {
17- return this ?. data ?. selected ?? false ;
18- }
19- isExpanded ( ) {
20- return this ?. data ?. expanded ?? false ;
21- }
22- isPartialSelected ( ) {
23- return this ?. data ?. partialSelected ?? false ;
24- }
25- // TODO 这里两个方法需要合并一下
26- isAllChildrenSelected ( ) {
27- // eslint-disable-next-line no-debugger
28- // debugger
29- return this . children . every ( ( child ) => child . isSelected ( ) ) ;
30- }
31- hasChildrenPartialSelected ( ) {
32- return this . children . some (
33- ( child ) => child . isSelected ( ) || child . isPartialSelected ( )
34- ) ;
35- }
36- }
1+ import TreeData from './TreeData'
372
383const generateNode = ( data , props ) => {
394 const { children, ...rest } = data ;
@@ -191,7 +156,12 @@ export default {
191156 this . refreshDown ( child ) ;
192157 } ) ;
193158 } ,
159+ handleDrop ( event ) {
160+ event . stopPropagation ( )
161+ } ,
194162 dragStart ( event , treeNode ) {
163+ console . log ( 'dratstart' )
164+ event . stopPropagation ( )
195165 if (
196166 typeof this . allowDrag === "function" &&
197167 ! this . allowDrag ( treeNode . node )
@@ -209,10 +179,12 @@ export default {
209179 } catch ( e ) {
210180 console . error ( e ) ;
211181 }
212- this . draggingNode = treeNode ;
182+ this . dragInfo . draggingNode = treeNode ;
183+ console . log ( 'this.dragInfo.draggingNode' , this . dragInfo . draggingNode )
213184 this . $emit ( "node-drag-start" , treeNode . node , event ) ;
214185 } ,
215186 dragOver ( event ) {
187+ event . stopPropagation ( )
216188 const dragInfo = this . dragInfo ;
217189 const dropNode = findNearestComponent ( event . target , "TreeNode" ) ;
218190 const oldDropNode = dragInfo . dropNode ;
@@ -251,6 +223,7 @@ export default {
251223 if ( dropPrev || dropInner || dropNext ) {
252224 dragInfo . dropNode = dropNode ;
253225 }
226+ console . log ( 'dropNode' , dropNode )
254227 // TODO 这里的逻辑需要实现
255228 if ( dropNode . node . nextSibling === draggingNode . node ) {
256229 dropNext = false ;
@@ -303,7 +276,7 @@ export default {
303276 }
304277
305278 const iconPosition = dropNode . $el
306- . querySelector ( "sh__expand-icon" )
279+ . querySelector ( ". sh__expand-icon" )
307280 . getBoundingClientRect ( ) ;
308281 const dropIndicator = this . $refs . dropIndicator ;
309282 if ( dropType === "before" ) {
@@ -327,6 +300,7 @@ export default {
327300 this . $emit ( "node-drag-over" , draggingNode . node , dropNode . node , event ) ;
328301 } ,
329302 dragEnd ( event ) {
303+ event . stopPropagation ( )
330304 const dragInfo = this . dragInfo ;
331305 const { draggingNode, dropType, dropNode } = dragInfo ;
332306 event . preventDefault ( ) ;
@@ -344,9 +318,9 @@ export default {
344318 } else if ( dropType === "inner" ) {
345319 dropNode . node . insertChild ( draggingNodeCopy ) ;
346320 }
347- if ( dropType !== "none" ) {
321+ // if (dropType !== "none") {
348322 // this.store.registerNode(draggingNodeCopy);
349- }
323+ // }
350324
351325 removeClass ( dropNode . $el , "is-drop-inner" ) ;
352326
@@ -384,6 +358,10 @@ export default {
384358 { this . root ?. children ?. map ( ( node , index ) => {
385359 return < TreeNode key = { node ?. data ?. name ?? index } node = { node } /> ;
386360 } ) }
361+ < div
362+ style = { { display : this . dragInfo . showDropIndicator ? 'none' : 'block' } }
363+ class = "el-tree__drop-indicator"
364+ ref = "dropIndicator" > </ div >
387365 </ div >
388366 ) ;
389367 } ,
0 commit comments