Skip to content

fix: 지원자 현황 카드 토글 영역 수정#603

Open
manNomi wants to merge 1 commit into
mainfrom
fix/application-score-toggle-area
Open

fix: 지원자 현황 카드 토글 영역 수정#603
manNomi wants to merge 1 commit into
mainfrom
fix/application-score-toggle-area

Conversation

@manNomi

@manNomi manNomi commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

관련 이슈

  • 없음

작업 내용

  • 지원자 현황 카드 헤더에서 학교명 텍스트만 상세 이동 링크로 동작하도록 유지했습니다.
  • 학교명 외 헤더 여백과 화살표 버튼 클릭 시 지원자 목록이 펼침/접힘 처리되도록 수정했습니다.
  • 링크와 버튼 클릭이 부모 토글 이벤트와 중복 실행되지 않도록 이벤트 전파를 막았습니다.

검증

  • pnpm --filter @solid-connect/web run lint:check
  • pnpm --filter @solid-connect/web run typecheck:ci
  • push hook의 @solid-connect/web CI parity checks 통과

특이 사항

  • UI 구조 변경 없이 클릭 이벤트 범위만 조정했습니다.

리뷰 요구사항 (선택)

  • 학교명 텍스트 클릭과 헤더 여백 클릭의 동작이 의도대로 분리됐는지 확인 부탁드립니다.

@manNomi manNomi requested a review from wibaek as a code owner July 8, 2026 12:42
@vercel

vercel Bot commented Jul 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
solid-connect-university-web Ready Ready Preview, Comment Jul 8, 2026 12:45pm
solid-connection-web Ready Ready Preview, Comment Jul 8, 2026 12:45pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
solid-connect-web-admin Skipped Skipped Jul 8, 2026 12:45pm

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5a7f398976

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

<Link href={resolvedDetailHref} className="min-w-0 flex-1 truncate text-k-900 typo-sb-7">
<Link
href={resolvedDetailHref}
className="min-w-0 flex-1 truncate text-k-900 typo-sb-7"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Shrink the detail link to the text only

When a university name is shorter than the row, this <Link> still has flex-1, so it expands across all remaining header space between the icon and arrow. Tapping that blank area will navigate to the detail page and stopPropagation() prevents the new parent toggle from running, which contradicts the intended split where only the school-name text is the link and surrounding header whitespace toggles the applicant list.

