@@ -99,6 +99,26 @@ class ExplorerView extends Component {
9999 toggleDisplay ( displayByList ) {
100100 this . setState ( { displayByList } ) ;
101101 }
102+
103+ handleDragOver ( event ) {
104+ event . target . classList . add ( 'dropZone' ) ;
105+ event . preventDefault ( ) ;
106+ }
107+
108+ handleDragLeave ( event ) {
109+ event . target . classList . remove ( 'dropZone' ) ;
110+ }
111+
112+ handleDrop ( event , _id ) {
113+ const { refresh } = this . props ;
114+ [ 'folder' , 'question' , 'qcm' ] . forEach ( type => {
115+ if ( event . dataTransfer . types . includes ( type ) ) {
116+ const file = JSON . parse ( event . dataTransfer . getData ( type ) ) ;
117+ request ( 'Move' , { _id : file . _id , idParent : _id } ) . then ( ( ) => refresh ( ) ) ;
118+ }
119+ } ) ;
120+ event . target . classList . remove ( 'dropZone' ) ;
121+ }
102122
103123 render ( ) {
104124 const {
@@ -117,7 +137,12 @@ class ExplorerView extends Component {
117137 < div id = "path" >
118138 { [ ] . concat ( ...[ { name : 'Explorer' } , ...path ] . map ( folder => {
119139 return [
120- < span onClick = { ( ) => this . goBack ( folder . _id ) } > { folder . name } </ span > ,
140+ < span
141+ onClick = { ( ) => this . goBack ( folder . _id ) }
142+ onDragOver = { this . handleDragOver }
143+ onDragLeave = { this . handleDragLeave }
144+ onDrop = { e => this . handleDrop ( e , folder . _id ) }
145+ > { folder . name } </ span > ,
121146 < div className = "arrow" />
122147 ]
123148 } ) ) . slice ( 0 , - 1 ) }
0 commit comments