mirror of
https://github.com/go-gitea/gitea.git
synced 2026-02-09 07:25:39 +01:00
Fixes #36532 Refined the Enter key trigger logic in the repository filter to prevent actions during IME composition. By checking the e.isComposing property, the filter now correctly distinguishes between "confirming an IME candidate" and "submitting the search." This prevents premature search triggers when users press Enter to select Chinese/Japanese characters. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import {applyAreYouSure, initAreYouSure} from '../vendor/jquery.are-you-sure.ts';
|
|
import {handleGlobalEnterQuickSubmit} from './comp/QuickSubmit.ts';
|
|
import {queryElems} from '../utils/dom.ts';
|
|
import {initComboMarkdownEditor} from './comp/ComboMarkdownEditor.ts';
|
|
|
|
export function initGlobalFormDirtyLeaveConfirm() {
|
|
initAreYouSure(window.jQuery);
|
|
// 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'.
|
|
if (!document.querySelector('.page-content.user.signin')) {
|
|
applyAreYouSure('form:not(.ignore-dirty)');
|
|
}
|
|
}
|
|
|
|
export function initGlobalEnterQuickSubmit() {
|
|
document.addEventListener('keydown', (e) => {
|
|
if (e.isComposing) return;
|
|
if (e.key !== 'Enter') return;
|
|
const hasCtrlOrMeta = ((e.ctrlKey || e.metaKey) && !e.altKey);
|
|
if (hasCtrlOrMeta && (e.target as HTMLElement).matches('textarea')) {
|
|
if (handleGlobalEnterQuickSubmit(e.target as HTMLElement)) {
|
|
e.preventDefault();
|
|
}
|
|
} else if ((e.target as HTMLElement).matches('input') && !(e.target as HTMLElement).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 as HTMLElement)) {
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
export function initGlobalComboMarkdownEditor() {
|
|
queryElems<HTMLElement>(document, '.combo-markdown-editor:not(.custom-init)', (el) => initComboMarkdownEditor(el));
|
|
}
|