2024-11-14 21:48:41 +03:00
import { applyAreYouSure , initAreYouSure } from '../vendor/jquery.are-you-sure.ts' ;
2024-07-07 18:32:30 +03:00
import { handleGlobalEnterQuickSubmit } from './comp/QuickSubmit.ts' ;
2024-12-04 05:11:34 +03:00
import { queryElems } from '../utils/dom.ts' ;
import { initComboMarkdownEditor } from './comp/ComboMarkdownEditor.ts' ;
2024-06-21 10:40:33 +03:00
export function initGlobalFormDirtyLeaveConfirm() {
2024-06-22 07:52:09 +03:00
initAreYouSure ( window . jQuery ) ;
2024-06-21 10:40:33 +03:00
// Warn users that try to leave a page after entering data into a form.
// Except on sign-in pages, and for forms marked as 'ignore-dirty'.
2024-11-14 21:48:41 +03:00
if ( ! document . querySelector ( '.page-content.user.signin' ) ) {
applyAreYouSure ( 'form:not(.ignore-dirty)' ) ;
2024-06-21 10:40:33 +03:00
}
}
export function initGlobalEnterQuickSubmit() {
2024-12-04 05:11:34 +03:00
document . addEventListener ( 'keydown' , ( e : KeyboardEvent & { target : HTMLElement } ) = > {
2024-06-21 10:40:33 +03:00
if ( e . key !== 'Enter' ) return ;
const hasCtrlOrMeta = ( ( e . ctrlKey || e . metaKey ) && ! e . altKey ) ;
if ( hasCtrlOrMeta && e . target . matches ( 'textarea' ) ) {
if ( handleGlobalEnterQuickSubmit ( e . target ) ) {
e . preventDefault ( ) ;
}
} else if ( e . target . matches ( 'input' ) && ! e . target . closest ( 'form' ) ) {
// input in a normal form could handle Enter key by default, so we only handle the input outside a form
// eslint-disable-next-line unicorn/no-lonely-if
if ( handleGlobalEnterQuickSubmit ( e . target ) ) {
e . preventDefault ( ) ;
}
}
} ) ;
}
2024-12-04 05:11:34 +03:00
export function initGlobalComboMarkdownEditor() {
queryElems < HTMLElement > ( document , '.combo-markdown-editor:not(.custom-init)' , ( el ) = > initComboMarkdownEditor ( el ) ) ;
}