Skip to content

🎨 Palette: Add semantic disabled styles and event guards for async loading states - #1079

Open
seonghobae wants to merge 1 commit into
developfrom
palette-loading-state-ux-4461649168773865251
Open

🎨 Palette: Add semantic disabled styles and event guards for async loading states#1079
seonghobae wants to merge 1 commit into
developfrom
palette-loading-state-ux-4461649168773865251

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

πŸ’‘ What: scanner/dashboard/console.htmlμ—μ„œ button:disabled 및 [aria-busy="true"] 속성이 ν™œμ„±ν™”λœ μƒνƒœμ˜ μš”μ†Œλ“€μ— μ‹œκ°μ μœΌλ‘œ λΉ„ν™œμ„±ν™”λ˜μ—ˆμŒμ„ λͺ…ν™•νžˆ 보여주기 μœ„ν•΄ CSS 속성(opacity: 0.7; pointer-events: none;)을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, tr.scan μš”μ†Œμ˜ 이벀트 λ¦¬μŠ€λ„ˆ(클릭 및 μ—”ν„°/슀페이슀 ν‚€λ³΄λ“œ 이벀트)에 aria-busy 속성을 ν™•μΈν•˜λŠ” κ°€λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬, 데이터가 λ‘œλ”© 쀑일 λ•Œ μ€‘λ³΅μœΌλ‘œ 상세 정보λ₯Ό μš”μ²­ν•˜μ§€ μ•Šλ„λ‘ κ°œμ„ ν–ˆμŠ΅λ‹ˆλ‹€.

🎯 Why: κΈ°μ‘΄μ—λŠ” λ‘œλ”© μƒνƒœκ°€ μ‹œκ°μ μœΌλ‘œλ§Œ ν‘œμ‹œλ˜κ³ (ν˜Ήμ€ μ‹œκ°μ  ν”Όλ“œλ°±μ΄ λΆ€μ‘±ν•˜κ³ ) μ΄λ²€νŠΈλŠ” 계속 λ°œμƒν•  수 μžˆμ–΄, μ‚¬μš©μžκ°€ λΉ λ₯΄κ²Œ μ—¬λŸ¬ 번 ν΄λ¦­ν•˜κ±°λ‚˜ ν‚€λ₯Ό λˆ„λ₯Ό 경우 λΆˆν•„μš”ν•œ λ„€νŠΈμ›Œν¬ μš”μ²­μ΄ μ€‘λ³΅μœΌλ‘œ λ°œμƒν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό λ°©μ§€ν•˜κ³  더 λ§€λ„λŸ¬μš΄ UXλ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•¨μž…λ‹ˆλ‹€.

β™Ώ Accessibility:

  • pointer-events: none은 마우슀 이벀트만 막아주기 λ•Œλ¬Έμ—, ν‚€λ³΄λ“œ 이벀트(μ—”ν„°/μŠ€νŽ˜μ΄μŠ€λ°”)λ₯Ό μ‚¬μš©ν•˜λŠ” 슀크린 리더/ν‚€λ³΄λ“œ μ‚¬μš©μžλ„ 쀑볡 μ•‘μ…˜μ„ μ·¨ν•˜μ§€ μ•Šλ„λ‘ JavaScript 이벀트 κ°€λ“œλ₯Ό 톡해 λ™μΌν•œ 둜직이 μ μš©λ˜λ„λ‘ 보μž₯ν–ˆμŠ΅λ‹ˆλ‹€.
  • λ‘œλ”© μƒνƒœμΌ λ•Œ 뢈투λͺ…도 쑰절(opacity: 0.7)을 톡해 μ‹œκ°μ μΈ ν”Όλ“œλ°±μ„ μ œκ³΅ν•˜μ—¬, ν˜„μž¬ μ•‘μ…˜μ΄ μ§„ν–‰ μ€‘μž„μ„ λͺ…ν™•νžˆ 인지할 수 있게 ν–ˆμŠ΅λ‹ˆλ‹€.

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


Devin Review

…ading states

This commit adds semantic disabled styling (`opacity: 0.7; pointer-events: none;`) to elements with `button:disabled` and `[aria-busy="true"]`. It also adds explicit event guards to the `.scan` row click and keydown handlers in `scanner/dashboard/console.html` to prevent multiple overlapping requests when a row is already in a busy/loading state, fixing an issue where users could rapidly click/press enter on rows.
@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 Sep 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 33 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

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

Learn how review limits work.

Review configuration:

βš™οΈ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bba4ce2b-5984-4664-9bf2-8c6802d23005

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between e71d37e and 2d9a1c6.

πŸ“’ Files selected for processing (3)
  • .jules/palette.md
  • plan.md
  • scanner/dashboard/console.html

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.

@devin-ai-integration devin-ai-integration 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.

Devin Review found 1 potential issue.

Devin Review

tr.onclick=()=>detail(tr.dataset.id,tr);
tr.addEventListener('keydown', e => { if(e.key === 'Enter' || e.key === ' ') { e.preventDefault(); detail(tr.dataset.id,tr); } });
tr.onclick=()=>{ if(tr.getAttribute("aria-busy") === "true") return; detail(tr.dataset.id,tr); };
tr.addEventListener('keydown', e => { if(tr.getAttribute('aria-busy') === 'true') return; if(e.key === 'Enter' || e.key === ' ') { e.preventDefault(); detail(tr.dataset.id,tr); } });

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟑 Busy rows scroll unexpectedly

Pressing Space on a busy row returns before preventDefault(), so the page scrolls instead of ignoring the repeated activation.

Suggested change
tr.addEventListener('keydown', e => { if(tr.getAttribute('aria-busy') === 'true') return; if(e.key === 'Enter' || e.key === ' ') { e.preventDefault(); detail(tr.dataset.id,tr); } });
tr.addEventListener('keydown', e => { if(e.key === 'Enter' || e.key === ' ') { e.preventDefault(); if(tr.getAttribute('aria-busy') === 'true') return; detail(tr.dataset.id,tr); } });
Devin Review

Was this helpful? React with πŸ‘ or πŸ‘Ž to provide feedback.

@seonghobae seonghobae added enhancement New feature or request type: feature New or expanded product capability priority: medium Normal-priority or P2 work labels Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: medium Normal-priority or P2 work type: feature New or expanded product capability

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant