Files
QuantEngineByItz/src/dotnet/QuantEngine.Web/wwwroot/js/douzone-keyboard.js
T
kjh2064 2fe4cb288f
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 13s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 19s
feat(quant): WBS-FE-BE-100 complete Vue3 Vite8 SPA & .NET10 FastEndpoints refactoring
2026-07-22 15:14:28 +09:00

54 lines
2.3 KiB
JavaScript

/**
* Douzone ERP Keyboard Engine & Hotkey Manager
* Standard: Enter-key focus traversal, Tab/Shift+Tab grid navigation, F-Key bindings (F2, F3, F4, F5, F7).
*/
document.addEventListener("DOMContentLoaded", function () {
// 1. Enter Key Focus Traversal
document.addEventListener("keydown", function (e) {
if (e.key === "Enter") {
const target = e.target;
// Do not intercept Enter key on submit buttons or textareas
if (target.tagName === "TEXTAREA" || (target.tagName === "BUTTON" && target.type === "submit")) {
return;
}
const focusableElements = Array.from(
document.querySelectorAll("input:not([type='hidden']):not([disabled]):not([readonly]), select:not([disabled]), button:not([disabled])")
);
const index = focusableElements.indexOf(target);
if (index > -1 && index < focusableElements.length - 1) {
e.preventDefault();
focusableElements[index + 1].focus();
}
}
});
// 2. Douzone F-Key Hotkey Standard Listeners
document.addEventListener("keydown", function (e) {
switch (e.key) {
case "F3": // 조회 (Search / Inquire)
e.preventDefault();
const btnSearch = document.getElementById("btnDouzoneSearch") || document.querySelector(".btn-douzone-search");
if (btnSearch) btnSearch.click();
break;
case "F4": // 저장 (Save)
e.preventDefault();
const btnSave = document.getElementById("btnDouzoneSave") || document.querySelector(".btn-douzone-save");
if (btnSave) btnSave.click();
break;
case "F5": // 삭제 (Delete)
e.preventDefault();
const btnDelete = document.getElementById("btnDouzoneDelete") || document.querySelector(".btn-douzone-delete");
if (btnDelete) btnDelete.click();
break;
case "F7": // 엑셀 다운로드 (Excel Export)
e.preventDefault();
const btnExcel = document.getElementById("btnDouzoneExcel") || document.querySelector(".btn-douzone-excel");
if (btnExcel) btnExcel.click();
break;
}
});
});