react-native-tooltip-menu

Currently works only with iOS and Android.

Component for specfied case. Left bottom button with nice looking menu tooltip with animation after click.

How to install

Via NPM

npm install react-native-tooltip-menu --save

or via yarn

yarn add react-native-tooltip-menu --save

then

import ReactNativeTooltipMenu from 'react-native-tooltip-menu';

Configuration

ReactNativeTooltipMenu:

Property Type Default Description
buttonComponent
items Array Items to be rendered in menu. Each of item requires label as string or function if you want to render your own component and onClick as function to be called when you click item.
componentWrapperStyle Object Optional Style Object if you want to overwrite wrapper for your buttonComponent
overlayStyle Object Optional Style Object if you want to overwrite overlay style's.
widthType auto, half or full half Menu items width. Auto = automatically set width to your longest test, half = always 50% your screen width, full = 100% screen width.
onRequestClose function Optional, default () => {} Modal onRequestClose required function on Android
labelContainerStyle Object Optional Style Object if you want to change default TooltipMenuItem View's style.
labelStyle Object Optional Style Object if you want to change default TooltipMenuItem Text's style.
modalButtonStyle Object optional Style. for TouchabelOpacity when modal is opened.

Example

import React, { Component } from 'react';
import {
  AppRegistry,
  Text,
  View
} from 'react-native';
import ReactNativeTooltipMenu from 'react-native-tooltip-menu';

class Example extends Component {
  state = {
    counterItem1: 0,
    counterItem2: 0
  };

  render() {
    return (
      <View style={{ flex: 1, flexDirection: 'column', justifyContent: 'center', padding: 25 }}>
        <View>
          <Text style={{ textAlign: 'center' }}>This is example of react-native-tooltip-menu</Text>
          <Text style={{ textAlign: 'center' }}>Clicked item1: {this.state.counterItem1}</Text>
          <Text style={{ textAlign: 'center' }}>Clicked item2: {this.state.counterItem2}</Text>
        </View>
        <ReactNativeTooltipMenu
          buttonComponent={
            <View
              style={{
                backgroundColor: 'purple',
                padding: 10,
                borderRadius: 25
              }}
            >
              <Text style={{ color: 'white', flex: 1 }}>Click me to show tooltip!</Text>
            </View>
          }
          items={[
            {
              label: 'Label #1',
              onPress: () => this.setState({ counterItem1: this.state.counterItem1 + 1 })
            },
            {
              label: 'Label #2',
              onPress: () => this.setState({ counterItem2: this.state.counterItem2 + 1 }),
            },
          ]}
        />
      </View>
    )
  }
}

AppRegistry.registerComponent('Example', () => Example);

Todo

  • add option to move button to right side of screen
  • add isVisible prop

GitHub