@@ -7,7 +7,7 @@ import {attachRefIssueContextPopup} from './contextpopup.ts';
7
7
import { initCommentContent , initMarkupContent } from '../markup/content.ts' ;
8
8
import { triggerUploadStateChanged } from './comp/EditorUpload.ts' ;
9
9
import { convertHtmlToMarkdown } from '../markup/html2markdown.ts' ;
10
- import { applyAreYouSure } from '../vendor/jquery.are-you-sure.ts' ;
10
+ import { applyAreYouSure , reinitializeAreYouSure } from '../vendor/jquery.are-you-sure.ts' ;
11
11
12
12
async function tryOnEditContent ( e ) {
13
13
const clickTarget = e . target . closest ( '.edit-content' ) ;
@@ -20,16 +20,19 @@ async function tryOnEditContent(e) {
20
20
const rawContent = segment . querySelector ( '.raw-content' ) ;
21
21
22
22
let comboMarkdownEditor : ComboMarkdownEditor ;
23
+ let form : HTMLFormElement ;
23
24
24
25
const cancelAndReset = ( e ) => {
25
26
e . preventDefault ( ) ;
27
+ form . classList . add ( 'ignore-dirty' ) ;
26
28
showElem ( renderContent ) ;
27
29
hideElem ( editContentZone ) ;
28
30
comboMarkdownEditor . dropzoneReloadFiles ( ) ;
29
31
} ;
30
32
31
33
const saveAndRefresh = async ( e ) => {
32
34
e . preventDefault ( ) ;
35
+ form . classList . remove ( 'ignore-dirty' ) ;
33
36
renderContent . classList . add ( 'is-loading' ) ;
34
37
showElem ( renderContent ) ;
35
38
hideElem ( editContentZone ) ;
@@ -49,6 +52,7 @@ async function tryOnEditContent(e) {
49
52
showErrorToast ( data . errorMessage ) ;
50
53
return ;
51
54
}
55
+ reinitializeAreYouSure ( form ) ;
52
56
editContentZone . setAttribute ( 'data-content-version' , data . contentVersion ) ;
53
57
if ( ! data . content ) {
54
58
renderContent . innerHTML = document . querySelector ( '#no-content' ) . innerHTML ;
@@ -87,14 +91,15 @@ async function tryOnEditContent(e) {
87
91
comboMarkdownEditor = getComboMarkdownEditor ( editContentZone . querySelector ( '.combo-markdown-editor' ) ) ;
88
92
if ( ! comboMarkdownEditor ) {
89
93
editContentZone . innerHTML = document . querySelector ( '#issue-comment-editor-template' ) . innerHTML ;
90
- applyAreYouSure ( editContentZone . firstElementChild ) ;
94
+ form = editContentZone . querySelector ( 'form' ) ;
95
+ applyAreYouSure ( form ) ;
91
96
const saveButton = querySingleVisibleElem < HTMLButtonElement > ( editContentZone , '.ui.primary.button' ) ;
92
97
const cancelButton = querySingleVisibleElem < HTMLButtonElement > ( editContentZone , '.ui.cancel.button' ) ;
93
98
comboMarkdownEditor = await initComboMarkdownEditor ( editContentZone . querySelector ( '.combo-markdown-editor' ) ) ;
94
99
const syncUiState = ( ) => saveButton . disabled = comboMarkdownEditor . isUploading ( ) ;
95
100
comboMarkdownEditor . container . addEventListener ( ComboMarkdownEditor . EventUploadStateChanged , syncUiState ) ;
96
101
cancelButton . addEventListener ( 'click' , cancelAndReset ) ;
97
- saveButton . addEventListener ( 'click ' , saveAndRefresh ) ;
102
+ form . addEventListener ( 'submit ' , saveAndRefresh ) ;
98
103
}
99
104
100
105
// FIXME: ideally here should reload content and attachment list from backend for existing editor, to avoid losing data
0 commit comments