fix(rolesList): 직원 체크박스 클릭 시 이중 토글로 해제 안 되던 버그
증상: 권한있는/없는 직원 영역의 체크박스를 클릭하면 즉시 다시 해제됨
처럼 보이고 (사실은 두 번 토글됨), 체크 상태 자체가 유지 안 됨.
전체선택 버튼 (별개 핸들러) 만 정상 동작.
원인: <li onClick={토글}><Checkbox onCheckedChange={토글} /></li> 구조에서
체크박스 클릭 → onCheckedChange 트리거 (토글 1회) → 이벤트가 li 로 버블 →
li onClick 트리거 (토글 1회 더) → 합쳐서 2회 토글 = 원상복귀.
수정: Checkbox 에 onClick={(e) => e.stopPropagation()} 추가해서 li 로
버블 차단. li 빈 영역 클릭 시는 li onClick 만 동작, 체크박스 직접 클릭
시는 onCheckedChange 만 동작 — 둘 다 정확히 1회 토글.
권한있는 직원 + 권한없는 직원 두 곳 모두 수정.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -781,6 +781,7 @@ export default function RolesPage() {
|
||||
<Checkbox
|
||||
checked={checkedMembers.has(u.user_id)}
|
||||
onCheckedChange={() => toggleMemberCheck(u.user_id)}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
/>
|
||||
<div className="min-w-0 flex-1">
|
||||
<div className="truncate text-sm">{u.user_name || u.user_id}</div>
|
||||
@@ -877,6 +878,7 @@ export default function RolesPage() {
|
||||
<Checkbox
|
||||
checked={checkedNonMembers.has(u.user_id)}
|
||||
onCheckedChange={() => toggleNonMemberCheck(u.user_id)}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
/>
|
||||
<div className="min-w-0 flex-1">
|
||||
<div className="truncate text-sm">{u.user_name || u.user_id}</div>
|
||||
|
||||
Reference in New Issue
Block a user