Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mxck/react-native-material-menu

Pure JavaScript material menu component for React Native
https://github.com/mxck/react-native-material-menu

android ios material material-design react-native react-native-component

Last synced: about 1 month ago
JSON representation

Pure JavaScript material menu component for React Native

Awesome Lists containing this project

README

        

# react-native-material-menu · [![npm](https://img.shields.io/npm/v/react-native-material-menu.svg)](https://www.npmjs.com/package/react-native-material-menu) [![license](https://img.shields.io/npm/l/react-native-material-menu.svg)](https://github.com/mxck/react-native-material-menu/blob/master/LICENSE)

Pure JavaScript [material
menu](https://material.io/guidelines/components/menus.html) component for React
Native with automatic RTL support.

## Install

Using yarn

```sh
yarn add react-native-material-menu
```

or using npm

```sh
npm install --save react-native-material-menu
```

## Usage example

```jsx
import React, { useState } from 'react';

import { View, Text } from 'react-native';
import { Menu, MenuItem, MenuDivider } from 'react-native-material-menu';

export default function App() {
const [visible, setVisible] = useState(false);

const hideMenu = () => setVisible(false);

const showMenu = () => setVisible(true);

return (

Show menu}
onRequestClose={hideMenu}
>
Menu item 1
Menu item 2
Disabled item

Menu item 4


);
}
```

## Menu

| name | description | type | default |
| :---------------- | :------------------------------------- | --------: | :------ |
| children | Components rendered in menu (required) | ReactNode | - |
| anchor | Button component (required) | ReactNode | - |
| visible | Whether the Menu is currently visible | Boolean | - |
| style | Menu style | ViewStyle | - |
| onRequestClose | Callback when menu has become hidden | Function | - |
| animationDuration | Changes show/hide animation duration | Number | 300 |

## MenuItem

| name | description | type | default |
| :---------------- | :--------------------------- | --------: | :---------- |
| children | Rendered children (required) | ReactNode | - |
| disabled | Disabled flag | Boolean | `false` |
| disabledTextColor | Disabled text color | String | `'#bdbdbd'` |
| onPress | Called function on press | Function | - |
| style | Container style | ViewStyle | - |
| textStyle | Text style | TextStyle | - |
| pressColor | Pressed color | String | `'#e0e0e0'` |

> **Children** must be based on [``][text component] component (like **text** itself, strings, [react-native-vector-icons] or [expo icons]) otherwise you may get an error on a real device.

## MenuDivider

| name | description | type | default |
| :---- | :---------- | -----: | :------------------- |
| color | Line color | String | `'rgba(0,0,0,0.12)'` |

## Pietile native kit

Also take a look at other our components for react-native - [pietile-native-kit](https://github.com/pietile/pietile-native-kit)

## License

MIT License. © Maksim Milyutin 2017-2021

[text component]: https://facebook.github.io/react-native/docs/text.html
[react-native-vector-icons]: https://github.com/oblador/react-native-vector-icons
[expo icons]: https://docs.expo.io/versions/latest/guides/icons/