0.0.13 • Published 6 years ago

@postillon/react-native-popover-menu v0.0.13

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

React Native: Popover Menu

This library is a ReactNative bridge around native popup/popover menus. It allows you to create simple popup menus.

Note: Android SDK 27 > is supported

Android: zawadz88/MaterialPopupMenu
iOS: liufengting/FTPopOverMenu

Getting started

$ npm install react-native-popover-menu --save

$ react-native link react-native-popover-menu

$ react-native link react-native-vector-icons

  • Android

Please add below snippet into your app build.gradle

buildscript {
    repositories {
        jcenter()
        maven { url "https://maven.google.com" }
    }
    ...
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven { url "https://maven.google.com" }
        ...
    }
}

Note: This library is supported Android SDK 27 > above

  • iOS

    • Run Command: cd ../node_modules/react-native-popover-menu/ios && pod install. If it has error => try pod repo update then pod install

Usage

import RNPopoverMenu from 'react-native-popover-menu';

import Icon from 'react-native-vector-icons'
  • React Way
let copy = <Icon family={'FontAwesome'} name={'copy'} color={'#000000'} size={30} />
let paste = <Icon family={'FontAwesome'} name={'paste'} color={'#000000'} size={30} />
let share = <Icon family={'FontAwesome'} name={'share'} color={'#000000'} size={30} />

<RNPopover visible={this.state.visible} reference={this.ref}>
  <RNPopover.Menu label={"Editing"}>
    <RNPopover.Menu label={"Copy"} icon={copy} />
    <RNPopover.Menu label={"Paste"} icon={paste} />
  </RNPopover.Menu>
  <RNPopover.Menu >
    <RNPopover.Menu label={"Share"} icon={share} />
  </RNPopover.Menu>
</RNPopover>;
  • API Way
let copy = <Icon family={'FontAwesome'} name={'copy'} color={'#000000'} size={30} />
let paste = <Icon family={'FontAwesome'} name={'paste'} color={'#000000'} size={30} />
let share = <Icon family={'FontAwesome'} name={'share'} color={'#000000'} size={30} />

let menus = [
  {
    label: "Editing",
    menus: [
      { label: "Copy", icon: copy },
      { label: "Paste", icon: paste }
    ]
  },
  {
    label: "Other",
    menus: [
      { label: "Share", icon: share }
    ]
  },
  {
    label: "",
    menus: [
      { label: "Share me please" }
    ]
  }
]

RNPopoverMenu.Show(this.ref, {
  title: "",
  menus: menus,
  onDone: selection => { },
  onCancel: () => { }
});

Note:

  • We have added family prop for Icon class, please make sure that you pass the props

Props

  • Props: Generic
PropTypeDefaultNote
titlestringTitle of popover section
menusarrayArray of Menus
onDone(sectionSelection, menuSelection)funcIt is called when menu is selected
onCancelfuncIt is called when we close the popover
  • Props: Android
PropTypeDefaultNote
themestringlightLight & Dark theme support only on Android Platform
  • Props: iOS
PropTypeDefaultNote
tintColorstringColor of tint
menuWidthnumberSpecify menu width of the Popover
rowHeightnumberHeight of the menu row
rowHeightnumberHeight of the menu row
textMarginnumberSpecify text margin from icon
iconMarginnumberSpecify icon margin from border
selectedRowBackgroundColorstringSpecify selected row background color
roundedArrowboolSpecify whether rounded arrow required or not
textColorstringSpecify text color
borderColorstringSpecify border color
borderWidthnumberSpecify border width

Icons

	let facebook = <Icon family={'FontAwesome'} name={'facebook'} color={'#000000'} size={30} />

	<RNPopover.Menu label={"Facebook"} icon={facebook} />

Note:

  • We have added family prop for Icon class, please make sure that you pass the props
  • Custom Icons

Note: Since we are using native libraries, we have not found a solution in order to render RN Images in production, therefore please copy all your image assets in platform specific folders:

  • Android: Please copy your image assets in app resource drawable folder
  • iOS: Please copy your image assets in app resources folder

Please refer example application for the image usage.

Credits

Contribution

Contributions are welcome and are greatly appreciated! Every little bit helps, and credit will always be given.

License

This library is provided under the Apache 2 License.

RNPopoverMenu @ Pranav Raj Singh Chauhan