Useful? React with 👍 / 👎.

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

  1. MobileScoreSheet 컴포넌트의 접힘/펼침 토글 로직을 toggleTableOpened라는 이름의 별도 함수로 추출했습니다.
    • 헤더 전체 div의 onClick 핸들러가 이 함수를 직접 호출하도록 변경되었습니다.
  2. 헤더 내부 요소들의 이벤트 전파를 제어했습니다.
    • Link 클릭 시 stopPropagation을 호출해 헤더 클릭과 중복 발생하지 않도록 했습니다.
    • 토글 버튼 클릭 시에도 stopPropagation 이후 toggleTableOpened를 호출하도록 변경했습니다.
  3. 헤더 className의 clsx 호출을 멀티라인으로 재작성했으나, 실제 클래스 선택 로직에는 변화가 없습니다.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Suggested reviewers: wibaek

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 지원자 현황 카드의 토글 영역 클릭 동작 수정이라는 핵심 변경을 간결하게 잘 요약합니다.
Description check ✅ Passed 필수 섹션인 관련 이슈, 작업 내용, 특이 사항이 모두 포함되어 있고 검증과 리뷰 요청도 잘 정리되어 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/application-score-toggle-area

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/web/src/app/university/application/ScoreSheet.tsx`:
- Around line 78-96: The score sheet header currently toggles only on mouse
click via the clickable div, so add keyboard support in ScoreSheet while keeping
the existing toggle behavior. Prefer refactoring the header container into a
single interactive element that can be focused and activated by keyboard without
nesting the existing Link and button, or at minimum add role, tabIndex, and an
onKeyDown handler for Enter/Space to the header wrapper and ensure
toggleTableOpened is invoked consistently. Use the existing toggleTableOpened,
resolvedDetailHref, and the header Link/button structure in ScoreSheet to locate
the change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d66e39c7-a531-44f2-a824-920289b9837d

📥 Commits

Reviewing files that changed from the base of the PR and between 213318d and 5a7f398.

📒 Files selected for processing (1)
  • apps/web/src/app/university/application/ScoreSheet.tsx

Comment on lines +78 to +96
className={clsx(
"flex min-h-11 w-full cursor-pointer items-center gap-2.5 px-4",
tableOpened ? "bg-secondary-100" : "bg-k-50",
)}
onClick={toggleTableOpened}
>
<span className="size-5 shrink-0 rounded-full bg-white" aria-hidden />
<Link href={resolvedDetailHref} className="min-w-0 flex-1 truncate text-k-900 typo-sb-7">
<Link
href={resolvedDetailHref}
className="min-w-0 flex-1 truncate text-k-900 typo-sb-7"
onClick={(event) => event.stopPropagation()}
>
{scoreSheet.koreanName} ({scoreSheet.applicants.length}/{capacity})
</Link>
<button
onClick={() => setTableOpened((prev) => !prev)}
onClick={(event) => {
event.stopPropagation();
toggleTableOpened();
}}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

1. 헤더 div의 키보드 접근성 보완이 필요해요

헤더 <div>onClickcursor-pointer를 추가해 마우스 사용자에게는 전체 영역이 토글 영역으로 인식되지만, role="button", tabIndex, onKeyDown 등 키보드 접근성 속성이 없습니다. 키보드 사용자는 내부 작은 버튼으로만 토글할 수 있어, PR 의도인 "헤더 영역 클릭으로 토글" 경험이 마우스 사용자에게만 제공됩니다.

다만 divrole="button"을 추가하면 내부에 이미 <button><Link>(보조 기술에서 interactive 요소로 인식)이 존재해 중첩 interactive 요소 문제가 발생할 수 있으므로, 아래 두 방안 중 하나를 고려해 보세요.

방안 A (권장): 헤더 전체를 <button>으로 변경하고 Link를 <span> + useRouter 기반 네비게이션으로 대체

  • 중첩 interactive 요소를 피하면서 헤더 전체에 키보드 접근성을 부여합니다.

방안 B (최소 변경): div에 키보드 핸들러 추가

  • role="button", tabIndex={0}, onKeyDown에서 Enter/Space 시 toggleTableOpened() 호출. 단, 스크린 리더 사용자에게 중첩 interactive 요소 경고가 발생할 수 있습니다.
♿ 방안 B 최소 변경 제안
       <div
         className={clsx(
           "flex min-h-11 w-full cursor-pointer items-center gap-2.5 px-4",
           tableOpened ? "bg-secondary-100" : "bg-k-50",
         )}
         onClick={toggleTableOpened}
+        role="button"
+        tabIndex={0}
+        onKeyDown={(event) => {
+          if (event.key === "Enter" || event.key === " ") {
+            event.preventDefault();
+            event.stopPropagation();
+            toggleTableOpened();
+          }
+        }}
       >
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
className={clsx(
"flex min-h-11 w-full cursor-pointer items-center gap-2.5 px-4",
tableOpened ? "bg-secondary-100" : "bg-k-50",
)}
onClick={toggleTableOpened}
>
<span className="size-5 shrink-0 rounded-full bg-white" aria-hidden />
<Link href={resolvedDetailHref} className="min-w-0 flex-1 truncate text-k-900 typo-sb-7">
<Link
href={resolvedDetailHref}
className="min-w-0 flex-1 truncate text-k-900 typo-sb-7"
onClick={(event) => event.stopPropagation()}
>
{scoreSheet.koreanName} ({scoreSheet.applicants.length}/{capacity})
</Link>
<button
onClick={() => setTableOpened((prev) => !prev)}
onClick={(event) => {
event.stopPropagation();
toggleTableOpened();
}}
className={clsx(
"flex min-h-11 w-full cursor-pointer items-center gap-2.5 px-4",
tableOpened ? "bg-secondary-100" : "bg-k-50",
)}
onClick={toggleTableOpened}
role="button"
tabIndex={0}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
event.stopPropagation();
toggleTableOpened();
}
}}
>
<span className="size-5 shrink-0 rounded-full bg-white" aria-hidden />
<Link
href={resolvedDetailHref}
className="min-w-0 flex-1 truncate text-k-900 typo-sb-7"
onClick={(event) => event.stopPropagation()}
>
{scoreSheet.koreanName} ({scoreSheet.applicants.length}/{capacity})
</Link>
<button
onClick={(event) => {
event.stopPropagation();
toggleTableOpened();
}}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/app/university/application/ScoreSheet.tsx` around lines 78 - 96,
The score sheet header currently toggles only on mouse click via the clickable
div, so add keyboard support in ScoreSheet while keeping the existing toggle
behavior. Prefer refactoring the header container into a single interactive
element that can be focused and activated by keyboard without nesting the
existing Link and button, or at minimum add role, tabIndex, and an onKeyDown
handler for Enter/Space to the header wrapper and ensure toggleTableOpened is
invoked consistently. Use the existing toggleTableOpened, resolvedDetailHref,
and the header Link/button structure in ScoreSheet to locate the change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant