npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-native-dialog

v3.0.7

Published

A React Native module that exposes some of the common native dialogs to React Native.

Downloads

10

Readme

react-native-native-dialog

A React Native module that exposes some of the common native dialogs to React Native.

Latest Stable Version NPM Downloads GitHub issues Used Languages

  • ✅ Native support for the most commonly used Dialogs on iOS and Android.
  • ✅ Dark mode 🌓 and Accent Color 🌈.
  • ✅ Easy to use Api with support for both Callback and Promise.

The issue with trying to mock native components using <View />s is that no matter how much time and effort you spend to make it look like the real-deal, You end up with janky looking results (I spent hours taking screenshots of the real Android dialog and trying to imitate it, And didn't get a satisfying result). But to be fair, using react-native <View />s offers a lot of customization which is something you cannot simply just get with native libraries. So there is a decision that needs to be made.

Anyways I decided to make a library for some of the commonly used dialogs using native APIs.

npm install react-native-native-dialog --save

cd ios && pod install   # Only if you're building for iOS

Or if you're using yarn:

yarn add react-native-native-dialog

cd ios && pod install   # Only if you're building for iOS

⚠️ The library only works with [email protected] and up.

Since this library only works with [email protected] and up there is no need to manually link the library, But there still some additional setup you need to do.

iOS

This library is written in Swift so we need to create a bridging header in your XCode project (If you've already done it you can skip this section).

Create Bridging Header

  1. First of all make sure you run pod install in Terminal inside ios folder.
  2. In XCode, in the project navigator, right click [your project's name]New File...
  3. Select Swift File, click Next and then click Create.
  4. XCode will ask you whether you want to create bridging header, Click Create Bridging Header.
  5. Build your project (Cmd+B), And you're ready to go.

Android

Unfortunately Android doesn't support changing the accentColor dynamically, the only way to use a custom accentColor is to define your style statically in res/values/styles.xml (If you're ok with using the default accentColor #009688 in Android you can skip this section).

  1. Open android/app/src/main/res/values/styles.xml
    • If you don't have one create a new file in the exact same path.
    • Add those tow styles to the bottom of your styles.xml file and replace colorPrimary, colorPrimaryDark and colorAccent with your own colors:
    <resources>
        ...
    
    +    <style name="AlertDialog" parent="Theme.AppCompat.Dialog.Alert">   <!--This theme is used for dark dialog-->
    +        <item name="colorPrimary">#FFB300</item>       <!--Replace the these colors with your own colors-->
    +        <item name="colorPrimaryDark">#FFB300</item>
    +        <item name="colorAccent">#FFB300</item>
    +    </style>
    
    +    <style name="LightAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">   <!--This theme is used for light dialog-->
    +        <item name="colorPrimary">#E6A100</item>       <!--Replace the these colors with your own colors-->
    +        <item name="colorPrimaryDark">#E6A100</item>
    +        <item name="colorAccent">#E6A100</item>
    +    </style>
    
    </resources>
  2. Next open up android/app/src/main/java/[...]/MainAppliction.java
    • Add import com.github.mohaka.nativedialog.RNNativeDialogPackage; to the imports at the top of the file
    • Add RNNativeDialogPackage.setDialogTheme(R.style.AlertDialog, R.style.LightAlertDialog); to the bottom of onCreate() method.
    ...
    
    import android.app.Application;
    import android.content.Context;
    
    + import com.github.mohaka.nativedialog.RNNativeDialogPackage;
    
    ...
    
    @Override
    public void onCreate() {
        super.onCreate();
        SoLoader.init(this, /* native exopackage */ false);
    +   RNNativeDialogPackage.setDialogTheme(R.style.AlertDialog, R.style.LightAlertDialog);
        initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
    }
    
    ...
  3. Build your project and start using react-native-native-dialog.
import NativeDialog from 'react-native-native-dialog';

NativeDialog.showDialog({
   title: 'Do you want to update your iCloud Backup before erasing?',
   message: 'If you erase without updating your backup, you may lose photos and other data that are not yet uploaded to iCloud.',

   positiveButton: 'Back Up Then Erase',
   negativeButton: 'Erase Now',
   neutralButton: 'Cancel',

   negativeButtonStyle: 'default',
   neutralButtonStyle: 'cancel',

   theme: 'dark',
   accentColor: '#ff4a9e',

   onPositivePress: () => console.warn('positive'),
   onNegativePress: () => console.warn('negative'),
   onNeutralPress: () => console.warn('neutral'),

   onDismiss: () => console.warn('dismiss'),
});

NativeDialog.showDialog() API

NativeDialog.showInputDialog() API

NativeDialog.showItemsDialog() API

NativeDialog.showNumberPickerDialog() API

NativeDialog.showRatingDialog() API

We would love to have community contributions and support! A few areas where could use help right now:

  • Bug reports and/or fixes
  • Writing tests
  • Creating examples for the docs

If you want to contribute, please submit a pull request, or contact [email protected] for more information. When you commit your messages, follow this convention:

App changes subject
- Optional message
- Another optional message

If you do a breaking change, add an explanation preceded by BREAKING CHANGE: keyword. For example:

BREAKING CHANGE: App changes subject
- Optional message
- Another optional message
  • Heysem Katibi - Initial work
  • Yaman Katby

See also the list of contributors who participated in this project.

This library is licensed under the MIT License - see the LICENSE.md file for details.