# react-native-popup-menu Popup menu component for React Native. It is inspired by [react-native-menu](https://github.com/jaysoo/react-native-menu) component which has some performance limitations. Target platforms are both Android and iOS. ## Installation ``` npm install instea/react-native-popup-menu --save ``` ## Demo ![](./android.demo.gif) ## Basic Usage ```js import React, { Text, AppRegistry } from 'react-native'; import Menu, { MenuContext, MenuOptions, MenuOption, MenuTrigger } from 'react-native-popup-menu'; export const App = () => ( Hello world! alert(`Selected number: ${value}`)}> Select option One Two ); AppRegistry.registerComponent('examples', () => App); ``` ## API ### MenuContext It provides methods to handle popup menus imperatively. The same methods are exposed to the child context with name `menuActions`. #### Methods, `menuActions` context | Method Name | Arguments | Notes |---|---|---| |`openMenu`|`name`|Opens menu by name| |`toggleMenu`|`name`|Toggle menu by name| |`closeMenu`||Closes currently opened menu| |`isMenuOpen`||Returns `true` if any menu is open| **Note:** It is important that `` is on the top of the component hierarchy and wrap all `` components. This is needed in order to solve z-index issues. ### Menu Root menu component defining menu name and providing menu events. #### Options | Option | Type | Opt/Required | Default | Note | |---|---|---|---|---| |`name`|`String`|Optional|`auto-generated`|Unique name of menu| #### Events | Event Name | Returns | Notes | |---|---|---| |`onSelect`|`optionValue`|Triggered when menu option is selected.
When handler returns `false`, the popup menu remains open| |`onOpen`||Triggered when menu is opened| |`onClose`||Triggered when menu is closed| ### MenuTrigger It defines position where the popup menu will be rendered. Menu can by opened by clicking on `` or by calling context methods. #### Options | Option | Type | Opt/Required | Default | Note | |---|---|---|---|---| |`disabled`|`Boolean`|Optional|`false`|Indicates if trigger can be pressed| **Note:** It is necessary that `` is a direct child of ``. ### MenuOptions This component wrapps all menu options. **Note:** It is necessary that `` is a direct child of ``. ### MenuOption Wrapper component of menu option. | Option | Type | Opt/Required | Default | Note | |---|---|---|---|---| |`disabled`|`Boolean`|Optional|`false`|Indicates if option can be pressed|