close showHelp() if input element has can-close-on-esc class

This commit is contained in:
tophf 2017-12-03 00:22:03 +03:00
parent a5f31162f6
commit 904e6017f2

View File

@ -564,21 +564,32 @@ function showHelp(title = '', body) {
div.style = 'display: block'; div.style = 'display: block';
return div; return div;
function closeHelp(e) { function closeHelp(event) {
if (!e || e.type === 'click' || const canClose =
(e.which === 27 && !e.altKey && !e.ctrlKey && !e.shiftKey && !e.metaKey && !event ||
!$('.CodeMirror-hints, #message-box') && !(document.activeElement instanceof HTMLInputElement))) { event.type === 'click' ||
if (e && div.codebox && !div.codebox.options.readOnly && !div.codebox.isClean()) { (
messageBox.confirm(t('confirmDiscardChanges')).then(ok => ok && closeHelp()); event.which === 27 &&
return; !event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey &&
} !$('.CodeMirror-hints, #message-box') &&
div.style.display = ''; (
contents.textContent = ''; !document.activeElement ||
clearTimeout(contents.timer); document.activeElement.matches(':not(input), .can-close-on-esc')
window.removeEventListener('keydown', closeHelp, true); )
window.dispatchEvent(new Event('closeHelp')); );
(editors.lastActive || editors[0]).focus(); if (!canClose) {
return;
} }
if (event && div.codebox && !div.codebox.options.readOnly && !div.codebox.isClean()) {
messageBox.confirm(t('confirmDiscardChanges')).then(ok => ok && closeHelp());
return;
}
div.style.display = '';
contents.textContent = '';
clearTimeout(contents.timer);
window.removeEventListener('keydown', closeHelp, true);
window.dispatchEvent(new Event('closeHelp'));
(editors.lastActive || editors[0]).focus();
} }
} }