Open souce the Android Dialog module

Summary:
public

The `DialogModule` requires `android.support.v4.app.FragmentManager` which means
every app that wants to use Dialogs would need to have its Activity extend the legacy
`android.support.v4.app.FragmentActivity`.

This diff makes the `DialogModule` work with both the Support `FragmentManager`
(for AdsManager & potentially other fb apps) and the `android.app.FragmentManager`
(for new apps with no legacy dependencies).

Also wrap the native module in the same `Alert` API that we have on iOS and provide
a cross-platform example. In my opinion the iOS Alert API is quite nice and easy to use.

We still keep `AlertIOS` around because of its `prompt` function which is iOS-specific
and also for backwards compatibility.

Reviewed By: foghina

Differential Revision: D2647000

fb-gh-sync-id: e2280451890bff58bd9c933ab53cd99055403858
This commit is contained in:
Martin Konicek
2015-12-17 11:09:22 -08:00
committed by facebook-github-bot-5
parent fe86771a22
commit 3a3af8a385
13 changed files with 831 additions and 73 deletions

View File

@@ -14,14 +14,14 @@
var RCTAlertManager = require('NativeModules').AlertManager;
var invariant = require('invariant');
type AlertType = $Enum<{
export type AlertType = $Enum<{
'default': string;
'plain-text': string;
'secure-text': string;
'login-password': string;
}>;
type AlertButtonStyle = $Enum<{
export type AlertButtonStyle = $Enum<{
'default': string;
'cancel': string;
'destructive': string;
@@ -32,20 +32,19 @@ type AlertButtonStyle = $Enum<{
*
* Optionally provide a list of buttons. Tapping any button will fire the
* respective onPress callback and dismiss the alert. By default, the only
* button will be an 'OK' button
* button will be an 'OK' button.
*
* ```
* AlertIOS.alert(
* 'Foo Title',
* 'My Alert Msg',
* [
* {text: 'OK', onPress: () => console.log('OK Pressed!')},
* {text: 'Cancel', onPress: () => console.log('Cancel Pressed!'), style: 'cancel'},
* {text: 'OK', onPress: () => console.log('OK Pressed')},
* {text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
* ]
* )
* ```
*/
class AlertIOS {
static alert(
title: ?string,