@@ -141,16 +141,22 @@ const addFilesOnTree = async (files, currentCode, selectedFolder) => {
141141 // Select the folder to insert based on file extension. If is a js file,
142142 // insert on "cloud" folder, else insert on "public" folder. This logic is
143143 // a legacy from the old Cloud Code page
144- folder = obj . children . find ( f => f === selectedFolder ) ;
144+ folder = obj . children [ selectedFolder ]
145145 }
146146 await verifyFileNames ( folder , newTreeNodes [ j ] ) ;
147- const position = 'inside' ;
148- const parent = $ ( '#tree' ) . jstree ( 'get_selected' ) ;
149- $ ( '#tree' ) . jstree ( "create_node" , parent , { data : newTreeNodes [ j ] . data , type : 'new-file' , text : newTreeNodes [ j ] . text . name } , position , false , false ) ;
147+ addFileOnSelectedNode ( newTreeNodes [ j ] . text . name ) ;
150148 }
151149 return currentCode ;
152150}
153151
152+ const addFileOnSelectedNode = ( name , data = { code : 'data:plain/text;base64,IA==' } ) => {
153+ let parent = $ ( '#tree' ) . jstree ( 'get_selected' ) ;
154+ if ( [ 'default' , 'file' , 'new-file' ] . includes ( $ ( '#tree' ) . jstree ( ) . get_node ( parent ) . type ) ) {
155+ parent = $ ( '#tree' ) . jstree ( ) . get_node ( parent ) . parent ;
156+ }
157+ $ ( '#tree' ) . jstree ( "create_node" , parent , { data, type : 'new-file' , text : name } , 'inside' , false , false ) ;
158+ }
159+
154160// Configure the menu that is shown on right-click based on files type
155161const customMenu = node => {
156162 let items = $ . jstree . defaults . contextmenu . items ( ) ;
@@ -250,5 +256,6 @@ export default {
250256 encodeFile,
251257 updateTreeContent,
252258 getExtension,
253- refreshEmptyFolderIcons
259+ refreshEmptyFolderIcons,
260+ addFileOnSelectedNode
254261}
0 commit comments