feat: implement Enter key autofocus keyboard navigation and robust E2E selector clicking
TaxBaik CI/CD / build-and-deploy (push) Successful in 53s

This commit is contained in:
2026-06-30 22:51:58 +09:00
parent ba158f9824
commit 163812e964
3 changed files with 50 additions and 8 deletions
+42
View File
@@ -100,3 +100,45 @@ window.taxbaikAdminSession = {
.observe(modal, { attributes: true, attributeFilter: ['class'] });
}
};
// 더존 ERP 스타일 엔터 키 포커스 이동 및 단축키 바인딩
document.addEventListener('keydown', function (e) {
if (e.key === 'Enter') {
const active = document.activeElement;
if (!active) return;
// 특정 영역(편집 폼 또는 다이얼로그) 내의 입력 필드만 포커스 이동 처리
const container = active.closest('.admin-editor-panel, .mud-form, .mud-dialog');
if (!container) return;
// textarea나 button, submit 타입 등은 기본 동작(줄바꿈/제출) 유지
if (active.tagName === 'TEXTAREA' ||
active.tagName === 'BUTTON' ||
active.getAttribute('type') === 'submit' ||
active.classList.contains('mud-button-root')) {
return;
}
e.preventDefault();
// 포커스 이동 가능한 모든 입력 요소 수집
const focusables = Array.from(container.querySelectorAll('input, select, textarea, button'))
.filter(el => {
const style = window.getComputedStyle(el);
return el.tabIndex >= 0 &&
!el.disabled &&
el.getAttribute('aria-disabled') !== 'true' &&
style.display !== 'none' &&
style.visibility !== 'hidden';
});
const index = focusables.indexOf(active);
if (index > -1 && index < focusables.length - 1) {
const nextEl = focusables[index + 1];
nextEl.focus();
if (typeof nextEl.select === 'function') {
nextEl.select();
}
}
}
});