Skip to content

fix(dropdown-menu): avoid overflow at bottom of viewport#4495

Merged
dkoo merged 5 commits intotrunkfrom
fix/dropdown-overflow
Mar 3, 2026
Merged

fix(dropdown-menu): avoid overflow at bottom of viewport#4495
dkoo merged 5 commits intotrunkfrom
fix/dropdown-overflow

Conversation

@dkoo
Copy link
Copy Markdown
Contributor

@dkoo dkoo commented Feb 18, 2026

All Submissions:

Changes proposed in this Pull Request:

Something I noticed while testing #4471. The dropdown menu avoids rendering itself beyond the right edge of the viewport when the container is close to the edge, but not the bottom. This adds a similar fix to avoid rendering beyond the bottom of the viewport.

How to test the changes in this Pull Request:

This is easiest to test in My Account at a mobile-sized viewport.

  1. Log into My Account and visit My Subscription.
  2. On trunk, in a mobile-sized viewport, scroll to the bottom and click/tap the three-dot dropdown menu icon under "Billing history". Observe that the menu renders below the visible part of the viewport, obscuring the menu items:
Screenshot 2026-02-18 at 10 46 20 AM
  1. Check out this branch and refresh. Open the same dropdown menu and confirm that it renders anchored to the bottom-right corner of the visible viewport, with all menu items visible:
Screenshot 2026-02-18 at 10 47 44 AM

Other information:

  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your changes, as applicable?
  • Have you successfully ran tests with your changes locally?

@dkoo dkoo requested a review from thomasguillot February 18, 2026 17:48
@dkoo dkoo self-assigned this Feb 18, 2026
Copilot AI review requested due to automatic review settings February 18, 2026 17:48
@dkoo dkoo requested a review from a team as a code owner February 18, 2026 17:48
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes an issue where dropdown menus render beyond the bottom edge of the viewport on mobile devices. It adds vertical overflow detection logic similar to the existing horizontal overflow detection, repositioning dropdowns that would otherwise be partially hidden.

Changes:

  • Added vertical overflow detection to reposition dropdowns when they would extend beyond the bottom of the viewport
  • Removed unnecessary intermediate variable viewportWidth in favor of direct window.innerWidth usage
  • Applied consistent string quote style (single quotes) throughout the modified code

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/newspack-ui/js/dropdowns.js
Comment thread src/newspack-ui/js/dropdowns.js
@dkoo dkoo added the [Status] Needs Review The issue or pull request needs to be reviewed label Feb 19, 2026
Copy link
Copy Markdown
Contributor

@thomasguillot thomasguillot left a comment

Choose a reason for hiding this comment

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

Nicely spotted!
The only thing I'd say is the content of the dropdown needs to be above the kebab menu. Right now it goes in front of the button

@github-actions github-actions Bot added the [Status] Needs Changes or Feedback The issue or pull request needs action from the original creator label Feb 23, 2026
@dkoo
Copy link
Copy Markdown
Contributor Author

dkoo commented Feb 27, 2026

@thomasguillot good point, here's what it looks like now:

Screenshot 2026-02-27 at 3 21 26 PM

@dkoo dkoo requested a review from thomasguillot February 27, 2026 22:22
Comment thread src/newspack-ui/js/dropdowns.js Outdated
@dkoo dkoo requested a review from thomasguillot March 3, 2026 16:51
Copy link
Copy Markdown
Contributor

@thomasguillot thomasguillot left a comment

Choose a reason for hiding this comment

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

Thank you @dkoo

@github-actions github-actions Bot added [Status] Approved The pull request has been reviewed and is ready to merge and removed [Status] Needs Review The issue or pull request needs to be reviewed [Status] Needs Changes or Feedback The issue or pull request needs action from the original creator labels Mar 3, 2026
@thomasguillot thomasguillot added [Status] Needs Review The issue or pull request needs to be reviewed [Status] Design Approved and removed [Status] Approved The pull request has been reviewed and is ready to merge [Status] Needs Design Review labels Mar 3, 2026
@dkoo dkoo merged commit a5ce464 into trunk Mar 3, 2026
11 checks passed
@dkoo dkoo deleted the fix/dropdown-overflow branch March 3, 2026 18:07
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 3, 2026

