@@ -358,11 +358,11 @@ async function onEditContent(event) {
358358 input . name = 'files' ;
359359 input . type = 'hidden' ;
360360 input . value = data . uuid ;
361- dropzone . querySelector ( '.files' ) . insertAdjacentHTML ( 'beforeend' , input . outerHTML ) ;
361+ dropzone . querySelector ( '.files' ) . append ( input ) ;
362362 } ) ;
363363 this . on ( 'removedfile' , async ( file ) => {
364- if ( disableRemovedfileEvent ) return ;
365364 document . getElementById ( file . uuid ) ?. remove ( ) ;
365+ if ( disableRemovedfileEvent ) return ;
366366 if ( dropzone . getAttribute ( 'data-remove-url' ) && ! fileUuidDict [ file . uuid ] . submitted ) {
367367 try {
368368 await POST ( dropzone . getAttribute ( 'data-remove-url' ) , { data : new URLSearchParams ( { file : file . uuid } ) } ) ;
@@ -384,6 +384,7 @@ async function onEditContent(event) {
384384 disableRemovedfileEvent = true ;
385385 dz . removeAllFiles ( true ) ;
386386 dropzone . querySelector ( '.files' ) . innerHTML = '' ;
387+ for ( const el of dropzone . querySelectorAll ( '.dz-preview' ) ) el . remove ( ) ;
387388 fileUuidDict = { } ;
388389 disableRemovedfileEvent = false ;
389390
@@ -392,15 +393,17 @@ async function onEditContent(event) {
392393 dz . emit ( 'addedfile' , attachment ) ;
393394 dz . emit ( 'thumbnail' , attachment , imgSrc ) ;
394395 dz . emit ( 'complete' , attachment ) ;
395- dz . files . push ( attachment ) ;
396396 fileUuidDict [ attachment . uuid ] = { submitted : true } ;
397397 dropzone . querySelector ( `img[src='${ imgSrc } ']` ) . style . maxWidth = '100%' ;
398398 const input = document . createElement ( 'input' ) ;
399399 input . id = attachment . uuid ;
400400 input . name = 'files' ;
401401 input . type = 'hidden' ;
402402 input . value = attachment . uuid ;
403- dropzone . querySelector ( '.files' ) . insertAdjacentHTML ( 'beforeend' , input . outerHTML ) ;
403+ dropzone . querySelector ( '.files' ) . append ( input ) ;
404+ }
405+ if ( ! dropzone . querySelector ( '.dz-preview' ) ) {
406+ dropzone . classList . remove ( 'dz-started' ) ;
404407 }
405408 } catch ( error ) {
406409 console . error ( error ) ;
@@ -412,24 +415,24 @@ async function onEditContent(event) {
412415 return dz ;
413416 } ;
414417
415- const cancelAndReset = ( dz ) => {
418+ const cancelAndReset = ( e ) => {
419+ e . preventDefault ( ) ;
416420 showElem ( renderContent ) ;
417421 hideElem ( editContentZone ) ;
418- if ( dz ) {
419- dz . emit ( 'reload' ) ;
420- }
422+ comboMarkdownEditor . attachedDropzoneInst ?. emit ( 'reload' ) ;
421423 } ;
422424
423- const saveAndRefresh = async ( dz ) => {
425+ const saveAndRefresh = async ( e ) => {
426+ e . preventDefault ( ) ;
424427 showElem ( renderContent ) ;
425428 hideElem ( editContentZone ) ;
426-
429+ const dropzoneInst = comboMarkdownEditor . attachedDropzoneInst ;
427430 try {
428431 const params = new URLSearchParams ( {
429432 content : comboMarkdownEditor . value ( ) ,
430433 context : editContentZone . getAttribute ( 'data-context' ) ,
431434 } ) ;
432- for ( const file of dz . files ) params . append ( 'files[]' , file . uuid ) ;
435+ for ( const fileInput of dropzoneInst ?. element . querySelectorAll ( '. files [name=files]' ) ) params . append ( 'files[]' , fileInput . value ) ;
433436
434437 const response = await POST ( editContentZone . getAttribute ( 'data-update-url' ) , { data : params } ) ;
435438 const data = await response . json ( ) ;
@@ -452,33 +455,22 @@ async function onEditContent(event) {
452455 } else {
453456 content . querySelector ( '.dropzone-attachments' ) . outerHTML = data . attachments ;
454457 }
455- if ( dz ) {
456- dz . emit ( 'submit' ) ;
457- dz . emit ( 'reload' ) ;
458- }
458+ dropzoneInst ?. emit ( 'submit' ) ;
459+ dropzoneInst ?. emit ( 'reload' ) ;
459460 initMarkupContent ( ) ;
460461 initCommentContent ( ) ;
461462 } catch ( error ) {
462463 console . error ( error ) ;
463464 }
464465 } ;
465466
466- if ( ! editContentZone . innerHTML ) {
467+ comboMarkdownEditor = getComboMarkdownEditor ( editContentZone . querySelector ( '.combo-markdown-editor' ) ) ;
468+ if ( ! comboMarkdownEditor ) {
467469 editContentZone . innerHTML = document . getElementById ( 'issue-comment-editor-template' ) . innerHTML ;
468470 comboMarkdownEditor = await initComboMarkdownEditor ( editContentZone . querySelector ( '.combo-markdown-editor' ) ) ;
469-
470- const dropzone = editContentZone . querySelector ( '.dropzone' ) ;
471- const dz = await setupDropzone ( dropzone ) ;
472- editContentZone . querySelector ( '.cancel.button' ) . addEventListener ( 'click' , ( e ) => {
473- e . preventDefault ( ) ;
474- cancelAndReset ( dz ) ;
475- } ) ;
476- editContentZone . querySelector ( '.save.button' ) . addEventListener ( 'click' , ( e ) => {
477- e . preventDefault ( ) ;
478- saveAndRefresh ( dz ) ;
479- } ) ;
480- } else {
481- comboMarkdownEditor = getComboMarkdownEditor ( editContentZone . querySelector ( '.combo-markdown-editor' ) ) ;
471+ comboMarkdownEditor . attachedDropzoneInst = await setupDropzone ( editContentZone . querySelector ( '.dropzone' ) ) ;
472+ editContentZone . querySelector ( '.cancel.button' ) . addEventListener ( 'click' , cancelAndReset ) ;
473+ editContentZone . querySelector ( '.save.button' ) . addEventListener ( 'click' , saveAndRefresh ) ;
482474 }
483475
484476 // Show write/preview tab and copy raw content as needed
0 commit comments