React Native: Bottom Action Sheet (Android/iOS)

A simple library that creates BottomSheets according to the Material Design Specs

Android

Sheet View
Grid View
Alert View

iOS

Sheet View
Grid View
Alert View

It is a React Native Bridge around below native Android & iOS Libraries

Before we dive into on how to use this library. We would like to thank all the contributor of above libraries for providing such a awesome nice, cool library

Getting started

  • $ npm install react-native-bottom-action-sheet --save

  • $ react-native link react-native-bottom-action-sheet

Usage

import RNBottomActionSheet from 'react-native-bottom-action-sheet';

  • Sheet View

- API Way
let SheetView = RNBottomActionSheet.SheetView
SheetView.Show({
	title: "Awesome!",
	items: [
		{ title: "Facebook", subTitle: "Facebook Description", icon: facebook },
		{ title: "Instagram", subTitle: "Instagram Description", icon: instagram },
	],
	theme: "light",
	selection: 3,
	onSelection: selection => {
		console.log("selection: " + selection);
	}
});

- React Way

<RNBottomActionSheet.SheetView visible={this.state.sheetView} title={"Awesome!"} theme={"light"} onSelection={selection => {
	console.log("selection: " + selection);
}}>
	<RNBottomActionSheet.SheetView.Item title={"Facebook"} subTitle={"Facebook Description"} icon={facebook} />
	<RNBottomActionSheet.SheetView.Item title={"Instagram"} subTitle={"Instagram Description"} icon={instagram} />
</RNBottomActionSheet.SheetView>

  • Grid View

- API Way
let GridView = RNBottomActionSheet.GridView
	GridView.Show({
		title: "Awesome!",
		items: [
		{ title: "Facebook", icon: facebook },
		{ title: "Instagram", icon: instagram },
		{ title: "Skype", icon: skype },
		{ title: "Twitter", icon: twitter },
		{ title: "WhatsApp", icon: whatsapp },
		{ title: "YouTube", icon: youtube },
		{ title: "Google", icon: google },
		{ title: "LinkedIn", icon: linkedin }
		],
		theme: 'light',
		onSelection: (selection) => {
		console.log('selection: ' + selection)
		}
	});

- React Way
<RNBottomActionSheet.GridView visible={this.state.gridView} title={"Awesome!"} theme={"light"} selection={3} onSelection={selection => {
	console.log("selection: " + selection);
	}}>
	<RNBottomActionSheet.GridView.Item title={"Facebook"} icon={facebook} />
	<RNBottomActionSheet.GridView.Item title={"Instagram"} icon={instagram} />
</RNBottomActionSheet.GridView>

  • Alert View

- API Way
let AlertView = RNBottomActionSheet.AlertView
    AlertView.Show({
      title: "Awesome!",
      message: "What can we improve? Your feedback is always welcome.",
      positiveText: "OK",
      positiveBackgroundColor: "#eeffee",
      positiveTextColor: "#006500",
      negativeText: "Exit",
      negativeBackgroundColor: "#ffebeb",
      negativeTextColor: "#760000",
      theme: 'light',
      onPositive: () => {
        console.log('positive clicked')
      },
      onNegative: () => {
        console.log('negative clicked')
      }
	})
	
- React Way
<RNBottomActionSheet.AlertView visible={this.state.alterView} title={"Awesome!"} message={"What can we improve? Your feedback is always welcome."} positiveText={"OK"} positiveBackgroundColor={"#eeffee"} positiveTextColor={"#006500"} negativeText={"Exit"} negativeBackgroundColor={"#ffebeb"} negativeTextColor={"#760000"} theme={"light"} onPositive={() => {
	console.log("positive clicked");
	}} onNegative={() => {
	console.log("negative clicked");
	}} />


API's

  • Sheet View

    • title(title: string)
    • items(title: string, subTitle: string, icon: image) - subTitle: iOS Only
    • onSelection(selcFunc: function)
    • Show()
    • titleTextColor(color: string) - Android Only
    • itemTextColor(color: string) - Android Only
    • itemTintColor(color: string) - Android Only
    • backgroundColor(color: string) - Android Only
    • delayDismissOnItemClick(flag: bool) - Android Only
    • dividerItem(title: string) - Android Only
    • theme(theme: string) - iOS Only
    • selection(selc: int) - iOS Only
  • Grid View

    • title(title: string)
    • ttems(title: string, icon: image)
    • selection(selcFunc: function)
    • Show()
    • itemTextColor(color: string) - Android Only
    • itemTintColor(color: string) - Android Only
    • backgroundColor(color: string) - Android Only
    • delayDismissOnItemClick(flag: bool) - Android Only
    • theme(theme: string): iOS Only
  • Alert View

    • title(title: string)
    • message(message: string)
    • positiveText(text: string)
    • positiveBackgroundColor(color: string)
    • positiveTextColor(color: string)
    • negativeText(text: string)
    • negativeBackgroundColor(color: string)
    • negativeTextColor(color: string)
    • onPositive(selcFunc: function)
    • onNegative(selcFunc: function)
    • theme(theme: string) - iOS Only
    • Show()

TO DO

  • Enable Android customization features for iOS platform as well

GitHub