GitHunt

React Native Basic Modal

Battle Tested โœ…

Basic & Elegant UI Modal for React Native

npm version
npm
Platform - Android and iOS
License: MIT
styled with prettier

React Native Basic Modal

Version 1 ๐Ÿ˜

  • Written from scratch ๐Ÿป
  • Typescript ๐Ÿ’ช
  • Much better API
  • Better customizations
  • Much better library fundamentals
  • Husky Setup ๐Ÿถ
    • Commit Linter
    • Prettier

Installation

Add the dependency:

npm i react-native-basic-modal

Peer Dependencies

IMPORTANT! You need install them
"react-native-modal": ">= 11.4.0"

Usage

Import

import BasicModal, { Button } from "react-native-basic-modal";

BasicModal Usage

Default Usage

<BasicModal
  isVisible
  title="Hold on!"
  description="Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh."
/>
<BasicModal
  isVisible
  title="Hold on!"
  description="Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh."
  headerComponent={
    <View>
      <Text>Hey Header</Text>
    </View>
  }
  footerComponent={
    <View>
      <Text>Hey Footer</Text>
    </View>
  }
/>

Advanced Usage with custom buttons

Of course you do not need to use built-in Button component from library. You can put anything into the children
_Note:_If you need to customize the default buttons, you should use this method instead, it will be much easier and customizable

<BasicModal
  isVisible
  title="Hold on!"
  description="Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh.">
  <View style={styles.buttonsContainer}>
    <Button text="Cancel" onPress={() => {}} />
    <Button text="Okay" onPress={() => {}} />
  </View>
</BasicModal>

How can I hide the modal by pressing outside its content?

The prop onBackdropPress allows you to handle this situation:

<BasicModal
  isVisible={this.state.isVisible}
  onBackdropPress={() => this.setState({ isVisible: false })}
/>

For more FAQ about Modal:

Example Project ๐Ÿ˜

You can check out the example project ๐Ÿฅฐ

Simply run

  • npm i
  • react-native run-ios/android

should work of the example project.

Configuration - Props

Property Type Default Required Description
isVisible bool false ๐ŸŸข set the modal's visibility
title string Hold on! ๐ŸŸข set your own title text
description string default ๐ŸŸข set your own description text
primaryButtonText string default ๐ŸŸก change default primary button's text
secondaryButtonText string default ๐ŸŸก change default secondary button's text
onPrimaryButtonPress function default ๐ŸŸก set the function when the primary button is pressed
onSecondaryButtonPress function default ๐ŸŸก set the function when the secondary button is pressed
onBackdropPress function default ๐ŸŸก set the function when the backdrop of the modal is pressed
headerComponent component none ๐ŸŸก set your own component if you need to add/customize header component
footerComponent component none ๐ŸŸก set your own component if you need to add/customize footer component
style ViewStyle default ๐ŸŸก set/override the default style
modalContainerStyle ViewStyle default ๐ŸŸก set/override the default style
contentContainerStyle ViewStyle default ๐ŸŸก set/override the default style
buttonsContainerStyle ViewStyle default ๐ŸŸก set/override the default style
titleTextStyle TextStyle default ๐ŸŸก set/override the default style
descriptionTextStyle TextStyle default ๐ŸŸก set/override the default style

Configuration - Props [Button] Component

Property Type Default Required Description
text string Hold on! ๐ŸŸก set text
style ViewStyle default ๐ŸŸก set/override the default style
onPress function default ๐ŸŸก set the function
textStyle TextStyle default ๐ŸŸก set/override the default style

Credits

I inspired by Orizon Design Thank you so much guys, nice UI / UX :)

Future Plans

  • LICENSE
  • Typescript
  • Version 1.0.0
  • Write an article about the lib on Medium

Author

FreakyCoder, kurayogun@gmail.com

License

React Native Basic Modal is available under the MIT license. See the LICENSE file for more info.

kuraydev/react-native-basic-modal | GitHunt