1
+ export function sortableFolders ( self , section , onUpdate ) {
2
+ var dragEl , nextEl , newPos , dragGhost ;
3
+ console . log ( [ ...section . children ] ) ;
4
+
5
+ // let oldPos = [...section.children].map(item => {
6
+ // console.log(item);
7
+ // item.draggable = true
8
+ // let pos = self.query("#"+item.id).getBoundingClientRect();
9
+ // return pos;
10
+ // });
11
+
12
+ function _onDragOver ( e ) {
13
+ e . preventDefault ( ) ;
14
+ e . dataTransfer . dropEffect = 'move' ;
15
+
16
+ var target = e . target ;
17
+ if ( ! target . classList . contains ( "dragging_placeholder" ) ) {
18
+ target = target . closest ( ".dragging_placeholder" )
19
+ }
20
+ if ( target && target !== dragEl && target . nodeName == 'DIV' ) {
21
+ if ( target . classList . contains ( 'inside' ) ) {
22
+ console . log ( "inside" ) ;
23
+ e . stopPropagation ( ) ;
24
+ } else {
25
+
26
+ var targetPos = target . getBoundingClientRect ( ) ; //getBoundinClientRect contains location-info about the element (relative to the viewport)
27
+ var next = ( e . clientY - targetPos . top ) / ( targetPos . bottom - targetPos . top ) > .5 || ( e . clientX - targetPos . left ) / ( targetPos . right - targetPos . left ) > .5 ; //checking that dragEl is dragged over half the target y-axis or x-axis. (therefor the .5)
28
+ console . log ( dragEl ) ;
29
+ console . log ( next && target . nextSibling ) ;
30
+ console . log ( next && target . nextSibling || target ) ;
31
+ section . insertBefore ( dragEl , next && target . nextSibling || target ) ;
32
+
33
+ /* console.log("oldPos:" + JSON.stringify(oldPos));
34
+ console.log("newPos:" + JSON.stringify(newPos)); */
35
+ /* console.log(newPos.top === oldPos.top ? 'They are the same' : 'Not the same'); */
36
+ // console.log(oldPos);
37
+ }
38
+ }
39
+ }
40
+
41
+ section . addEventListener ( 'dragstart' , function ( e ) {
42
+ dragEl = e . target ;
43
+ nextEl = dragEl . nextSibling ;
44
+
45
+ e . dataTransfer . effectAllowed = 'move' ;
46
+ e . dataTransfer . setData ( 'Text' , dragEl . textContent ) ;
47
+ console . log ( dragEl ) ;
48
+
49
+ section . addEventListener ( 'dragover' , _onDragOver , false ) ;
50
+ section . addEventListener ( 'dragend' , _onDragEnd , false ) ;
51
+
52
+ setTimeout ( function ( ) {
53
+ dragEl . classList . add ( 'ghost' ) ;
54
+ } , 0 )
55
+
56
+ } ) ;
57
+ }
58
+
59
+ // function sortable(self, section, onUpdate){
60
+ // var dragEl, nextEl, newPos, dragGhost;
61
+ // console.log([...section.children]);
62
+
63
+ // let oldPos = [...section.children].map(item => {
64
+ // console.log(item);
65
+ // item.draggable = true
66
+ // let pos = self.query("#"+item.id).getBoundingClientRect();
67
+ // return pos;
68
+ // });
69
+
70
+ // function _onDragOver(e){
71
+ // e.preventDefault();
72
+ // e.dataTransfer.dropEffect = 'move';
73
+
74
+ // var target = e.target;
75
+ // if(!target.classList.contains("dragging_placeholder")){
76
+ // target = target.closest(".dragging_placeholder")
77
+ // }
78
+ // if( target && target !== dragEl && target.nodeName == 'DIV' ){
79
+ // if(target.classList.contains('inside')) {
80
+ // console.log("inside");
81
+ // e.stopPropagation();
82
+ // } else {
83
+
84
+ // var targetPos = target.getBoundingClientRect();//getBoundinClientRect contains location-info about the element (relative to the viewport)
85
+ // var next = (e.clientY - targetPos.top) / (targetPos.bottom - targetPos.top) > .5 || (e.clientX - targetPos.left) / (targetPos.right - targetPos.left) > .5; //checking that dragEl is dragged over half the target y-axis or x-axis. (therefor the .5)
86
+ // console.log(dragEl);
87
+ // console.log(next && target.nextSibling);
88
+ // console.log(next && target.nextSibling || target);
89
+ // section.insertBefore(dragEl, next && target.nextSibling || target);
90
+
91
+ // /* console.log("oldPos:" + JSON.stringify(oldPos));
92
+ // console.log("newPos:" + JSON.stringify(newPos)); */
93
+ // /* console.log(newPos.top === oldPos.top ? 'They are the same' : 'Not the same'); */
94
+ // console.log(oldPos);
95
+ // }
96
+ // }
97
+ // }
98
+
99
+ // function _onDragEnd(evt){
100
+ // evt.preventDefault();
101
+ // newPos = [...section.children].map(child => {
102
+ // let pos = self.query("#"+child.id).getBoundingClientRect();
103
+ // return pos;
104
+ // });
105
+ // console.log(newPos);
106
+ // dragEl.classList.remove('ghost');
107
+ // section.removeEventListener('dragover', _onDragOver, false);
108
+ // section.removeEventListener('dragend', _onDragEnd, false);
109
+
110
+ // nextEl !== dragEl.nextSibling ? onUpdate(dragEl) : false;
111
+ // }
112
+
113
+ // section.addEventListener('dragstart', function(e){
114
+ // dragEl = e.target;
115
+ // nextEl = dragEl.nextSibling;
116
+
117
+ // e.dataTransfer.effectAllowed = 'move';
118
+ // e.dataTransfer.setData('Text', dragEl.textContent);
119
+
120
+ // section.addEventListener('dragover', _onDragOver, false);
121
+ // section.addEventListener('dragend', _onDragEnd, false);
122
+
123
+ // setTimeout(function (){
124
+ // dragEl.classList.add('ghost');
125
+ // }, 0)
126
+
127
+ // });
128
+ // }
0 commit comments