Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Menu position wrong when anchored to upper right corner view #1089

Closed
jeremy303 opened this issue May 24, 2019 · 15 comments
Closed

Menu position wrong when anchored to upper right corner view #1089

jeremy303 opened this issue May 24, 2019 · 15 comments
Labels

Comments

@jeremy303
Copy link

Environment

Paper v2.15.2

Description

My project is presently using React Native Navigation and I would like to display a Menu when a button is clicked in the native top navigation bar / app bar. Since the top bar is native, it's button can't serve as an anchor for the Menu, so I planned to instead anchor to an invisible View immediately below the native toolbar button.

Unfortunately, when the Menu renders it does not appear below the anchor view in the top-right corner. I'm assuming that the Menu should display immediately below this anchor, so this would be a bug? Is there a better way to accomplish the effect I am after?

Thanks!

Reproducible Demo

I've created a snack which demonstrates the issue:
https://snack.expo.io/@holysamosa/c16159

Screenshot

Here's an example:
(I've given the anchor view a red background for visibility)

image

@iyadthayyil
Copy link
Contributor

I don't know why this issue is caused.

As a quick workaround wrap the menu in another view with position styles.

const styles = StyleSheet.create({
  container: {
    flex: 1,
    flexDirection: 'row',
    flexWrap: 'wrap',
  },
  row: {
    width: '100%',
    backgroundColor: 'green',
  },
  mainMenuAnchor: {
    width: 24,
    height: 5,
    backgroundColor: 'red',
  },
  menuWrapper: {
    alignSelf: 'flex-end',
    margin: 8,
  }
});
<Provider>
        <View style={[styles.container]}>
          <View style={[styles.row]}>
          <View style={styles.menuWrapper}>
            <Menu
              visible={this.state.visible}
              onDismiss={this._closeMenu}
              anchor={
              <View style={[styles.mainMenuAnchor]} />
              }
            >
              <Menu.Item onPress={() => {}} title="Item 1" />
              <Menu.Item onPress={() => {}} title="Item 2" />
            </Menu>
            </View>
          </View>
        </View>
        <Button style={[styles.button]} onPress={this._openMenu}>Show menu</Button>
</Provider>

@jeremy303
Copy link
Author

@iyadthayyil Thanks for the work around!

@ferrannp
Copy link
Collaborator

Wdyt @Trancever ?

@jeremy303
Copy link
Author

Also, while the suggested work-around of wrapping the Menu in a positioned view does move the menu to the right edge of the screen, the menu is still appearing a significant distance below the anchor (as also seen in the original image).

Any ideas?

@iyadthayyil
Copy link
Contributor

@HolySamosa can you provide a snack?
It looks fine for me: https://snack.expo.io/@iyadthayyil/menu-position-bug

@jeremy303
Copy link
Author

@iyadthayyil: Looks like it renders correctly in Expo, but the additional vertical spacing appears when using vanilla React Native on iOS (Android is untested).

Here's the rendering of the same come from your snack running under vanilla React Native:

image

@github-actions
Copy link

Hello 👋, this issue has been open for more than 2 months with no activity on it. If the issue is still present in the latest version, please leave a comment within 7 days to keep it open, otherwise it will be closed automatically. If you found a solution on workaround for the issue, please comment here for others to find. If this issue is critical for you, please consider sending a pull request to fix the issue.

@github-actions github-actions bot added the Stale label Dec 15, 2019
@Trancever
Copy link
Contributor

@HolySamosa There was some work done with Menu in recent versions of Paper. Can you tell us if this issue still occurs in v3.4.0?

@jeremy303
Copy link
Author

Thanks, @iyadthayyil. The affected project has been on the backburner and I'm presently working to get another app out the door, but I'll test this out in the next couple of weeks and let you know.

@elmcapp
Copy link

elmcapp commented Feb 1, 2022

This issues is still happing

@conor909
Copy link
Contributor

conor909 commented Feb 2, 2022

Menu seems very broken, when I use it in table rows the anchor point gets very confused and causes the page to scroll to and the menu to open in the wrong location. Maintainers need to stop pushing bugs out, and stop github actions closing valid issues

@veliseev93
Copy link

veliseev93 commented Dec 14, 2022

Still have this issue. Please fix Menu component, now it is impossible to use.

@federicogomezlara
Copy link

I found a simple workaround to this, but I agree with @conor909 , I know you guys are probably not getting paid for this, but it would be nice if at least the issues didn't get closed without being solved, that way they might be easier to find for someone else, who, maaaybe, might be up for fixing it themselves.

But in the meantime... we needed not one but two buttons that used the Menu component side by side (though this works with just one aswell if you only have one), what ended up working was simply wrapping the components in a View with flex direction set to row, and justify content set to the flex's end

<View
        style={{ flexDirection: 'row', justifyContent: 'flex-end', gap: 16 }}
      >
        <ThemeDropdown />

        <ThemeDropdown />
</View>

image
image

@ericlyoung
Copy link

still a problem in 2025

@KANNAN4307
Copy link

the issue still exsists

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

10 participants