// DOM 요소에 액션 이벤트 속성 추가
export const addActionEventAttribute = (target, action, actionName) => {
target.setAttribute(`data-action-${action}`, actionName);
};
// 데이터 속성을 가진 상위 요소 찾기
const getDataTarget = (container, target, data) => {
let actionTarget = target;
while (actionTarget && actionTarget !== container && !actionTarget.hasAttribute(data)) {
actionTarget = actionTarget.parentElement;
}
return actionTarget;
};
// 이벤트 리스너 설정
export const listenActionEvent = (root, action, actions) => {
root.addEventListener(action, (e) => {
const target = getDataTarget(root, e.target, `data-action-${action}`);
if (!target) return;
const actionName = target.getAttribute(`data-action-${action}`);
if (actionName in actions) {
actions[actionName](target, e);
}
});
};