Skip to content

Commit be12c62

Browse files
committed
do not check hidden form's dirty state
1 parent 9d4f26e commit be12c62

File tree

3 files changed

+6
-14
lines changed

3 files changed

+6
-14
lines changed

web_src/js/features/repo-issue-edit.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@ async function tryOnEditContent(e) {
2020
const rawContent = segment.querySelector('.raw-content');
2121

2222
let comboMarkdownEditor : ComboMarkdownEditor;
23-
let form: HTMLFormElement;
2423

2524
const cancelAndReset = (e) => {
2625
e.preventDefault();
27-
form.classList.add('ignore-dirty');
2826
showElem(renderContent);
2927
hideElem(editContentZone);
3028
comboMarkdownEditor.dropzoneReloadFiles();
@@ -51,8 +49,7 @@ async function tryOnEditContent(e) {
5149
showErrorToast(data.errorMessage);
5250
return;
5351
}
54-
form.classList.remove('ignore-dirty'); // the form is no longer dirty
55-
reinitializeAreYouSure(form);
52+
reinitializeAreYouSure(editContentZone.querySelector('form')); // the form is no longer dirty
5653
editContentZone.setAttribute('data-content-version', data.contentVersion);
5754
if (!data.content) {
5855
renderContent.innerHTML = document.querySelector('#no-content').innerHTML;
@@ -91,7 +88,7 @@ async function tryOnEditContent(e) {
9188
comboMarkdownEditor = getComboMarkdownEditor(editContentZone.querySelector('.combo-markdown-editor'));
9289
if (!comboMarkdownEditor) {
9390
editContentZone.innerHTML = document.querySelector('#issue-comment-editor-template').innerHTML;
94-
form = editContentZone.querySelector('form');
91+
const form = editContentZone.querySelector('form');
9592
applyAreYouSure(form);
9693
const saveButton = querySingleVisibleElem<HTMLButtonElement>(editContentZone, '.ui.primary.button');
9794
const cancelButton = querySingleVisibleElem<HTMLButtonElement>(editContentZone, '.ui.cancel.button');
@@ -100,9 +97,6 @@ async function tryOnEditContent(e) {
10097
comboMarkdownEditor.container.addEventListener(ComboMarkdownEditor.EventUploadStateChanged, syncUiState);
10198
cancelButton.addEventListener('click', cancelAndReset);
10299
form.addEventListener('submit', saveAndRefresh);
103-
} else {
104-
form = editContentZone.querySelector('form');
105-
form.classList.remove('ignore-dirty'); // the form is shown again, respect the "dirty" state
106100
}
107101

108102
// FIXME: ideally here should reload content and attachment list from backend for existing editor, to avoid losing data

web_src/js/features/repo-issue.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,6 @@ export function initRepoIssueTitleEdit() {
538538
const issueTitleInput = issueTitleEditor.querySelector('input');
539539
const oldTitle = issueTitleInput.getAttribute('data-old-title');
540540
issueTitleDisplay.querySelector('#issue-title-edit-show').addEventListener('click', () => {
541-
issueTitleEditor.classList.remove('ignore-dirty');
542541
hideElem(issueTitleDisplay);
543542
hideElem('#pull-desc-display');
544543
showElem(issueTitleEditor);
@@ -549,7 +548,6 @@ export function initRepoIssueTitleEdit() {
549548
issueTitleInput.focus();
550549
});
551550
issueTitleEditor.querySelector('.ui.cancel.button').addEventListener('click', () => {
552-
issueTitleEditor.classList.add('ignore-dirty');
553551
hideElem(issueTitleEditor);
554552
hideElem('#pull-desc-editor');
555553
showElem(issueTitleDisplay);

web_src/js/vendor/jquery.are-you-sure.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,10 @@ export function initAreYouSure($) {
162162
if (!settings.silent && !window.aysUnloadSet) {
163163
window.aysUnloadSet = true;
164164
$(window).bind('beforeunload', function() {
165-
const $dirtyForms = $("form:not(.ignore-dirty)").filter('.' + settings.dirtyClass);
166-
if ($dirtyForms.length == 0) {
167-
return;
168-
}
165+
const $forms = $("form:not(.ignore-dirty)").filter('.' + settings.dirtyClass);
166+
const dirtyFormCount = Array.from($forms).reduce((res, form) => form.closest('.tw-hidden') ? res : res + 1, 0);
167+
if (dirtyFormCount === 0) return;
168+
169169
// Prevent multiple prompts - seen on Chrome and IE
170170
if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) {
171171
if (window.aysHasPrompted) {

0 commit comments

Comments
 (0)