Skip to content

Conversation

@TrevorBurnham
Copy link
Contributor

Description

This PR is a fix for the longstanding visual glitch when clicking CopyToClipboard: Instead of briefly showing the popover in a "Pending" state, it uses the Permissions API ahead of time to determine whether the clipboard API is likely to succeed, then optimistically shows the popover in the "Success" or "Error" state depending on that value.

This has the advantage that the user gets immediate feedback that will be correct virtually every time, rather than having to wait for the async Clipboard API to resolve. The downside is that edge cases are possible: A user could disable clipboard permissions after the CopyToClipboard component renders, for instance, in which case the popover would incorrectly show a success message for a moment before showing an error message. I think this edge case behavior is acceptable, given the tradeoffs imposed on us by the async Clipboard API.

This is a simpler alternative to the previously-suggested fix at #3443.

How has this been tested?

I've run the dev server and clicked around in the CopyToClipboard demos. It's a much, much smoother experience with the immediate feedback this PR provides.

Review checklist

The following items are to be evaluated by the author(s) and the reviewer(s).

Correctness

  • Changes include appropriate documentation updates.
  • Changes are backward-compatible if not indicated, see CONTRIBUTING.md.
  • Changes do not include unsupported browser features, see CONTRIBUTING.md.
  • Changes were manually tested for accessibility, see accessibility guidelines.

Security

Testing

  • Changes are covered with new/existing unit tests?
  • Changes are covered with new/existing integration tests?

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@TrevorBurnham TrevorBurnham requested a review from a team as a code owner September 12, 2025 22:53
@TrevorBurnham TrevorBurnham requested review from taheramr and removed request for a team September 12, 2025 22:53
@taheramr taheramr self-requested a review October 23, 2025 09:33
@codecov
Copy link

codecov bot commented Oct 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.17%. Comparing base (b70a61d) to head (a44e3d3).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3855   +/-   ##
=======================================
  Coverage   97.17%   97.17%           
=======================================
  Files         856      856           
  Lines       25241    25247    +6     
  Branches     8938     8940    +2     
=======================================
+ Hits        24527    24533    +6     
  Misses        708      708           
  Partials        6        6           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@taheramr taheramr enabled auto-merge October 27, 2025 10:39
@taheramr taheramr added this pull request to the merge queue Oct 27, 2025
Merged via the queue into cloudscape-design:main with commit 1ad9423 Oct 27, 2025
47 of 48 checks passed
kuahuu pushed a commit to kuahuu/components that referenced this pull request Oct 27, 2025
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.

2 participants