Add support for aligned popover placements (start/end variants) - #23
Merged
Conversation
Extend PopoverPlacement type with -start and -end variants for all four directions (top, bottom, left, right). This enables right-aligned dropdowns via bottom-end, left-aligned via bottom-start, and similar patterns for other directions — resolving viewport overflow when popovers are placed near screen edges. Closes #22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extended the Popover component to support 12 placement options instead of 4, adding start and end alignment variants for each cardinal direction. This allows for more flexible positioning of popovers relative to their trigger elements.
Key Changes
Type Definition: Updated
PopoverPlacementtype to include all 12 variants:top,top-start,top-endbottom,bottom-start,bottom-endleft,left-start,left-endright,right-start,right-endPosition Calculation Logic: Extended the positioning algorithm in
Popover.tsxto handle all new placement variants:CSS Transforms: Added corresponding CSS transform rules in
Popover.styles.tsfor proper alignment of each placement variantStorybook:
BottomEndstory demonstrating a practical use case (user menu dropdown)Implementation Details
The positioning logic uses the trigger element's bounding rectangle to calculate coordinates:
top, center usestop + height/2, end usesbottomleft, center usesleft + width/2, end usesrighthttps://claude.ai/code/session_01SZorT2y1tzv2yNKtZ7fbt6