From 61d046be3c9b00f6a4d4f492d558a961a6d4210f Mon Sep 17 00:00:00 2001 From: Eli White Date: Wed, 13 Dec 2017 16:16:34 -0800 Subject: [PATCH] Flow Type ActionSheetIOS Reviewed By: sahrens Differential Revision: D6548474 fbshipit-source-id: dac0cb2cdd85bc49d4302b4382142fd70ab4ecc4 --- Libraries/ActionSheetIOS/ActionSheetIOS.js | 58 +++++++++++++--------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/Libraries/ActionSheetIOS/ActionSheetIOS.js b/Libraries/ActionSheetIOS/ActionSheetIOS.js index 531fa8fc87e304..9797b47b36e51c 100644 --- a/Libraries/ActionSheetIOS/ActionSheetIOS.js +++ b/Libraries/ActionSheetIOS/ActionSheetIOS.js @@ -8,48 +8,58 @@ * * @providesModule ActionSheetIOS * @flow + * @format */ 'use strict'; -var RCTActionSheetManager = require('NativeModules').ActionSheetManager; +const RCTActionSheetManager = require('NativeModules').ActionSheetManager; -var invariant = require('fbjs/lib/invariant'); -var processColor = require('processColor'); +const invariant = require('fbjs/lib/invariant'); +const processColor = require('processColor'); /** * Display action sheets and share sheets on iOS. - * + * * See http://facebook.github.io/react-native/docs/actionsheetios.html */ -var ActionSheetIOS = { +const ActionSheetIOS = { /** * Display an iOS action sheet. - * + * * The `options` object must contain one or more of: - * + * * - `options` (array of strings) - a list of button titles (required) * - `cancelButtonIndex` (int) - index of cancel button in `options` * - `destructiveButtonIndex` (int) - index of destructive button in `options` * - `title` (string) - a title to show above the action sheet * - `message` (string) - a message to show below the title - * + * * The 'callback' function takes one parameter, the zero-based index * of the selected item. - * + * * See http://facebook.github.io/react-native/docs/actionsheetios.html#showactionsheetwithoptions */ - showActionSheetWithOptions(options: Object, callback: Function) { + showActionSheetWithOptions( + options: {| + +title?: ?string, + +message?: ?string, + +options: Array, + +destructiveButtonIndex?: ?number, + +cancelButtonIndex?: ?number, + +anchor?: ?number, + +tintColor?: number | string, + |}, + callback: (buttonIndex: number) => void, + ) { invariant( typeof options === 'object' && options !== null, - 'Options must be a valid object' - ); - invariant( - typeof callback === 'function', - 'Must provide a valid callback' + 'Options must be a valid object', ); + invariant(typeof callback === 'function', 'Must provide a valid callback'); + RCTActionSheetManager.showActionSheetWithOptions( {...options, tintColor: processColor(options.tintColor)}, - callback + callback, ); }, @@ -61,7 +71,7 @@ var ActionSheetIOS = { * - `url` (string) - a URL to share * - `message` (string) - a message to share * - `subject` (string) - a subject for the message - * - `excludedActivityTypes` (array) - the activities to exclude from + * - `excludedActivityTypes` (array) - the activities to exclude from * the ActionSheet * - `tintColor` (color) - tint color of the buttons * @@ -73,32 +83,32 @@ var ActionSheetIOS = { * * - a boolean value signifying success or failure * - a string that, in the case of success, indicates the method of sharing - * + * * See http://facebook.github.io/react-native/docs/actionsheetios.html#showshareactionsheetwithoptions */ showShareActionSheetWithOptions( options: Object, failureCallback: Function, - successCallback: Function + successCallback: Function, ) { invariant( typeof options === 'object' && options !== null, - 'Options must be a valid object' + 'Options must be a valid object', ); invariant( typeof failureCallback === 'function', - 'Must provide a valid failureCallback' + 'Must provide a valid failureCallback', ); invariant( typeof successCallback === 'function', - 'Must provide a valid successCallback' + 'Must provide a valid successCallback', ); RCTActionSheetManager.showShareActionSheetWithOptions( {...options, tintColor: processColor(options.tintColor)}, failureCallback, - successCallback + successCallback, ); - } + }, }; module.exports = ActionSheetIOS;