메인페이지 탭이동
Deploy Frontend / deploy (push) Successful in 2m54s

This commit is contained in:
2026-10-02 21:52:10 +09:00
parent ff45d1a875
commit 68a800cdfc
3 changed files with 47 additions and 6 deletions
@@ -78,6 +78,15 @@
opacity: 1;
}
.svgContainer :global(svg) :global(.basin:focus-visible) {
opacity: 1;
}
.svgContainer :global(svg) :global(.basin:focus-visible) :global(path) {
stroke: #111827;
stroke-width: 2.5;
}
.svgContainer :global(svg) :global(.basin) :global(path),
.svgContainer :global(svg) :global(.basin) :global(polygon),
.svgContainer :global(svg) :global(.basin) :global(polyline) {
@@ -265,20 +265,44 @@ export function useNationalAsMap(basinDocPrgrsList: BasinDocPrgrsResponseDto[] |
};
groups.forEach((group) => {
addListener(group, "mouseenter", () => {
group.setAttribute("role", "button");
group.setAttribute("tabindex", "0");
group.setAttribute(
"aria-label",
`${resolveBasinName(group)} 행정지원 현황 보기`,
);
const activateGroup = () => {
clearActive?.();
group.classList.add("active");
revealGroup(group);
};
const clearGroupIfInactive = () => {
if (!group.matches(":hover") && document.activeElement !== group) {
clearActive?.();
}
};
addListener(group, "mouseenter", () => {
activateGroup();
});
addListener(group, "mousemove", () => {
if (group.classList.contains("active")) revealGroup(group);
});
addListener(group, "mouseleave", () => clearActive?.());
addListener(group, "mouseleave", clearGroupIfInactive);
addListener(group, "focus", activateGroup);
addListener(group, "blur", clearGroupIfInactive);
addListener(group, "click", (event) => {
event.stopPropagation();
clearActive?.();
group.classList.add("active");
revealGroup(group);
activateGroup();
});
addListener(group, "keydown", (event) => {
const keyboardEvent = event as KeyboardEvent;
if (keyboardEvent.key !== "Enter" && keyboardEvent.key !== " ") {
return;
}
keyboardEvent.preventDefault();
activateGroup();
});
});
@@ -58,8 +58,16 @@ function DataTable<T>({
<TableRow
key={row.id}
onClick={() => onRowClick?.(row.original)}
onKeyDown={(event) => {
if (event.target !== event.currentTarget) return;
if (event.key !== "Enter" && event.key !== " ") return;
event.preventDefault();
onRowClick?.(row.original);
}}
tabIndex={onRowClick ? 0 : undefined}
className={cn(
onRowClick && "cursor-pointer hover:bg-accent",
onRowClick &&
"cursor-pointer hover:bg-accent focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary",
isSelectedRow && "!bg-primary-transparent",
)}
>