fix(shortcut): Address PR review feedback

- Use `target.isContentEditable` instead of `[contenteditable="true"]` selector
  to properly detect all contenteditable elements
- Use `CSS.escape()` for keyboard shortcut key to handle special characters
- Rename scoped CSS class to `.repo-file-search-shortcut-hint` to avoid
  conflict with global `.repo-search-shortcut-hint` styles
This commit is contained in:
micahkepe
2026-02-14 22:43:52 -08:00
committed by Micah Kepe
parent 663612cdab
commit a5480131b5
2 changed files with 7 additions and 6 deletions
+4 -3
View File
@@ -69,9 +69,9 @@ function attachGlobalEvents() {
// Elements declare their keyboard shortcuts via data-global-keyboard-shortcut attribute.
// When a matching key is pressed, the element is focused (for inputs) or clicked (for buttons/links).
document.addEventListener('keydown', (e: KeyboardEvent) => {
// Don't trigger shortcuts when typing in input fields
// Don't trigger shortcuts when typing in input fields or contenteditable areas
const target = e.target as HTMLElement;
if (target.matches('input, textarea, select, [contenteditable="true"]')) {
if (target.matches('input, textarea, select') || target.isContentEditable) {
return;
}
@@ -82,7 +82,8 @@ function attachGlobalEvents() {
// Find element with matching shortcut (case-insensitive)
const key = e.key.toLowerCase();
const elem = document.querySelector<HTMLElement>(`[data-global-keyboard-shortcut="${key}"]`);
const escapedKey = CSS.escape(key);
const elem = document.querySelector<HTMLElement>(`[data-global-keyboard-shortcut="${escapedKey}"]`);
if (!elem) return;
e.preventDefault();