@@ -358,11 +358,11 @@ async function onEditContent(event) {
358
358
input . name = 'files' ;
359
359
input . type = 'hidden' ;
360
360
input . value = data . uuid ;
361
- dropzone . querySelector ( '.files' ) . insertAdjacentHTML ( 'beforeend' , input . outerHTML ) ;
361
+ dropzone . querySelector ( '.files' ) . append ( input ) ;
362
362
} ) ;
363
363
this . on ( 'removedfile' , async ( file ) => {
364
- if ( disableRemovedfileEvent ) return ;
365
364
document . getElementById ( file . uuid ) ?. remove ( ) ;
365
+ if ( disableRemovedfileEvent ) return ;
366
366
if ( dropzone . getAttribute ( 'data-remove-url' ) && ! fileUuidDict [ file . uuid ] . submitted ) {
367
367
try {
368
368
await POST ( dropzone . getAttribute ( 'data-remove-url' ) , { data : new URLSearchParams ( { file : file . uuid } ) } ) ;
@@ -384,6 +384,7 @@ async function onEditContent(event) {
384
384
disableRemovedfileEvent = true ;
385
385
dz . removeAllFiles ( true ) ;
386
386
dropzone . querySelector ( '.files' ) . innerHTML = '' ;
387
+ for ( const el of dropzone . querySelectorAll ( '.dz-preview' ) ) el . remove ( ) ;
387
388
fileUuidDict = { } ;
388
389
disableRemovedfileEvent = false ;
389
390
@@ -392,15 +393,17 @@ async function onEditContent(event) {
392
393
dz . emit ( 'addedfile' , attachment ) ;
393
394
dz . emit ( 'thumbnail' , attachment , imgSrc ) ;
394
395
dz . emit ( 'complete' , attachment ) ;
395
- dz . files . push ( attachment ) ;
396
396
fileUuidDict [ attachment . uuid ] = { submitted : true } ;
397
397
dropzone . querySelector ( `img[src='${ imgSrc } ']` ) . style . maxWidth = '100%' ;
398
398
const input = document . createElement ( 'input' ) ;
399
399
input . id = attachment . uuid ;
400
400
input . name = 'files' ;
401
401
input . type = 'hidden' ;
402
402
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' ) ;
404
407
}
405
408
} catch ( error ) {
406
409
console . error ( error ) ;
@@ -412,24 +415,24 @@ async function onEditContent(event) {
412
415
return dz ;
413
416
} ;
414
417
415
- const cancelAndReset = ( dz ) => {
418
+ const cancelAndReset = ( e ) => {
419
+ e . preventDefault ( ) ;
416
420
showElem ( renderContent ) ;
417
421
hideElem ( editContentZone ) ;
418
- if ( dz ) {
419
- dz . emit ( 'reload' ) ;
420
- }
422
+ comboMarkdownEditor . attachedDropzoneInst ?. emit ( 'reload' ) ;
421
423
} ;
422
424
423
- const saveAndRefresh = async ( dz ) => {
425
+ const saveAndRefresh = async ( e ) => {
426
+ e . preventDefault ( ) ;
424
427
showElem ( renderContent ) ;
425
428
hideElem ( editContentZone ) ;
426
-
429
+ const dropzoneInst = comboMarkdownEditor . attachedDropzoneInst ;
427
430
try {
428
431
const params = new URLSearchParams ( {
429
432
content : comboMarkdownEditor . value ( ) ,
430
433
context : editContentZone . getAttribute ( 'data-context' ) ,
431
434
} ) ;
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 ) ;
433
436
434
437
const response = await POST ( editContentZone . getAttribute ( 'data-update-url' ) , { data : params } ) ;
435
438
const data = await response . json ( ) ;
@@ -452,33 +455,22 @@ async function onEditContent(event) {
452
455
} else {
453
456
content . querySelector ( '.dropzone-attachments' ) . outerHTML = data . attachments ;
454
457
}
455
- if ( dz ) {
456
- dz . emit ( 'submit' ) ;
457
- dz . emit ( 'reload' ) ;
458
- }
458
+ dropzoneInst ?. emit ( 'submit' ) ;
459
+ dropzoneInst ?. emit ( 'reload' ) ;
459
460
initMarkupContent ( ) ;
460
461
initCommentContent ( ) ;
461
462
} catch ( error ) {
462
463
console . error ( error ) ;
463
464
}
464
465
} ;
465
466
466
- if ( ! editContentZone . innerHTML ) {
467
+ comboMarkdownEditor = getComboMarkdownEditor ( editContentZone . querySelector ( '.combo-markdown-editor' ) ) ;
468
+ if ( ! comboMarkdownEditor ) {
467
469
editContentZone . innerHTML = document . getElementById ( 'issue-comment-editor-template' ) . innerHTML ;
468
470
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 ) ;
482
474
}
483
475
484
476
// Show write/preview tab and copy raw content as needed
0 commit comments