Hey @dkoo, good job getting this PR merged! 🎉

Now, the needs-changelog label has been added to it.

Please check if this PR needs to be included in the "Upcoming Changes" and "Release Notes" doc. If it doesn't, simply remove the label.

If it does, please add an entry to our shared document, with screenshots and testing instructions if applicable, then remove the label.

Thank you! ❤️

matticbot pushed a commit that referenced this pull request Mar 5, 2026
# [6.35.0-alpha.1](v6.34.2...v6.35.0-alpha.1) (2026-03-05)

### Bug Fixes

* allow deletion of payment method for Braintree ([63ceec3](63ceec3))
* apply Copilot suggestion for tests ([6133636](6133636))
* **avatar:** correct duotone selector to support custom colors ([#4513](#4513)) ([c4458d4](c4458d4))
* **byline:** update placeholder text to "Author Name" ([#4510](#4510)) ([727b1e8](727b1e8))
* **co-authors-plus:** sanitize user_login before building dummy email… ([#4520](#4520)) ([32c2602](32c2602))
* do not depend on _get() to return an array ([2816470](2816470))
* **dropdown-menu:** avoid overflow at bottom of viewport ([#4495](#4495)) ([a5ce464](a5ce464))
* enable payment method deletion for Braintree ([c50f094](c50f094))
* iframe editor compatiblity ([#4444](#4444)) ([12dfaba](12dfaba))
* **my-account:** don't show subscription payment notice in modal checkout ([#4500](#4500)) ([2cb3324](2cb3324))
* **my-account:** force white background color ([#4514](#4514)) ([02e2555](02e2555))
* **my-account:** resubscription validation in order-again template ([#4498](#4498)) ([36871fc](36871fc))
* **newspack-icon:** background color ([#4516](#4516)) ([8c5dc9c](8c5dc9c))
* **newspack-ui:** remove overflow when modal is open ([#4515](#4515)) ([0b2cbd3](0b2cbd3))
* prune read-only keys from sync queue ([bf81734](bf81734))
* remove unused 'edit' and 'save' actions from Braintree payment methods ([8f72a8d](8f72a8d))
* **snackbar:** autohide progress bar not always appearing ([#4504](#4504)) ([4eda60f](4eda60f))

### Features

*  identify and enforce read-only items for Reader Data Library ([4f2ef8a](4f2ef8a))
* add featured image caption block ([#4519](#4519)) ([0b744ff](0b744ff))
* **author-profile:** avatar and social blocks for nested author profile ([#4448](#4448)) ([cff670b](cff670b))
* **content-gate:** comment restriction with metering support ([#4529](#4529)) ([714c8b7](714c8b7))
* **content-gate:** per-post access control exemption ([#4530](#4530)) ([636679b](636679b))
* **content-gate:** user access information ([#4542](#4542)) ([b49347e](b49347e))
* **content-gating:** group subscription invitations data structure + admin UI ([#4536](#4536)) ([e609e83](e609e83))
* **content-gating:** i3 designs for content gates list view ([#4512](#4512)) ([dcbb239](dcbb239))
* **corrections:** append corrections to Republication Tracker Tool content ([#4501](#4501)) ([71bd177](71bd177))
* data event handler registration and dispatching to integrations ([#4481](#4481)) ([7c79da6](7c79da6))
* **data-events:** add ActionScheduler logging and retry reason ([#4488](#4488)) ([e8af964](e8af964))
* **integrations:** make sure contact data is read from persistent data ([#4505](#4505)) ([c2ee26a](c2ee26a))
* **integrations:** start get fields abstraction and pull contact data ([#4470](#4470)) ([8ddcf23](8ddcf23)), closes [#4477](#4477)
* **reader-registration-block:** password, OTP, and verification flows ([#4452](#4452)) ([fc4567e](fc4567e))
* reject changes to specific reader data keys ([fe52e12](fe52e12))
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 5, 2026

🎉 This PR is included in version 6.35.0-alpha.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

matticbot pushed a commit that referenced this pull request Mar 16, 2026
# [6.35.0](v6.34.4...v6.35.0) (2026-03-16)

### Bug Fixes

* allow deletion of payment method for Braintree ([63ceec3](63ceec3))
* apply Copilot suggestion for tests ([6133636](6133636))
* **avatar:** correct duotone selector to support custom colors ([#4513](#4513)) ([c4458d4](c4458d4))
* **byline:** update placeholder text to "Author Name" ([#4510](#4510)) ([727b1e8](727b1e8))
* **co-authors-plus:** sanitize user_login before building dummy email… ([#4520](#4520)) ([32c2602](32c2602))
* do not depend on _get() to return an array ([2816470](2816470))
* **dropdown-menu:** avoid overflow at bottom of viewport ([#4495](#4495)) ([a5ce464](a5ce464))
* enable payment method deletion for Braintree ([c50f094](c50f094))
* iframe editor compatiblity ([#4444](#4444)) ([12dfaba](12dfaba))
* **my-account:** don't show subscription payment notice in modal checkout ([#4500](#4500)) ([2cb3324](2cb3324))
* **my-account:** force white background color ([#4514](#4514)) ([02e2555](02e2555))
* **my-account:** resubscription validation in order-again template ([#4498](#4498)) ([36871fc](36871fc))
* **newspack-icon:** background color ([#4516](#4516)) ([8c5dc9c](8c5dc9c))
* **newspack-ui:** remove overflow when modal is open ([#4515](#4515)) ([0b2cbd3](0b2cbd3))
* prune read-only keys from sync queue ([bf81734](bf81734))
* remove unused 'edit' and 'save' actions from Braintree payment methods ([8f72a8d](8f72a8d))
* **snackbar:** autohide progress bar not always appearing ([#4504](#4504)) ([4eda60f](4eda60f))

### Features

*  identify and enforce read-only items for Reader Data Library ([4f2ef8a](4f2ef8a))
* add featured image caption block ([#4519](#4519)) ([0b744ff](0b744ff))
* **author-profile:** avatar and social blocks for nested author profile ([#4448](#4448)) ([cff670b](cff670b))
* **content-gate:** comment restriction with metering support ([#4529](#4529)) ([714c8b7](714c8b7))
* **content-gate:** per-post access control exemption ([#4530](#4530)) ([636679b](636679b))
* **content-gate:** user access information ([#4542](#4542)) ([b49347e](b49347e))
* **content-gating:** group subscription invitations data structure + admin UI ([#4536](#4536)) ([e609e83](e609e83))
* **content-gating:** i3 designs for content gates list view ([#4512](#4512)) ([dcbb239](dcbb239))
* **corrections:** append corrections to Republication Tracker Tool content ([#4501](#4501)) ([71bd177](71bd177))
* data event handler registration and dispatching to integrations ([#4481](#4481)) ([7c79da6](7c79da6))
* **data-events:** add ActionScheduler logging and retry reason ([#4488](#4488)) ([e8af964](e8af964))
* **integrations:** make sure contact data is read from persistent data ([#4505](#4505)) ([c2ee26a](c2ee26a))
* **integrations:** start get fields abstraction and pull contact data ([#4470](#4470)) ([8ddcf23](8ddcf23)), closes [#4477](#4477)
* **reader-registration-block:** password, OTP, and verification flows ([#4452](#4452)) ([fc4567e](fc4567e))
* reject changes to specific reader data keys ([fe52e12](fe52e12))
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 6.35.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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

Labels

[Status] Design Approved [Status] Needs Review The issue or pull request needs to be reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants