Skip to content

🎨 Palette: [모달 닫기 버튼 접근성 개선] - #852

Open
seonghobae wants to merge 2 commits into
mainfrom
palette-fix-modal-close-accessibility-9257757827132673206
Open

🎨 Palette: [모달 닫기 버튼 접근성 개선]#852
seonghobae wants to merge 2 commits into
mainfrom
palette-fix-modal-close-accessibility-9257757827132673206

Conversation

@seonghobae

Copy link
Copy Markdown
Collaborator

💡 What:
EditTableModal 내의 닫기 버튼 내부 텍스트인 'X'를 <span aria-hidden="true">X</span>로 감싸 시각적으로만 보이고 스크린 리더에서는 무시되도록 개선했습니다.

🎯 Why:
해당 닫기 버튼은 이미 aria-label="닫기"가 설정되어 있지만, 내부에 있는 'X' 텍스트로 인해 스크린 리더 환경에 따라 "닫기 X"처럼 중복되어 읽히거나 불필요한 문자가 함께 읽혀 사용자에게 혼란을 줄 수 있었습니다.

♿ Accessibility:
버튼에 이미 부여된 aria-label="닫기"만 정확하게 스크린 리더에 의해 읽히도록 하여(보조 기기 사용자에게 불필요한 'X' 문자 음성 출력 방지), 버튼의 목적과 기능을 더 명확하게 전달합니다.


PR created automatically by Jules for task 9257757827132673206 started by @seonghobae

💡 What:
EditTableModal 내의 닫기 버튼 내부 텍스트인 'X'를 `<span aria-hidden="true">X</span>`로 감싸 시각적으로만 보이고 스크린 리더에서는 무시되도록 개선했습니다.

🎯 Why:
해당 닫기 버튼은 이미 `aria-label="닫기"`가 설정되어 있지만, 내부에 있는 'X' 텍스트로 인해 스크린 리더 환경에 따라 "닫기 X"처럼 중복되어 읽히거나 불필요한 문자가 함께 읽혀 사용자에게 혼란을 줄 수 있었습니다.

♿ Accessibility:
버튼에 이미 부여된 `aria-label="닫기"`만 정확하게 스크린 리더에 의해 읽히도록 하여(보조 기기 사용자에게 불필요한 'X' 문자 음성 출력 방지), 버튼의 목적과 기능을 더 명확하게 전달합니다.
@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: eea18b45-e6db-4a40-a11a-8549a3bc8f8b

📥 Commits

Reviewing files that changed from the base of the PR and between 72afe6d and d16de0c.

📒 Files selected for processing (2)
  • .jules/palette.md
  • frontend/src/components/modals/EditTableModal.tsx

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.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Please perform a fresh independent review of unchanged exact head d984d4cecf57f7ae00e0667da738e1c77f259d8c. All current CI/security workflows are green and no unresolved inline thread is recorded; merge remains deferred until exact-head review evidence is available.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head='d984d4cecf57f7ae00e0667da738e1c77f259d8c'
actual_head="$(git rev-parse HEAD)"
echo "expected_head=${expected_head}"
echo "actual_head=${actual_head}"
git status --short
git show --no-ext-diff --format=fuller --stat "${expected_head}"
echo '--- parent(s) ---'
git show --no-ext-diff --format='%P' -s "${expected_head}"
echo '--- patch ---'
git show --no-ext-diff --format= "${expected_head}"
echo '--- candidate EditTableModal files ---'
fd -i 'EditTableModal' . -t f

Length of output: 3718


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- EditTableModal.tsx outline ---'
ast-grep outline frontend/src/components/modals/EditTableModal.tsx --items all --view expanded
echo '--- EditTableModal.test.tsx outline ---'
ast-grep outline frontend/src/components/modals/EditTableModal.test.tsx --items all --view expanded
echo '--- EditTableModal.tsx ---'
cat -n frontend/src/components/modals/EditTableModal.tsx
echo '--- accessible-name and close-button test references ---'
rg -n -i -C 4 'aria-label|닫기|close|button|EditTableModal' frontend/src/components/modals/EditTableModal.test.tsx
echo '--- component test file ---'
cat -n frontend/src/components/modals/EditTableModal.test.tsx

Length of output: 23990


@seonghobae Fresh independent review completed for exact head d984d4cecf57f7ae00e0667da738e1c77f259d8c.

I confirmed that the checked-out HEAD matches the requested commit.

I reviewed the complete commit diff and the affected EditTableModal component. The close button retains its accessible name, "닫기", and its existing cancel handler. The visual X is now excluded from the accessibility tree. This prevents duplicate or unnecessary announcement without changing visible output or button behavior.

I found no issues in the reviewed changes.

The sandbox review did not execute tests. I used the provided green CI and security workflow status as external verification.

⚠️ Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 48 minutes.

💡 What:
EditTableModal 내의 닫기 버튼 내부 텍스트인 'X'를 `<span aria-hidden="true">X</span>`로 감싸 시각적으로만 보이고 스크린 리더에서는 무시되도록 개선했습니다.

🎯 Why:
해당 닫기 버튼은 이미 `aria-label="닫기"`가 설정되어 있지만, 내부에 있는 'X' 텍스트로 인해 스크린 리더 환경에 따라 "닫기 X"처럼 중복되어 읽히거나 불필요한 문자가 함께 읽혀 사용자에게 혼란을 줄 수 있었습니다.

♿ Accessibility:
버튼에 이미 부여된 `aria-label="닫기"`만 정확하게 스크린 리더에 의해 읽히도록 하여(보조 기기 사용자에게 불필요한 'X' 문자 음성 출력 방지), 버튼의 목적과 기능을 더 명확하게 전달합니다.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Please review exact current head d16de0c30e61c164434bc171cec70b92f0b72652. The prior positive review was bound to predecessor d984d4ce…; this head additionally records the accessibility rationale in .jules/palette.md. Current-head CI, Security Scan, and SAST are successful, and no unresolved inline thread or formal approval is present.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head='d16de0c30e61c164434bc171cec70b92f0b72652'
actual_head="$(git rev-parse HEAD)"

printf 'expected_head=%s\nactual_head=%s\n' "$expected_head" "$actual_head"
echo '--- working tree ---'
git status --short
echo '--- commit metadata ---'
git show --no-ext-diff --format=fuller --stat "$expected_head"
echo '--- parent(s) ---'
git show --no-ext-diff --format='%P' -s "$expected_head"
echo '--- current-head patch ---'
git show --no-ext-diff --format= "$expected_head"
echo '--- candidate files ---'
fd -HI -t f -i 'EditTableModal|palette' .

Length of output: 1868


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='d16de0c30e61c164434bc171cec70b92f0b72652'
parent='d984d4cecf57f7ae00e0667da738e1c77f259d8c'

echo '--- head and parent tree IDs ---'
git rev-parse "${head}^{tree}" "${parent}^{tree}"
echo '--- direct file changes ---'
git diff-tree --no-commit-id --name-status -r "$head"
echo '--- pull request metadata ---'
gh pr view 852 --repo ContextualWisdomLab/pg-erd-cloud \
  --json number,baseRefOid,headRefOid,changedFiles,commits \
  --jq '{number, baseRefOid, headRefOid, changedFiles, commits: [.commits[] | {oid, messageHeadline}]}'
base="$(gh pr view 852 --repo ContextualWisdomLab/pg-erd-cloud --json baseRefOid --jq .baseRefOid)"
printf '%s\n' '--- complete PR diff summary ---'
git diff --stat "${base}...${head}"
printf '%s\n' '--- complete PR file changes ---'
git diff --name-status "${base}...${head}"
printf '%s\n' '--- TypeScript file outlines ---'
ast-grep outline frontend/src/components/modals/EditTableModal.tsx --items all --view expanded
ast-grep outline frontend/src/components/modals/EditTableModal.test.tsx --items all --view expanded
printf '%s\n' '--- palette files ---'
for file in .Jules/palette.md .jules/palette.md; do
  if [ -f "$file" ]; then
    echo "--- $file ---"
    cat -n "$file"
  fi
done
printf '%s\n' '--- relevant component and test references ---'
rg -n -C 4 'aria-label|aria-hidden|닫기|close|button' \
  frontend/src/components/modals/EditTableModal.tsx \
  frontend/src/components/modals/EditTableModal.test.tsx

Length of output: 43254


@seonghobae I completed an independent review of exact head d16de0c30e61c164434bc171cec70b92f0b72652.

HEAD matches the requested commit. The working tree is clean.

The requested commit has no direct file diff from d984d4cecf57f7ae00e0667da738e1c77f259d8c. Both commits have the same tree. I reviewed the full PR range from base 72afe6db712b145baaba084f64a1ff4fb36d9fd0.

The PR changes these files:

  • .jules/palette.md
  • frontend/src/components/modals/EditTableModal.tsx

The close button keeps aria-label="닫기" and its existing onEditTableCancel handler. The visual X is hidden from assistive technologies with <span aria-hidden="true">X</span>. This keeps the visible control unchanged and prevents the X from adding unnecessary text to the button’s accessible name.

The palette entry accurately documents this rationale.

I found no issues in the reviewed changes. The sandbox did not run tests. I considered the reported successful CI, Security Scan, and SAST as external verification.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Please run the formal independent review for exact head d16de0c30e61c164434bc171cec70b92f0b72652. Repository CI 31447465355, Security Scan 31447465305, and SAST Semgrep 31447465300 are terminal-success, and zero unresolved inline threads remain. Verify the accessibility rationale and the complete current diff; submit APPROVE only for this unchanged exact head if no blocker remains.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant