From d3233805bfb5ca65f8b26b101e9f2e26bb34c595 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Wed, 8 Jul 2020 11:35:31 -0700 Subject: [PATCH 01/11] Remove iOS module. --- src/ActionSheet/{index.ios.tsx => ___index.ios.tsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/ActionSheet/{index.ios.tsx => ___index.ios.tsx} (100%) diff --git a/src/ActionSheet/index.ios.tsx b/src/ActionSheet/___index.ios.tsx similarity index 100% rename from src/ActionSheet/index.ios.tsx rename to src/ActionSheet/___index.ios.tsx From a2949f98dd5fd6c25d4f084b277a504b9b45b20c Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Wed, 8 Jul 2020 13:48:47 -0700 Subject: [PATCH 02/11] Use on iOS. --- src/ActionSheet/TouchableNativeFeedbackSafe.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ActionSheet/TouchableNativeFeedbackSafe.tsx b/src/ActionSheet/TouchableNativeFeedbackSafe.tsx index f8c1db3..38cf19a 100644 --- a/src/ActionSheet/TouchableNativeFeedbackSafe.tsx +++ b/src/ActionSheet/TouchableNativeFeedbackSafe.tsx @@ -7,7 +7,7 @@ import { TouchableWithoutFeedbackProps, } from 'react-native'; -// This TouchableOpacity has the same staic method of TouchableNativeFeedback +// This TouchableOpacity has the same static method of TouchableNativeFeedback class CustomTouchableOpacity extends React.Component { static SelectableBackground = () => ({}); static SelectableBackgroundBorderless = () => ({}); @@ -20,6 +20,7 @@ class CustomTouchableOpacity extends React.Component { const TouchableComponent = Platform.select({ web: CustomTouchableOpacity, + ios: CustomTouchableOpacity, default: Platform.Version <= 20 ? CustomTouchableOpacity : TouchableNativeFeedback, }); From 45e7fcabd85f41feaeca8094bef731a65edf550b Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Fri, 10 Jul 2020 14:21:29 -0700 Subject: [PATCH 03/11] Add build step to pre-commit. --- .gitignore | 3 -- README.md | 1 + lib/commonjs/ActionSheet/ActionGroup.js | 2 ++ lib/commonjs/ActionSheet/ActionGroup.js.map | 1 + .../TouchableNativeFeedbackSafe.js | 2 ++ .../TouchableNativeFeedbackSafe.js.map | 1 + lib/commonjs/ActionSheet/___index.ios.js | 2 ++ lib/commonjs/ActionSheet/___index.ios.js.map | 1 + lib/commonjs/ActionSheet/index.js | 2 ++ lib/commonjs/ActionSheet/index.js.map | 1 + lib/commonjs/ActionSheetProvider.js | 2 ++ lib/commonjs/ActionSheetProvider.js.map | 1 + lib/commonjs/connectActionSheet.js | 2 ++ lib/commonjs/connectActionSheet.js.map | 1 + lib/commonjs/context.js | 2 ++ lib/commonjs/context.js.map | 1 + lib/commonjs/index.js | 2 ++ lib/commonjs/index.js.map | 1 + lib/commonjs/types.js | 2 ++ lib/commonjs/types.js.map | 1 + lib/module/ActionSheet/ActionGroup.js | 2 ++ lib/module/ActionSheet/ActionGroup.js.map | 1 + .../TouchableNativeFeedbackSafe.js | 2 ++ .../TouchableNativeFeedbackSafe.js.map | 1 + lib/module/ActionSheet/___index.ios.js | 2 ++ lib/module/ActionSheet/___index.ios.js.map | 1 + lib/module/ActionSheet/index.js | 2 ++ lib/module/ActionSheet/index.js.map | 1 + lib/module/ActionSheetProvider.js | 2 ++ lib/module/ActionSheetProvider.js.map | 1 + lib/module/connectActionSheet.js | 2 ++ lib/module/connectActionSheet.js.map | 1 + lib/module/context.js | 2 ++ lib/module/context.js.map | 1 + lib/module/index.js | 2 ++ lib/module/index.js.map | 1 + lib/module/types.js | 2 ++ lib/module/types.js.map | 1 + lib/typescript/ActionSheet/ActionGroup.d.ts | 23 ++++++++++++++ .../TouchableNativeFeedbackSafe.d.ts | 13 ++++++++ lib/typescript/ActionSheet/___index.ios.d.ts | 13 ++++++++ lib/typescript/ActionSheet/index.d.ts | 31 +++++++++++++++++++ lib/typescript/ActionSheetProvider.d.ts | 15 +++++++++ lib/typescript/connectActionSheet.d.ts | 4 +++ lib/typescript/context.d.ts | 5 +++ lib/typescript/index.d.ts | 4 +++ lib/typescript/types.d.ts | 27 ++++++++++++++++ package.json | 5 ++- .../TouchableNativeFeedbackSafe.tsx | 1 + 49 files changed, 193 insertions(+), 6 deletions(-) create mode 100644 lib/commonjs/ActionSheet/ActionGroup.js create mode 100644 lib/commonjs/ActionSheet/ActionGroup.js.map create mode 100644 lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js create mode 100644 lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js.map create mode 100644 lib/commonjs/ActionSheet/___index.ios.js create mode 100644 lib/commonjs/ActionSheet/___index.ios.js.map create mode 100644 lib/commonjs/ActionSheet/index.js create mode 100644 lib/commonjs/ActionSheet/index.js.map create mode 100644 lib/commonjs/ActionSheetProvider.js create mode 100644 lib/commonjs/ActionSheetProvider.js.map create mode 100644 lib/commonjs/connectActionSheet.js create mode 100644 lib/commonjs/connectActionSheet.js.map create mode 100644 lib/commonjs/context.js create mode 100644 lib/commonjs/context.js.map create mode 100644 lib/commonjs/index.js create mode 100644 lib/commonjs/index.js.map create mode 100644 lib/commonjs/types.js create mode 100644 lib/commonjs/types.js.map create mode 100644 lib/module/ActionSheet/ActionGroup.js create mode 100644 lib/module/ActionSheet/ActionGroup.js.map create mode 100644 lib/module/ActionSheet/TouchableNativeFeedbackSafe.js create mode 100644 lib/module/ActionSheet/TouchableNativeFeedbackSafe.js.map create mode 100644 lib/module/ActionSheet/___index.ios.js create mode 100644 lib/module/ActionSheet/___index.ios.js.map create mode 100644 lib/module/ActionSheet/index.js create mode 100644 lib/module/ActionSheet/index.js.map create mode 100644 lib/module/ActionSheetProvider.js create mode 100644 lib/module/ActionSheetProvider.js.map create mode 100644 lib/module/connectActionSheet.js create mode 100644 lib/module/connectActionSheet.js.map create mode 100644 lib/module/context.js create mode 100644 lib/module/context.js.map create mode 100644 lib/module/index.js create mode 100644 lib/module/index.js.map create mode 100644 lib/module/types.js create mode 100644 lib/module/types.js.map create mode 100644 lib/typescript/ActionSheet/ActionGroup.d.ts create mode 100644 lib/typescript/ActionSheet/TouchableNativeFeedbackSafe.d.ts create mode 100644 lib/typescript/ActionSheet/___index.ios.d.ts create mode 100644 lib/typescript/ActionSheet/index.d.ts create mode 100644 lib/typescript/ActionSheetProvider.d.ts create mode 100644 lib/typescript/connectActionSheet.d.ts create mode 100644 lib/typescript/context.d.ts create mode 100644 lib/typescript/index.d.ts create mode 100644 lib/typescript/types.d.ts diff --git a/.gitignore b/.gitignore index 7a95203..3367445 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,3 @@ android/app/libs android/keystores/debug.keystore coverage - -# generated by bob -lib/ diff --git a/README.md b/README.md index 0c9186d..383599e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + # react-native-action-sheet [![npm](https://img.shields.io/npm/v/@expo/react-native-action-sheet.svg?style=flat-square)](https://www.npmjs.com/package/@expo/react-native-action-sheet) [![License: MIT](https://img.shields.io/github/license/nd-02110114/goofi-mobile.svg)](https://opensource.org/licenses/MIT) diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js new file mode 100644 index 0000000..0a9a668 --- /dev/null +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:69}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:81}},React.createElement(_reactNative.View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:82}},!!title&&React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:83}},title),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:84}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:99}});}else{return React.createElement(_reactNative.View,{style:styles.icon,__source:{fileName:_jsxFileName,lineNumber:101}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:styles.button,accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:133}},_this._renderIconElement(iconSource,color),React.createElement(_reactNative.Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:143}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={styles.button}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js b/lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js new file mode 100644 index 0000000..6742254 --- /dev/null +++ b/lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/TouchableNativeFeedbackSafe.tsx";var CustomTouchableOpacity=function(_React$Component){(0,_inherits2.default)(CustomTouchableOpacity,_React$Component);function CustomTouchableOpacity(){(0,_classCallCheck2.default)(this,CustomTouchableOpacity);return(0,_possibleConstructorReturn2.default)(this,(0,_getPrototypeOf2.default)(CustomTouchableOpacity).apply(this,arguments));}(0,_createClass2.default)(CustomTouchableOpacity,[{key:"render",value:function render(){return React.createElement(_reactNative.TouchableOpacity,(0,_extends2.default)({},this.props,{__source:{fileName:_jsxFileName,lineNumber:17}}),this.props.children);}}]);return CustomTouchableOpacity;}(React.Component);CustomTouchableOpacity.SelectableBackground=function(){return{};};CustomTouchableOpacity.SelectableBackgroundBorderless=function(){return{};};CustomTouchableOpacity.Ripple=function(color,borderless){return{};};var TouchableComponent=_reactNative.Platform.select({web:CustomTouchableOpacity,ios:CustomTouchableOpacity,default:_reactNative.Platform.Version<=20?CustomTouchableOpacity:_reactNative.TouchableNativeFeedback});var TouchableNativeFeedbackSafe=function(_React$Component2){(0,_inherits2.default)(TouchableNativeFeedbackSafe,_React$Component2);function TouchableNativeFeedbackSafe(){(0,_classCallCheck2.default)(this,TouchableNativeFeedbackSafe);return(0,_possibleConstructorReturn2.default)(this,(0,_getPrototypeOf2.default)(TouchableNativeFeedbackSafe).apply(this,arguments));}(0,_createClass2.default)(TouchableNativeFeedbackSafe,[{key:"render",value:function render(){if(TouchableComponent===_reactNative.TouchableNativeFeedback){return React.createElement(TouchableComponent,(0,_extends2.default)({},this.props,{style:{},__source:{fileName:_jsxFileName,lineNumber:41}}),React.createElement(_reactNative.View,{style:this.props.style,__source:{fileName:_jsxFileName,lineNumber:42}},this.props.children));}return React.createElement(TouchableComponent,(0,_extends2.default)({},this.props,{__source:{fileName:_jsxFileName,lineNumber:48}}),this.props.children);}}]);return TouchableNativeFeedbackSafe;}(React.Component);exports.default=TouchableNativeFeedbackSafe;TouchableNativeFeedbackSafe.SelectableBackground=TouchableComponent.SelectableBackground;TouchableNativeFeedbackSafe.SelectableBackgroundBorderless=TouchableComponent.SelectableBackgroundBorderless;TouchableNativeFeedbackSafe.Ripple=TouchableComponent.Ripple; +//# sourceMappingURL=TouchableNativeFeedbackSafe.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js.map b/lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js.map new file mode 100644 index 0000000..f2e5426 --- /dev/null +++ b/lib/commonjs/ActionSheet/TouchableNativeFeedbackSafe.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableNativeFeedbackSafe.tsx"],"names":["CustomTouchableOpacity","props","children","React","Component","SelectableBackground","SelectableBackgroundBorderless","Ripple","color","borderless","TouchableComponent","Platform","select","web","ios","default","Version","TouchableNativeFeedback","TouchableNativeFeedbackSafe","style"],"mappings":"kyBAAA,oDACA,yC,+HASMA,CAAAA,sB,+YAKK,CACP,MAAO,qBAAC,6BAAD,0BAAsB,KAAKC,KAA3B,mDAAmC,KAAKA,KAAL,CAAWC,QAA9C,CAAP,CACD,C,oCAPkCC,KAAK,CAACC,S,EAArCJ,sB,CACGK,oB,CAAuB,iBAAO,EAAP,E,CAD1BL,sB,CAEGM,8B,CAAiC,iBAAO,EAAP,E,CAFpCN,sB,CAGGO,M,CAAS,SAACC,KAAD,CAAgBC,UAAhB,QAA0C,EAA1C,E,CAOlB,GAAMC,CAAAA,kBAAkB,CAAGC,sBAASC,MAAT,CAAgB,CACzCC,GAAG,CAAEb,sBADoC,CAGzCc,GAAG,CAAEd,sBAHoC,CAIzCe,OAAO,CAAEJ,sBAASK,OAAT,EAAoB,EAApB,CAAyBhB,sBAAzB,CAAkDiB,oCAJlB,CAAhB,CAA3B,C,GAYqBC,CAAAA,2B,0aAKV,CACP,GAAIR,kBAAkB,GAAKO,oCAA3B,CAAoD,CAClD,MACE,qBAAC,kBAAD,0BAAwB,KAAKhB,KAA7B,EAAoC,KAAK,CAAE,EAA3C,kDACE,oBAAC,iBAAD,EAAM,KAAK,CAAE,KAAKA,KAAL,CAAWkB,KAAxB,iDAAgC,KAAKlB,KAAL,CAAWC,QAA3C,CADF,CADF,CAKD,CAGD,MAAO,qBAAC,kBAAD,0BAAwB,KAAKD,KAA7B,mDAAqC,KAAKA,KAAL,CAAWC,QAAhD,CAAP,CACD,C,yCAhBsDC,KAAK,CAACC,S,8CAA1Cc,2B,CACZb,oB,CAAuBK,kBAAkB,CAACL,oB,CAD9Ba,2B,CAEZZ,8B,CAAiCI,kBAAkB,CAACJ,8B,CAFxCY,2B,CAGZX,M,CAASG,kBAAkB,CAACH,M","sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n TouchableNativeFeedback,\n TouchableOpacity,\n View,\n TouchableWithoutFeedbackProps,\n} from 'react-native';\n\n// This TouchableOpacity has the same static method of TouchableNativeFeedback\nclass CustomTouchableOpacity extends React.Component {\n static SelectableBackground = () => ({});\n static SelectableBackgroundBorderless = () => ({});\n static Ripple = (color: string, borderless?: boolean) => ({});\n\n render() {\n return {this.props.children};\n }\n}\n\nconst TouchableComponent = Platform.select({\n web: CustomTouchableOpacity,\n // Override default iOS behavior.\n ios: CustomTouchableOpacity,\n default: Platform.Version <= 20 ? CustomTouchableOpacity : TouchableNativeFeedback,\n});\n\ntype Props = TouchableWithoutFeedbackProps & {\n pressInDelay: number;\n background: any;\n};\n\nexport default class TouchableNativeFeedbackSafe extends React.Component {\n static SelectableBackground = TouchableComponent.SelectableBackground;\n static SelectableBackgroundBorderless = TouchableComponent.SelectableBackgroundBorderless;\n static Ripple = TouchableComponent.Ripple;\n\n render() {\n if (TouchableComponent === TouchableNativeFeedback) {\n return (\n \n {this.props.children}\n \n );\n }\n\n // @ts-ignore: JSX element type 'TouchableComponent' does not have any construct or call signatures\n return {this.props.children};\n }\n}\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/___index.ios.js b/lib/commonjs/ActionSheet/___index.ios.js new file mode 100644 index 0000000..3e11667 --- /dev/null +++ b/lib/commonjs/ActionSheet/___index.ios.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/___index.ios.tsx";var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){(0,_classCallCheck2.default)(this,ActionSheet);return(0,_possibleConstructorReturn2.default)(this,(0,_getPrototypeOf2.default)(ActionSheet).apply(this,arguments));}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:17}},React.Children.only(this.props.children));}},{key:"showActionSheetWithOptions",value:function showActionSheetWithOptions(dataOptions,onSelect){var cancelButtonIndex=dataOptions.cancelButtonIndex,destructiveButtonIndex=dataOptions.destructiveButtonIndex,options=dataOptions.options,tintColor=dataOptions.tintColor;var iosOptions={cancelButtonIndex:cancelButtonIndex,destructiveButtonIndex:destructiveButtonIndex,options:options,tintColor:tintColor,title:dataOptions.title||undefined,message:dataOptions.message||undefined,anchor:dataOptions.anchor||undefined};_reactNative.ActionSheetIOS.showActionSheetWithOptions(iosOptions,onSelect);}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet; +//# sourceMappingURL=___index.ios.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/___index.ios.js.map b/lib/commonjs/ActionSheet/___index.ios.js.map new file mode 100644 index 0000000..79754b0 --- /dev/null +++ b/lib/commonjs/ActionSheet/___index.ios.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["___index.ios.tsx"],"names":["ActionSheet","props","pointerEvents","flex","React","Children","only","children","dataOptions","onSelect","cancelButtonIndex","destructiveButtonIndex","options","tintColor","iosOptions","title","undefined","message","anchor","ActionSheetIOS","showActionSheetWithOptions","Component"],"mappings":"ktBAAA,oDAEA,yC,gHAWqBA,CAAAA,W,wVACV,CACP,MACE,qBAAC,iBAAD,EAAM,aAAa,CAAE,KAAKC,KAAL,CAAWC,aAAhC,CAA+C,KAAK,CAAE,CAAEC,IAAI,CAAE,CAAR,CAAtD,iDACGC,KAAK,CAACC,QAAN,CAAeC,IAAf,CAAoB,KAAKL,KAAL,CAAWM,QAA/B,CADH,CADF,CAKD,C,8EAE0BC,W,CAAoCC,Q,CAAoB,IAEzEC,CAAAA,iBAFyE,CAEPF,WAFO,CAEzEE,iBAFyE,CAEtDC,sBAFsD,CAEPH,WAFO,CAEtDG,sBAFsD,CAE9BC,OAF8B,CAEPJ,WAFO,CAE9BI,OAF8B,CAErBC,SAFqB,CAEPL,WAFO,CAErBK,SAFqB,CAGjF,GAAMC,CAAAA,UAAiC,CAAG,CACxCJ,iBAAiB,CAAjBA,iBADwC,CAExCC,sBAAsB,CAAtBA,sBAFwC,CAGxCC,OAAO,CAAPA,OAHwC,CAIxCC,SAAS,CAATA,SAJwC,CAMxCE,KAAK,CAAEP,WAAW,CAACO,KAAZ,EAAqBC,SANY,CAOxCC,OAAO,CAAET,WAAW,CAACS,OAAZ,EAAuBD,SAPQ,CAQxCE,MAAM,CAAEV,WAAW,CAACU,MAAZ,EAAsBF,SARU,CAA1C,CAUAG,4BAAeC,0BAAf,CAA0CN,UAA1C,CAAsDL,QAAtD,EACD,C,yBAvBsCL,KAAK,CAACiB,S","sourcesContent":["import * as React from 'react';\n\nimport { ActionSheetIOS, View, ViewProps } from 'react-native';\n\nimport { ActionSheetIOSOptions } from '../types';\n\ninterface Props {\n readonly children: React.ReactNode;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\ntype onSelect = (buttonIndex: number) => void;\n\nexport default class ActionSheet extends React.Component {\n render() {\n return (\n \n {React.Children.only(this.props.children)}\n \n );\n }\n\n showActionSheetWithOptions(dataOptions: ActionSheetIOSOptions, onSelect: onSelect) {\n // ...dataOptions include other keys which use in android and web, thats why `Android-Only options` Crash on IOS\n const { cancelButtonIndex, destructiveButtonIndex, options, tintColor } = dataOptions;\n const iosOptions: ActionSheetIOSOptions = {\n cancelButtonIndex,\n destructiveButtonIndex,\n options,\n tintColor,\n // A null title or message on iOS causes a crash\n title: dataOptions.title || undefined,\n message: dataOptions.message || undefined,\n anchor: dataOptions.anchor || undefined,\n };\n ActionSheetIOS.showActionSheetWithOptions(iosOptions, onSelect);\n }\n}\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js b/lib/commonjs/ActionSheet/index.js new file mode 100644 index 0000000..54fd43f --- /dev/null +++ b/lib/commonjs/ActionSheet/index.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,separatorStyle=options.separatorStyle;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:123}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:140}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:141}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js.map b/lib/commonjs/ActionSheet/index.js.map new file mode 100644 index 0000000..0b430b6 --- /dev/null +++ b/lib/commonjs/ActionSheet/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheetProvider.js b/lib/commonjs/ActionSheetProvider.js new file mode 100644 index 0000000..4dff059 --- /dev/null +++ b/lib/commonjs/ActionSheetProvider.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _ActionSheet=_interopRequireDefault(require("./ActionSheet"));var _context=require("./context");var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheetProvider.tsx";var ActionSheetProvider=function(_React$Component){(0,_inherits2.default)(ActionSheetProvider,_React$Component);function ActionSheetProvider(props){var _this;(0,_classCallCheck2.default)(this,ActionSheetProvider);_this=(0,_possibleConstructorReturn2.default)(this,(0,_getPrototypeOf2.default)(ActionSheetProvider).call(this,props));_this.getContext=function(){return{showActionSheetWithOptions:function showActionSheetWithOptions(options,callback){_this._actionSheetRef.current!==null&&_this._actionSheetRef.current.showActionSheetWithOptions(options,callback);}};};_this._actionSheetRef=React.createRef();return _this;}(0,_createClass2.default)(ActionSheetProvider,[{key:"render",value:function render(){return React.createElement(_context.Provider,{value:this.getContext(),__source:{fileName:_jsxFileName,lineNumber:29}},React.createElement(_ActionSheet.default,{ref:this._actionSheetRef,__source:{fileName:_jsxFileName,lineNumber:30}},React.Children.only(this.props.children)));}}]);return ActionSheetProvider;}(React.Component);exports.default=ActionSheetProvider; +//# sourceMappingURL=ActionSheetProvider.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheetProvider.js.map b/lib/commonjs/ActionSheetProvider.js.map new file mode 100644 index 0000000..82d05b6 --- /dev/null +++ b/lib/commonjs/ActionSheetProvider.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ActionSheetProvider.tsx"],"names":["ActionSheetProvider","props","getContext","showActionSheetWithOptions","options","callback","_actionSheetRef","current","React","createRef","Children","only","children","Component"],"mappings":"ktBAAA,oDACA,kEACA,kC,2GAOqBA,CAAAA,mB,yFAGnB,6BAAYC,KAAZ,CAA0B,kEACxB,+GAAMA,KAAN,GADwB,MAK1BC,UAL0B,CAKb,UAAM,CACjB,MAAO,CACLC,0BAA0B,CAAE,oCAACC,OAAD,CAA8BC,QAA9B,CAAgE,CAC1F,MAAKC,eAAL,CAAqBC,OAArB,GAAiC,IAAjC,EACE,MAAKD,eAAL,CAAqBC,OAArB,CAA6BJ,0BAA7B,CAAwDC,OAAxD,CAAiEC,QAAjE,CADF,CAED,CAJI,CAAP,CAMD,CAZyB,CAExB,MAAKC,eAAL,CAAuBE,KAAK,CAACC,SAAN,EAAvB,CAFwB,aAGzB,C,oFAWQ,CACP,MACE,qBAAC,iBAAD,EAAU,KAAK,CAAE,KAAKP,UAAL,EAAjB,iDACE,oBAAC,oBAAD,EAAa,GAAG,CAAE,KAAKI,eAAvB,iDACGE,KAAK,CAACE,QAAN,CAAeC,IAAf,CAAoB,KAAKV,KAAL,CAAWW,QAA/B,CADH,CADF,CADF,CAOD,C,iCAzB8CJ,KAAK,CAACK,S","sourcesContent":["import * as React from 'react';\nimport ActionSheet from './ActionSheet';\nimport { Provider } from './context';\nimport { ActionSheetOptions } from './types';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nexport default class ActionSheetProvider extends React.Component {\n _actionSheetRef: React.RefObject;\n\n constructor(props: Props) {\n super(props);\n this._actionSheetRef = React.createRef();\n }\n\n getContext = () => {\n return {\n showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => {\n this._actionSheetRef.current !== null &&\n this._actionSheetRef.current.showActionSheetWithOptions(options, callback);\n },\n };\n };\n\n render() {\n return (\n \n \n {React.Children.only(this.props.children)}\n \n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/lib/commonjs/connectActionSheet.js b/lib/commonjs/connectActionSheet.js new file mode 100644 index 0000000..2ee8c78 --- /dev/null +++ b/lib/commonjs/connectActionSheet.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=connectActionSheet;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var React=_interopRequireWildcard(require("react"));var _context=require("./context");var _hoistNonReactStatics=_interopRequireDefault(require("hoist-non-react-statics"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/connectActionSheet.tsx";function connectActionSheet(WrappedComponent){var ConnectedActionSheet=function ConnectedActionSheet(props){return React.createElement(_context.Consumer,{__source:{fileName:_jsxFileName,lineNumber:11}},function(_ref){var showActionSheetWithOptions=_ref.showActionSheetWithOptions;return React.createElement(WrappedComponent,(0,_extends2.default)({},props,{showActionSheetWithOptions:showActionSheetWithOptions,__source:{fileName:_jsxFileName,lineNumber:14}}));});};return(0,_hoistNonReactStatics.default)(ConnectedActionSheet,WrappedComponent);} +//# sourceMappingURL=connectActionSheet.js.map \ No newline at end of file diff --git a/lib/commonjs/connectActionSheet.js.map b/lib/commonjs/connectActionSheet.js.map new file mode 100644 index 0000000..1b946f8 --- /dev/null +++ b/lib/commonjs/connectActionSheet.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["connectActionSheet.tsx"],"names":["connectActionSheet","WrappedComponent","ConnectedActionSheet","props","showActionSheetWithOptions"],"mappings":"oVAAA,oDACA,kCACA,qF,uGAGe,QAASA,CAAAA,kBAAT,CACbC,gBADa,CAEb,CACA,GAAMC,CAAAA,oBAAoB,CAAG,QAAvBA,CAAAA,oBAAuB,CAACC,KAAD,CAAqB,CAChD,MACE,qBAAC,iBAAD,kDACG,cAAoC,IAAjCC,CAAAA,0BAAiC,MAAjCA,0BAAiC,CACnC,MACE,qBAAC,gBAAD,0BAAsBD,KAAtB,EAA6B,0BAA0B,CAAEC,0BAAzD,kDADF,CAGD,CALH,CADF,CASD,CAVD,CAYA,MAAO,kCAAoBF,oBAApB,CAA0CD,gBAA1C,CAAP,CACD","sourcesContent":["import * as React from 'react';\nimport { Consumer } from './context';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport { ActionSheetProps } from './types';\n\nexport default function connectActionSheet(\n WrappedComponent: React.ComponentType\n) {\n const ConnectedActionSheet = (props: OwnProps) => {\n return (\n \n {({ showActionSheetWithOptions }) => {\n return (\n \n );\n }}\n \n );\n };\n\n return hoistNonReactStatic(ConnectedActionSheet, WrappedComponent);\n}\n"]} \ No newline at end of file diff --git a/lib/commonjs/context.js b/lib/commonjs/context.js new file mode 100644 index 0000000..c441113 --- /dev/null +++ b/lib/commonjs/context.js @@ -0,0 +1,2 @@ +var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.useActionSheet=useActionSheet;exports.Consumer=exports.Provider=void 0;var React=_interopRequireWildcard(require("react"));var context=React.createContext({showActionSheetWithOptions:function showActionSheetWithOptions(options,callback){}});function useActionSheet(){return React.useContext(context);}var Provider=context.Provider,Consumer=context.Consumer;exports.Consumer=Consumer;exports.Provider=Provider; +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/lib/commonjs/context.js.map b/lib/commonjs/context.js.map new file mode 100644 index 0000000..9abc425 --- /dev/null +++ b/lib/commonjs/context.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["context.ts"],"names":["context","React","createContext","showActionSheetWithOptions","options","callback","useActionSheet","useContext","Provider","Consumer"],"mappings":"6NAAA,oDAGA,GAAMA,CAAAA,OAAO,CAAGC,KAAK,CAACC,aAAN,CAAsC,CACpDC,0BAA0B,CAAE,oCAACC,OAAD,CAA8BC,QAA9B,CAAgE,CAAE,CAD1C,CAAtC,CAAhB,CAIO,QAASC,CAAAA,cAAT,EAA0B,CAC/B,MAAOL,CAAAA,KAAK,CAACM,UAAN,CAAiBP,OAAjB,CAAP,CACD,C,GAEOQ,CAAAA,Q,CAAuBR,O,CAAvBQ,Q,CAAUC,Q,CAAaT,O,CAAbS,Q","sourcesContent":["import * as React from 'react';\nimport { ActionSheetOptions, ActionSheetProps } from './types';\n\nconst context = React.createContext({\n showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => {},\n});\n\nexport function useActionSheet() {\n return React.useContext(context);\n}\n\nconst { Provider, Consumer } = context;\n\nexport { Provider, Consumer };\n"]} \ No newline at end of file diff --git a/lib/commonjs/index.js b/lib/commonjs/index.js new file mode 100644 index 0000000..037a1ea --- /dev/null +++ b/lib/commonjs/index.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});var _exportNames={ActionSheetProvider:true,connectActionSheet:true,useActionSheet:true};Object.defineProperty(exports,"ActionSheetProvider",{enumerable:true,get:function get(){return _ActionSheetProvider.default;}});Object.defineProperty(exports,"connectActionSheet",{enumerable:true,get:function get(){return _connectActionSheet.default;}});Object.defineProperty(exports,"useActionSheet",{enumerable:true,get:function get(){return _context.useActionSheet;}});var _ActionSheetProvider=_interopRequireDefault(require("./ActionSheetProvider"));var _connectActionSheet=_interopRequireDefault(require("./connectActionSheet"));var _context=require("./context");var _types=require("./types");Object.keys(_types).forEach(function(key){if(key==="default"||key==="__esModule")return;if(Object.prototype.hasOwnProperty.call(_exportNames,key))return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _types[key];}});}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/index.js.map b/lib/commonjs/index.js.map new file mode 100644 index 0000000..69d2a51 --- /dev/null +++ b/lib/commonjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":[],"mappings":"wlBAAA,kFACA,gFACA,kCACA","sourcesContent":["export { default as ActionSheetProvider } from './ActionSheetProvider';\nexport { default as connectActionSheet } from './connectActionSheet';\nexport { useActionSheet } from './context';\nexport * from './types';\n"]} \ No newline at end of file diff --git a/lib/commonjs/types.js b/lib/commonjs/types.js new file mode 100644 index 0000000..63b2c4c --- /dev/null +++ b/lib/commonjs/types.js @@ -0,0 +1,2 @@ + +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/lib/commonjs/types.js.map b/lib/commonjs/types.js.map new file mode 100644 index 0000000..9ffd4b2 --- /dev/null +++ b/lib/commonjs/types.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js new file mode 100644 index 0000000..726c12b --- /dev/null +++ b/lib/module/ActionSheet/ActionGroup.js @@ -0,0 +1,2 @@ +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:69}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:81}},React.createElement(View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:82}},!!title&&React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:83}},title),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:84}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:99}});}else{return React.createElement(View,{style:styles.icon,__source:{fileName:_jsxFileName,lineNumber:101}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:styles.button,accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:133}},_this._renderIconElement(iconSource,color),React.createElement(Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:143}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={styles.button}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/TouchableNativeFeedbackSafe.js b/lib/module/ActionSheet/TouchableNativeFeedbackSafe.js new file mode 100644 index 0000000..876e972 --- /dev/null +++ b/lib/module/ActionSheet/TouchableNativeFeedbackSafe.js @@ -0,0 +1,2 @@ +import _extends from"@babel/runtime/helpers/extends";import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/TouchableNativeFeedbackSafe.tsx";import*as React from'react';import{Platform,TouchableNativeFeedback,TouchableOpacity,View}from'react-native';var CustomTouchableOpacity=function(_React$Component){_inherits(CustomTouchableOpacity,_React$Component);function CustomTouchableOpacity(){_classCallCheck(this,CustomTouchableOpacity);return _possibleConstructorReturn(this,_getPrototypeOf(CustomTouchableOpacity).apply(this,arguments));}_createClass(CustomTouchableOpacity,[{key:"render",value:function render(){return React.createElement(TouchableOpacity,_extends({},this.props,{__source:{fileName:_jsxFileName,lineNumber:17}}),this.props.children);}}]);return CustomTouchableOpacity;}(React.Component);CustomTouchableOpacity.SelectableBackground=function(){return{};};CustomTouchableOpacity.SelectableBackgroundBorderless=function(){return{};};CustomTouchableOpacity.Ripple=function(color,borderless){return{};};var TouchableComponent=Platform.select({web:CustomTouchableOpacity,ios:CustomTouchableOpacity,default:Platform.Version<=20?CustomTouchableOpacity:TouchableNativeFeedback});var TouchableNativeFeedbackSafe=function(_React$Component2){_inherits(TouchableNativeFeedbackSafe,_React$Component2);function TouchableNativeFeedbackSafe(){_classCallCheck(this,TouchableNativeFeedbackSafe);return _possibleConstructorReturn(this,_getPrototypeOf(TouchableNativeFeedbackSafe).apply(this,arguments));}_createClass(TouchableNativeFeedbackSafe,[{key:"render",value:function render(){if(TouchableComponent===TouchableNativeFeedback){return React.createElement(TouchableComponent,_extends({},this.props,{style:{},__source:{fileName:_jsxFileName,lineNumber:41}}),React.createElement(View,{style:this.props.style,__source:{fileName:_jsxFileName,lineNumber:42}},this.props.children));}return React.createElement(TouchableComponent,_extends({},this.props,{__source:{fileName:_jsxFileName,lineNumber:48}}),this.props.children);}}]);return TouchableNativeFeedbackSafe;}(React.Component);TouchableNativeFeedbackSafe.SelectableBackground=TouchableComponent.SelectableBackground;TouchableNativeFeedbackSafe.SelectableBackgroundBorderless=TouchableComponent.SelectableBackgroundBorderless;TouchableNativeFeedbackSafe.Ripple=TouchableComponent.Ripple;export{TouchableNativeFeedbackSafe as default}; +//# sourceMappingURL=TouchableNativeFeedbackSafe.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/TouchableNativeFeedbackSafe.js.map b/lib/module/ActionSheet/TouchableNativeFeedbackSafe.js.map new file mode 100644 index 0000000..d872e88 --- /dev/null +++ b/lib/module/ActionSheet/TouchableNativeFeedbackSafe.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableNativeFeedbackSafe.tsx"],"names":["React","Platform","TouchableNativeFeedback","TouchableOpacity","View","CustomTouchableOpacity","props","children","Component","SelectableBackground","SelectableBackgroundBorderless","Ripple","color","borderless","TouchableComponent","select","web","ios","default","Version","TouchableNativeFeedbackSafe","style"],"mappings":"ogBAAA,MAAO,GAAKA,CAAAA,KAAZ,KAAuB,OAAvB,CACA,OACEC,QADF,CAEEC,uBAFF,CAGEC,gBAHF,CAIEC,IAJF,KAMO,cANP,C,GASMC,CAAAA,sB,+UAKK,CACP,MAAO,qBAAC,gBAAD,aAAsB,KAAKC,KAA3B,mDAAmC,KAAKA,KAAL,CAAWC,QAA9C,CAAP,CACD,C,oCAPkCP,KAAK,CAACQ,S,EAArCH,sB,CACGI,oB,CAAuB,iBAAO,EAAP,E,CAD1BJ,sB,CAEGK,8B,CAAiC,iBAAO,EAAP,E,CAFpCL,sB,CAGGM,M,CAAS,SAACC,KAAD,CAAgBC,UAAhB,QAA0C,EAA1C,E,CAOlB,GAAMC,CAAAA,kBAAkB,CAAGb,QAAQ,CAACc,MAAT,CAAgB,CACzCC,GAAG,CAAEX,sBADoC,CAGzCY,GAAG,CAAEZ,sBAHoC,CAIzCa,OAAO,CAAEjB,QAAQ,CAACkB,OAAT,EAAoB,EAApB,CAAyBd,sBAAzB,CAAkDH,uBAJlB,CAAhB,CAA3B,C,GAYqBkB,CAAAA,2B,0WAKV,CACP,GAAIN,kBAAkB,GAAKZ,uBAA3B,CAAoD,CAClD,MACE,qBAAC,kBAAD,aAAwB,KAAKI,KAA7B,EAAoC,KAAK,CAAE,EAA3C,kDACE,oBAAC,IAAD,EAAM,KAAK,CAAE,KAAKA,KAAL,CAAWe,KAAxB,iDAAgC,KAAKf,KAAL,CAAWC,QAA3C,CADF,CADF,CAKD,CAGD,MAAO,qBAAC,kBAAD,aAAwB,KAAKD,KAA7B,mDAAqC,KAAKA,KAAL,CAAWC,QAAhD,CAAP,CACD,C,yCAhBsDP,KAAK,CAACQ,S,EAA1CY,2B,CACZX,oB,CAAuBK,kBAAkB,CAACL,oB,CAD9BW,2B,CAEZV,8B,CAAiCI,kBAAkB,CAACJ,8B,CAFxCU,2B,CAGZT,M,CAASG,kBAAkB,CAACH,M,QAHhBS,2B","sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n TouchableNativeFeedback,\n TouchableOpacity,\n View,\n TouchableWithoutFeedbackProps,\n} from 'react-native';\n\n// This TouchableOpacity has the same static method of TouchableNativeFeedback\nclass CustomTouchableOpacity extends React.Component {\n static SelectableBackground = () => ({});\n static SelectableBackgroundBorderless = () => ({});\n static Ripple = (color: string, borderless?: boolean) => ({});\n\n render() {\n return {this.props.children};\n }\n}\n\nconst TouchableComponent = Platform.select({\n web: CustomTouchableOpacity,\n // Override default iOS behavior.\n ios: CustomTouchableOpacity,\n default: Platform.Version <= 20 ? CustomTouchableOpacity : TouchableNativeFeedback,\n});\n\ntype Props = TouchableWithoutFeedbackProps & {\n pressInDelay: number;\n background: any;\n};\n\nexport default class TouchableNativeFeedbackSafe extends React.Component {\n static SelectableBackground = TouchableComponent.SelectableBackground;\n static SelectableBackgroundBorderless = TouchableComponent.SelectableBackgroundBorderless;\n static Ripple = TouchableComponent.Ripple;\n\n render() {\n if (TouchableComponent === TouchableNativeFeedback) {\n return (\n \n {this.props.children}\n \n );\n }\n\n // @ts-ignore: JSX element type 'TouchableComponent' does not have any construct or call signatures\n return {this.props.children};\n }\n}\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/___index.ios.js b/lib/module/ActionSheet/___index.ios.js new file mode 100644 index 0000000..19cfd5b --- /dev/null +++ b/lib/module/ActionSheet/___index.ios.js @@ -0,0 +1,2 @@ +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/___index.ios.tsx";import*as React from'react';import{ActionSheetIOS,View}from'react-native';var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){_classCallCheck(this,ActionSheet);return _possibleConstructorReturn(this,_getPrototypeOf(ActionSheet).apply(this,arguments));}_createClass(ActionSheet,[{key:"render",value:function render(){return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:17}},React.Children.only(this.props.children));}},{key:"showActionSheetWithOptions",value:function showActionSheetWithOptions(dataOptions,onSelect){var cancelButtonIndex=dataOptions.cancelButtonIndex,destructiveButtonIndex=dataOptions.destructiveButtonIndex,options=dataOptions.options,tintColor=dataOptions.tintColor;var iosOptions={cancelButtonIndex:cancelButtonIndex,destructiveButtonIndex:destructiveButtonIndex,options:options,tintColor:tintColor,title:dataOptions.title||undefined,message:dataOptions.message||undefined,anchor:dataOptions.anchor||undefined};ActionSheetIOS.showActionSheetWithOptions(iosOptions,onSelect);}}]);return ActionSheet;}(React.Component);export{ActionSheet as default}; +//# sourceMappingURL=___index.ios.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/___index.ios.js.map b/lib/module/ActionSheet/___index.ios.js.map new file mode 100644 index 0000000..e80ec54 --- /dev/null +++ b/lib/module/ActionSheet/___index.ios.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["___index.ios.tsx"],"names":["React","ActionSheetIOS","View","ActionSheet","props","pointerEvents","flex","Children","only","children","dataOptions","onSelect","cancelButtonIndex","destructiveButtonIndex","options","tintColor","iosOptions","title","undefined","message","anchor","showActionSheetWithOptions","Component"],"mappings":"gcAAA,MAAO,GAAKA,CAAAA,KAAZ,KAAuB,OAAvB,CAEA,OAASC,cAAT,CAAyBC,IAAzB,KAAgD,cAAhD,C,GAWqBC,CAAAA,W,wRACV,CACP,MACE,qBAAC,IAAD,EAAM,aAAa,CAAE,KAAKC,KAAL,CAAWC,aAAhC,CAA+C,KAAK,CAAE,CAAEC,IAAI,CAAE,CAAR,CAAtD,iDACGN,KAAK,CAACO,QAAN,CAAeC,IAAf,CAAoB,KAAKJ,KAAL,CAAWK,QAA/B,CADH,CADF,CAKD,C,8EAE0BC,W,CAAoCC,Q,CAAoB,IAEzEC,CAAAA,iBAFyE,CAEPF,WAFO,CAEzEE,iBAFyE,CAEtDC,sBAFsD,CAEPH,WAFO,CAEtDG,sBAFsD,CAE9BC,OAF8B,CAEPJ,WAFO,CAE9BI,OAF8B,CAErBC,SAFqB,CAEPL,WAFO,CAErBK,SAFqB,CAGjF,GAAMC,CAAAA,UAAiC,CAAG,CACxCJ,iBAAiB,CAAjBA,iBADwC,CAExCC,sBAAsB,CAAtBA,sBAFwC,CAGxCC,OAAO,CAAPA,OAHwC,CAIxCC,SAAS,CAATA,SAJwC,CAMxCE,KAAK,CAAEP,WAAW,CAACO,KAAZ,EAAqBC,SANY,CAOxCC,OAAO,CAAET,WAAW,CAACS,OAAZ,EAAuBD,SAPQ,CAQxCE,MAAM,CAAEV,WAAW,CAACU,MAAZ,EAAsBF,SARU,CAA1C,CAUAjB,cAAc,CAACoB,0BAAf,CAA0CL,UAA1C,CAAsDL,QAAtD,EACD,C,yBAvBsCX,KAAK,CAACsB,S,SAA1BnB,W","sourcesContent":["import * as React from 'react';\n\nimport { ActionSheetIOS, View, ViewProps } from 'react-native';\n\nimport { ActionSheetIOSOptions } from '../types';\n\ninterface Props {\n readonly children: React.ReactNode;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\ntype onSelect = (buttonIndex: number) => void;\n\nexport default class ActionSheet extends React.Component {\n render() {\n return (\n \n {React.Children.only(this.props.children)}\n \n );\n }\n\n showActionSheetWithOptions(dataOptions: ActionSheetIOSOptions, onSelect: onSelect) {\n // ...dataOptions include other keys which use in android and web, thats why `Android-Only options` Crash on IOS\n const { cancelButtonIndex, destructiveButtonIndex, options, tintColor } = dataOptions;\n const iosOptions: ActionSheetIOSOptions = {\n cancelButtonIndex,\n destructiveButtonIndex,\n options,\n tintColor,\n // A null title or message on iOS causes a crash\n title: dataOptions.title || undefined,\n message: dataOptions.message || undefined,\n anchor: dataOptions.anchor || undefined,\n };\n ActionSheetIOS.showActionSheetWithOptions(iosOptions, onSelect);\n }\n}\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js b/lib/module/ActionSheet/index.js new file mode 100644 index 0000000..e0e0c10 --- /dev/null +++ b/lib/module/ActionSheet/index.js @@ -0,0 +1,2 @@ +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,separatorStyle=options.separatorStyle;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:123}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:140}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:141}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js.map b/lib/module/ActionSheet/index.js.map new file mode 100644 index 0000000..c488006 --- /dev/null +++ b/lib/module/ActionSheet/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheetProvider.js b/lib/module/ActionSheetProvider.js new file mode 100644 index 0000000..000b658 --- /dev/null +++ b/lib/module/ActionSheetProvider.js @@ -0,0 +1,2 @@ +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheetProvider.tsx";import*as React from'react';import ActionSheet from'./ActionSheet';import{Provider}from'./context';var ActionSheetProvider=function(_React$Component){_inherits(ActionSheetProvider,_React$Component);function ActionSheetProvider(props){var _this;_classCallCheck(this,ActionSheetProvider);_this=_possibleConstructorReturn(this,_getPrototypeOf(ActionSheetProvider).call(this,props));_this.getContext=function(){return{showActionSheetWithOptions:function showActionSheetWithOptions(options,callback){_this._actionSheetRef.current!==null&&_this._actionSheetRef.current.showActionSheetWithOptions(options,callback);}};};_this._actionSheetRef=React.createRef();return _this;}_createClass(ActionSheetProvider,[{key:"render",value:function render(){return React.createElement(Provider,{value:this.getContext(),__source:{fileName:_jsxFileName,lineNumber:29}},React.createElement(ActionSheet,{ref:this._actionSheetRef,__source:{fileName:_jsxFileName,lineNumber:30}},React.Children.only(this.props.children)));}}]);return ActionSheetProvider;}(React.Component);export{ActionSheetProvider as default}; +//# sourceMappingURL=ActionSheetProvider.js.map \ No newline at end of file diff --git a/lib/module/ActionSheetProvider.js.map b/lib/module/ActionSheetProvider.js.map new file mode 100644 index 0000000..093b405 --- /dev/null +++ b/lib/module/ActionSheetProvider.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ActionSheetProvider.tsx"],"names":["React","ActionSheet","Provider","ActionSheetProvider","props","getContext","showActionSheetWithOptions","options","callback","_actionSheetRef","current","createRef","Children","only","children","Component"],"mappings":"2bAAA,MAAO,GAAKA,CAAAA,KAAZ,KAAuB,OAAvB,CACA,MAAOC,CAAAA,WAAP,KAAwB,eAAxB,CACA,OAASC,QAAT,KAAyB,WAAzB,C,GAOqBC,CAAAA,mB,4EAGnB,6BAAYC,KAAZ,CAA0B,qDACxB,qFAAMA,KAAN,GADwB,MAK1BC,UAL0B,CAKb,UAAM,CACjB,MAAO,CACLC,0BAA0B,CAAE,oCAACC,OAAD,CAA8BC,QAA9B,CAAgE,CAC1F,MAAKC,eAAL,CAAqBC,OAArB,GAAiC,IAAjC,EACE,MAAKD,eAAL,CAAqBC,OAArB,CAA6BJ,0BAA7B,CAAwDC,OAAxD,CAAiEC,QAAjE,CADF,CAED,CAJI,CAAP,CAMD,CAZyB,CAExB,MAAKC,eAAL,CAAuBT,KAAK,CAACW,SAAN,EAAvB,CAFwB,aAGzB,C,uEAWQ,CACP,MACE,qBAAC,QAAD,EAAU,KAAK,CAAE,KAAKN,UAAL,EAAjB,iDACE,oBAAC,WAAD,EAAa,GAAG,CAAE,KAAKI,eAAvB,iDACGT,KAAK,CAACY,QAAN,CAAeC,IAAf,CAAoB,KAAKT,KAAL,CAAWU,QAA/B,CADH,CADF,CADF,CAOD,C,iCAzB8Cd,KAAK,CAACe,S,SAAlCZ,mB","sourcesContent":["import * as React from 'react';\nimport ActionSheet from './ActionSheet';\nimport { Provider } from './context';\nimport { ActionSheetOptions } from './types';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nexport default class ActionSheetProvider extends React.Component {\n _actionSheetRef: React.RefObject;\n\n constructor(props: Props) {\n super(props);\n this._actionSheetRef = React.createRef();\n }\n\n getContext = () => {\n return {\n showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => {\n this._actionSheetRef.current !== null &&\n this._actionSheetRef.current.showActionSheetWithOptions(options, callback);\n },\n };\n };\n\n render() {\n return (\n \n \n {React.Children.only(this.props.children)}\n \n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/lib/module/connectActionSheet.js b/lib/module/connectActionSheet.js new file mode 100644 index 0000000..99cde8a --- /dev/null +++ b/lib/module/connectActionSheet.js @@ -0,0 +1,2 @@ +import _extends from"@babel/runtime/helpers/extends";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/connectActionSheet.tsx";import*as React from'react';import{Consumer}from'./context';import hoistNonReactStatic from'hoist-non-react-statics';export default function connectActionSheet(WrappedComponent){var ConnectedActionSheet=function ConnectedActionSheet(props){return React.createElement(Consumer,{__source:{fileName:_jsxFileName,lineNumber:11}},function(_ref){var showActionSheetWithOptions=_ref.showActionSheetWithOptions;return React.createElement(WrappedComponent,_extends({},props,{showActionSheetWithOptions:showActionSheetWithOptions,__source:{fileName:_jsxFileName,lineNumber:14}}));});};return hoistNonReactStatic(ConnectedActionSheet,WrappedComponent);} +//# sourceMappingURL=connectActionSheet.js.map \ No newline at end of file diff --git a/lib/module/connectActionSheet.js.map b/lib/module/connectActionSheet.js.map new file mode 100644 index 0000000..db905a8 --- /dev/null +++ b/lib/module/connectActionSheet.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["connectActionSheet.tsx"],"names":["React","Consumer","hoistNonReactStatic","connectActionSheet","WrappedComponent","ConnectedActionSheet","props","showActionSheetWithOptions"],"mappings":"4JAAA,MAAO,GAAKA,CAAAA,KAAZ,KAAuB,OAAvB,CACA,OAASC,QAAT,KAAyB,WAAzB,CACA,MAAOC,CAAAA,mBAAP,KAAgC,yBAAhC,CAGA,cAAe,SAASC,CAAAA,kBAAT,CACbC,gBADa,CAEb,CACA,GAAMC,CAAAA,oBAAoB,CAAG,QAAvBA,CAAAA,oBAAuB,CAACC,KAAD,CAAqB,CAChD,MACE,qBAAC,QAAD,kDACG,cAAoC,IAAjCC,CAAAA,0BAAiC,MAAjCA,0BAAiC,CACnC,MACE,qBAAC,gBAAD,aAAsBD,KAAtB,EAA6B,0BAA0B,CAAEC,0BAAzD,kDADF,CAGD,CALH,CADF,CASD,CAVD,CAYA,MAAOL,CAAAA,mBAAmB,CAACG,oBAAD,CAAuBD,gBAAvB,CAA1B,CACD","sourcesContent":["import * as React from 'react';\nimport { Consumer } from './context';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport { ActionSheetProps } from './types';\n\nexport default function connectActionSheet(\n WrappedComponent: React.ComponentType\n) {\n const ConnectedActionSheet = (props: OwnProps) => {\n return (\n \n {({ showActionSheetWithOptions }) => {\n return (\n \n );\n }}\n \n );\n };\n\n return hoistNonReactStatic(ConnectedActionSheet, WrappedComponent);\n}\n"]} \ No newline at end of file diff --git a/lib/module/context.js b/lib/module/context.js new file mode 100644 index 0000000..986b3b2 --- /dev/null +++ b/lib/module/context.js @@ -0,0 +1,2 @@ +import*as React from'react';var context=React.createContext({showActionSheetWithOptions:function showActionSheetWithOptions(options,callback){}});export function useActionSheet(){return React.useContext(context);}var Provider=context.Provider,Consumer=context.Consumer;export{Provider,Consumer}; +//# sourceMappingURL=context.js.map \ No newline at end of file diff --git a/lib/module/context.js.map b/lib/module/context.js.map new file mode 100644 index 0000000..b52a5d1 --- /dev/null +++ b/lib/module/context.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["context.ts"],"names":["React","context","createContext","showActionSheetWithOptions","options","callback","useActionSheet","useContext","Provider","Consumer"],"mappings":"AAAA,MAAO,GAAKA,CAAAA,KAAZ,KAAuB,OAAvB,CAGA,GAAMC,CAAAA,OAAO,CAAGD,KAAK,CAACE,aAAN,CAAsC,CACpDC,0BAA0B,CAAE,oCAACC,OAAD,CAA8BC,QAA9B,CAAgE,CAAE,CAD1C,CAAtC,CAAhB,CAIA,MAAO,SAASC,CAAAA,cAAT,EAA0B,CAC/B,MAAON,CAAAA,KAAK,CAACO,UAAN,CAAiBN,OAAjB,CAAP,CACD,C,GAEOO,CAAAA,Q,CAAuBP,O,CAAvBO,Q,CAAUC,Q,CAAaR,O,CAAbQ,Q,CAElB,OAASD,QAAT,CAAmBC,QAAnB","sourcesContent":["import * as React from 'react';\nimport { ActionSheetOptions, ActionSheetProps } from './types';\n\nconst context = React.createContext({\n showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => {},\n});\n\nexport function useActionSheet() {\n return React.useContext(context);\n}\n\nconst { Provider, Consumer } = context;\n\nexport { Provider, Consumer };\n"]} \ No newline at end of file diff --git a/lib/module/index.js b/lib/module/index.js new file mode 100644 index 0000000..546f82a --- /dev/null +++ b/lib/module/index.js @@ -0,0 +1,2 @@ +export{default as ActionSheetProvider}from'./ActionSheetProvider';export{default as connectActionSheet}from'./connectActionSheet';export{useActionSheet}from'./context';export*from'./types'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/module/index.js.map b/lib/module/index.js.map new file mode 100644 index 0000000..d87822e --- /dev/null +++ b/lib/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":["default","ActionSheetProvider","connectActionSheet","useActionSheet"],"mappings":"AAAA,OAASA,OAAO,GAAIC,CAAAA,mBAApB,KAA+C,uBAA/C,CACA,OAASD,OAAO,GAAIE,CAAAA,kBAApB,KAA8C,sBAA9C,CACA,OAASC,cAAT,KAA+B,WAA/B,CACA,WAAc,SAAd","sourcesContent":["export { default as ActionSheetProvider } from './ActionSheetProvider';\nexport { default as connectActionSheet } from './connectActionSheet';\nexport { useActionSheet } from './context';\nexport * from './types';\n"]} \ No newline at end of file diff --git a/lib/module/types.js b/lib/module/types.js new file mode 100644 index 0000000..63b2c4c --- /dev/null +++ b/lib/module/types.js @@ -0,0 +1,2 @@ + +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/lib/module/types.js.map b/lib/module/types.js.map new file mode 100644 index 0000000..9ffd4b2 --- /dev/null +++ b/lib/module/types.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]} \ No newline at end of file diff --git a/lib/typescript/ActionSheet/ActionGroup.d.ts b/lib/typescript/ActionSheet/ActionGroup.d.ts new file mode 100644 index 0000000..d4bb8db --- /dev/null +++ b/lib/typescript/ActionSheet/ActionGroup.d.ts @@ -0,0 +1,23 @@ +import * as React from 'react'; +import { ActionSheetOptions } from '../types'; +declare type Props = ActionSheetOptions & { + tintIcons: boolean | null; + onSelect: (i: number) => boolean; + startIndex: number; + length: number; +}; +export default class ActionGroup extends React.Component { + static defaultProps: { + title: null; + message: null; + showSeparators: boolean; + tintIcons: boolean; + textStyle: {}; + }; + render(): JSX.Element; + _renderRowSeparator: (key: string | number) => JSX.Element; + _renderTitleContent: () => JSX.Element | null; + _renderIconElement: (iconSource: React.ReactNode | null, color: string) => JSX.Element | null; + _renderOptionViews: () => React.ReactNode[]; +} +export {}; diff --git a/lib/typescript/ActionSheet/TouchableNativeFeedbackSafe.d.ts b/lib/typescript/ActionSheet/TouchableNativeFeedbackSafe.d.ts new file mode 100644 index 0000000..5c63617 --- /dev/null +++ b/lib/typescript/ActionSheet/TouchableNativeFeedbackSafe.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { TouchableNativeFeedback, TouchableWithoutFeedbackProps } from 'react-native'; +declare type Props = TouchableWithoutFeedbackProps & { + pressInDelay: number; + background: any; +}; +export default class TouchableNativeFeedbackSafe extends React.Component { + static SelectableBackground: (() => {}) | typeof TouchableNativeFeedback.SelectableBackground; + static SelectableBackgroundBorderless: (() => {}) | typeof TouchableNativeFeedback.SelectableBackgroundBorderless; + static Ripple: ((color: string, borderless?: boolean | undefined) => {}) | typeof TouchableNativeFeedback.Ripple; + render(): JSX.Element; +} +export {}; diff --git a/lib/typescript/ActionSheet/___index.ios.d.ts b/lib/typescript/ActionSheet/___index.ios.d.ts new file mode 100644 index 0000000..033a9f8 --- /dev/null +++ b/lib/typescript/ActionSheet/___index.ios.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { ViewProps } from 'react-native'; +import { ActionSheetIOSOptions } from '../types'; +interface Props { + readonly children: React.ReactNode; + readonly pointerEvents?: ViewProps['pointerEvents']; +} +declare type onSelect = (buttonIndex: number) => void; +export default class ActionSheet extends React.Component { + render(): JSX.Element; + showActionSheetWithOptions(dataOptions: ActionSheetIOSOptions, onSelect: onSelect): void; +} +export {}; diff --git a/lib/typescript/ActionSheet/index.d.ts b/lib/typescript/ActionSheet/index.d.ts new file mode 100644 index 0000000..11198ed --- /dev/null +++ b/lib/typescript/ActionSheet/index.d.ts @@ -0,0 +1,31 @@ +import * as React from 'react'; +import { ViewProps } from 'react-native'; +import { ActionSheetOptions } from '../types'; +interface State { + isVisible: boolean; + isAnimating: boolean; + options: ActionSheetOptions | null; + onSelect: ((i: number) => void) | null; + overlayOpacity: any; + sheetOpacity: any; +} +interface Props { + readonly useNativeDriver: boolean | undefined; + readonly pointerEvents?: ViewProps['pointerEvents']; +} +export default class ActionSheet extends React.Component { + static defaultProps: { + useNativeDriver: boolean; + }; + _actionSheetHeight: number; + state: State; + _deferNextShow?: () => void; + _setActionSheetHeight: ({ nativeEvent }: any) => any; + render(): JSX.Element; + _renderSheet(): JSX.Element | null; + showActionSheetWithOptions: (options: ActionSheetOptions, onSelect: (i: number) => void) => void; + _selectCancelButton: () => boolean | undefined; + _onSelect: (index: number) => boolean; + _animateOut: () => boolean; +} +export {}; diff --git a/lib/typescript/ActionSheetProvider.d.ts b/lib/typescript/ActionSheetProvider.d.ts new file mode 100644 index 0000000..6d80186 --- /dev/null +++ b/lib/typescript/ActionSheetProvider.d.ts @@ -0,0 +1,15 @@ +import * as React from 'react'; +import ActionSheet from './ActionSheet'; +import { ActionSheetOptions } from './types'; +interface Props { + children: React.ReactNode; +} +export default class ActionSheetProvider extends React.Component { + _actionSheetRef: React.RefObject; + constructor(props: Props); + getContext: () => { + showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void; + }; + render(): JSX.Element; +} +export {}; diff --git a/lib/typescript/connectActionSheet.d.ts b/lib/typescript/connectActionSheet.d.ts new file mode 100644 index 0000000..59fe5e5 --- /dev/null +++ b/lib/typescript/connectActionSheet.d.ts @@ -0,0 +1,4 @@ +import * as React from 'react'; +import hoistNonReactStatic from 'hoist-non-react-statics'; +import { ActionSheetProps } from './types'; +export default function connectActionSheet(WrappedComponent: React.ComponentType): ((props: OwnProps) => JSX.Element) & hoistNonReactStatic.NonReactStatics, {}>; diff --git a/lib/typescript/context.d.ts b/lib/typescript/context.d.ts new file mode 100644 index 0000000..c205f85 --- /dev/null +++ b/lib/typescript/context.d.ts @@ -0,0 +1,5 @@ +import * as React from 'react'; +import { ActionSheetProps } from './types'; +export declare function useActionSheet(): ActionSheetProps; +declare const Provider: React.Provider, Consumer: React.Consumer; +export { Provider, Consumer }; diff --git a/lib/typescript/index.d.ts b/lib/typescript/index.d.ts new file mode 100644 index 0000000..d9b1970 --- /dev/null +++ b/lib/typescript/index.d.ts @@ -0,0 +1,4 @@ +export { default as ActionSheetProvider } from './ActionSheetProvider'; +export { default as connectActionSheet } from './connectActionSheet'; +export { useActionSheet } from './context'; +export * from './types'; diff --git a/lib/typescript/types.d.ts b/lib/typescript/types.d.ts new file mode 100644 index 0000000..9c8b304 --- /dev/null +++ b/lib/typescript/types.d.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { TextStyle, ViewStyle } from 'react-native'; +export interface ActionSheetProps { + showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void; +} +export interface ActionSheetIOSOptions { + options: string[]; + title?: string; + message?: string; + tintColor?: string; + cancelButtonIndex?: number; + destructiveButtonIndex?: number; + anchor?: number; +} +export interface ActionSheetOptions extends ActionSheetIOSOptions { + icons?: React.ReactNode[]; + tintIcons?: boolean; + textStyle?: TextStyle; + titleTextStyle?: TextStyle; + messageTextStyle?: TextStyle; + autoFocus?: boolean; + showSeparators?: boolean; + containerStyle?: ViewStyle; + separatorStyle?: ViewStyle; + useModal?: boolean; + destructiveColor?: string; +} diff --git a/package.json b/package.json index 5bb1858..ef83edf 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,6 @@ "lib" ], "scripts": { - "prepare": "bob build", - "build": "bob build", "type-check": "tsc --noEmit", "lint": "eslint . --ext .ts,.tsx --fix", "fmt": "prettier --write \"{src,example}/**/*.{ts,tsx}\"", @@ -73,7 +71,8 @@ "*.{js,ts,tsx}": [ "yarn lint", "yarn fmt", - "git add" + "yarn bob build", + "git add ." ] }, "dependencies": { diff --git a/src/ActionSheet/TouchableNativeFeedbackSafe.tsx b/src/ActionSheet/TouchableNativeFeedbackSafe.tsx index 38cf19a..79a3dee 100644 --- a/src/ActionSheet/TouchableNativeFeedbackSafe.tsx +++ b/src/ActionSheet/TouchableNativeFeedbackSafe.tsx @@ -20,6 +20,7 @@ class CustomTouchableOpacity extends React.Component { const TouchableComponent = Platform.select({ web: CustomTouchableOpacity, + // Override default iOS behavior. ios: CustomTouchableOpacity, default: Platform.Version <= 20 ? CustomTouchableOpacity : TouchableNativeFeedback, }); From ab184a2dd47f62b8251733c95981b928951b37b2 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Thu, 28 Apr 2022 14:00:06 -0500 Subject: [PATCH 04/11] Allow configuring button style. --- README.md | 4 ++++ lib/commonjs/ActionSheet/ActionGroup.js | 2 +- lib/commonjs/ActionSheet/ActionGroup.js.map | 2 +- lib/commonjs/ActionSheet/index.js | 2 +- lib/commonjs/ActionSheet/index.js.map | 2 +- lib/module/ActionSheet/ActionGroup.js | 2 +- lib/module/ActionSheet/ActionGroup.js.map | 2 +- lib/module/ActionSheet/index.js | 2 +- lib/module/ActionSheet/index.js.map | 2 +- lib/typescript/ActionSheet/ActionGroup.d.ts | 3 ++- lib/typescript/context.d.ts | 2 +- lib/typescript/types.d.ts | 1 + src/ActionSheet/ActionGroup.tsx | 4 +++- src/ActionSheet/index.tsx | 2 ++ src/types.ts | 1 + 15 files changed, 22 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 383599e..9aa35dc 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ The below props allow modification of the Android ActionSheet. They have no effe | autoFocus | boolean | No | false | | showSeparators | boolean | No | false | | containerStyle | ViewStyle | No | | +| buttonStyle | ViewStyle | No | | | separatorStyle | ViewStyle | No | | | useModal | boolean | No | false | | destructiveColor | string | No | #d32f2f | @@ -151,6 +152,9 @@ Show separators between items. On iOS, separators always show so this prop has n #### `containerStyle`: (optional) Apply any view style props to the container rather than use the default look (e.g. dark mode). +#### `buttonStyle`: (optional) +Apply any view style props to the button rather than use the default look (e.g. dark mode). + #### `separatorStyle`: (optional) Modify the look of the separators rather than use the default look. diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js index 0a9a668..294d9db 100644 --- a/lib/commonjs/ActionSheet/ActionGroup.js +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:69}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:81}},React.createElement(_reactNative.View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:82}},!!title&&React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:83}},title),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:84}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:99}});}else{return React.createElement(_reactNative.View,{style:styles.icon,__source:{fileName:_jsxFileName,lineNumber:101}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:styles.button,accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:133}},_this._renderIconElement(iconSource,color),React.createElement(_reactNative.Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:143}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={styles.button}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","Platform","OS","UIManager","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","AccessibilityInfo","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","paddingBottom","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","TouchableNativeFeedbackSafe","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","React","Component","defaultProps","StyleSheet","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","padding","paddingTop"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js b/lib/commonjs/ActionSheet/index.js index 54fd43f..9a0c57e 100644 --- a/lib/commonjs/ActionSheet/index.js +++ b/lib/commonjs/ActionSheet/index.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,separatorStyle=options.separatorStyle;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:123}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:140}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:141}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:141}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:142}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js.map b/lib/commonjs/ActionSheet/index.js.map index 0b430b6..d201541 100644 --- a/lib/commonjs/ActionSheet/index.js.map +++ b/lib/commonjs/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js index 726c12b..d1c4101 100644 --- a/lib/module/ActionSheet/ActionGroup.js +++ b/lib/module/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:69}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:81}},React.createElement(View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:82}},!!title&&React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:83}},title),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:84}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:99}});}else{return React.createElement(View,{style:styles.icon,__source:{fileName:_jsxFileName,lineNumber:101}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:styles.button,accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:133}},_this._renderIconElement(iconSource,color),React.createElement(Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:143}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={styles.button}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["React","StyleSheet","Text","Image","View","ScrollView","findNodeHandle","AccessibilityInfo","Platform","UIManager","TouchableNativeFeedbackSafe","BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","OS","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","paddingBottom","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","Component","defaultProps","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","padding","paddingTop"],"mappings":"+bAAA,MAAO,GAAKA,CAAAA,KAAZ,KAAuB,OAAvB,CACA,OACEC,UADF,CAEEC,IAFF,CAGEC,KAHF,CAIEC,IAJF,CAKEC,UALF,CAMEC,cANF,CAOEC,iBAPF,CAQEC,QARF,CASEC,SATF,KAUO,cAVP,CAWA,MAAOC,CAAAA,2BAAP,KAAwC,+BAAxC,CAUA,GAAMC,CAAAA,sBAAsB,CAAG,WAA/B,CACA,GAAMC,CAAAA,sBAAsB,CAAG,WAA/B,CACA,GAAMC,CAAAA,iBAAiB,CAAG,SAA1B,CAMA,GAAMC,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,CAACC,GAAD,CAAiC,CACzD,GAAIA,GAAJ,CAAS,CACP,GAAMC,CAAAA,QAAQ,CAAGV,cAAc,CAACS,GAAD,CAA/B,CACA,GAAIC,QAAJ,CAAc,CACZ,GAAIR,QAAQ,CAACS,EAAT,GAAgB,SAApB,CAA+B,CAE7BR,SAAS,CAACS,sBAAV,CACEF,QADF,CAGEP,SAAS,CAACU,uBAAV,CAAkCC,eAHpC,EAKD,CAPD,IAOO,CACLb,iBAAiB,CAACc,qBAAlB,CAAwCL,QAAxC,EACD,CACF,CACF,CACF,CAhBD,C,GAkBqBM,CAAAA,W,kZAmBnBC,mB,CAAsB,SAACC,GAAD,CAA0B,CAC9C,MACE,qBAAC,IAAD,EAAM,GAAG,cAAeA,GAAxB,CAA+B,KAAK,CAAE,CAACC,MAAM,CAACC,YAAR,CAAsB,MAAKC,KAAL,CAAWC,cAAjC,CAAtC,iDADF,CAGD,C,OAEDC,mB,CAAsB,UAAM,iBACmD,MAAKF,KADxD,CAClBG,KADkB,aAClBA,KADkB,CACXC,cADW,aACXA,cADW,CACKC,OADL,aACKA,OADL,CACcC,gBADd,aACcA,gBADd,CACgCC,cADhC,aACgCA,cADhC,CAG1B,GAAI,CAACJ,KAAD,EAAU,CAACE,OAAf,CAAwB,CACtB,MAAO,KAAP,CACD,CAED,MACE,qBAAC,IAAD,kDACE,oBAAC,IAAD,EAAM,KAAK,CAAE,CAACP,MAAM,CAACU,cAAR,CAAwB,CAAEC,aAAa,CAAEF,cAAc,CAAG,EAAH,CAAQ,EAAvC,CAAxB,CAAb,iDACG,CAAC,CAACJ,KAAF,EAAW,oBAAC,IAAD,EAAM,KAAK,CAAE,CAACL,MAAM,CAACK,KAAR,CAAeC,cAAf,CAAb,iDAA8CD,KAA9C,CADd,CAEG,CAAC,CAACE,OAAF,EAAa,oBAAC,IAAD,EAAM,KAAK,CAAE,CAACP,MAAM,CAACO,OAAR,CAAiBC,gBAAjB,CAAb,iDAAkDD,OAAlD,CAFhB,CADF,CAKG,CAAC,CAACE,cAAF,EAAoB,MAAKX,mBAAL,CAAyB,OAAzB,CALvB,CADF,CASD,C,OAEDc,kB,CAAqB,SAACC,UAAD,CAAqCC,KAArC,CAAuD,IAClEC,CAAAA,SADkE,CACpD,MAAKb,KAD+C,CAClEa,SADkE,CAE1E,GAAI,CAACF,UAAL,CAAiB,CACf,MAAO,KAAP,CACD,CAED,GAAI,MAAOA,CAAAA,UAAP,GAAsB,QAA1B,CAAoC,CAClC,GAAMG,CAAAA,SAAS,CAAG,CAAChB,MAAM,CAACiB,IAAR,CAAc,CAAEC,SAAS,CAAEH,SAAS,CAAGD,KAAH,CAAWK,SAAjC,CAAd,CAAlB,CACA,MAAO,qBAAC,KAAD,EAAO,YAAY,CAAE,CAArB,CAAwB,MAAM,CAAEN,UAAhC,CAA4C,UAAU,CAAC,SAAvD,CAAiE,KAAK,CAAEG,SAAxE,kDAAP,CACD,CAHD,IAGO,CACL,MAAO,qBAAC,IAAD,EAAM,KAAK,CAAEhB,MAAM,CAACiB,IAApB,kDAA2BJ,UAA3B,CAAP,CACD,CACF,C,OAEDO,kB,CAAqB,UAAM,kBAcrB,MAAKlB,KAdgB,CAEvBmB,OAFuB,cAEvBA,OAFuB,CAGvBC,KAHuB,cAGvBA,KAHuB,CAIvBC,sBAJuB,cAIvBA,sBAJuB,oCAKvBC,gBALuB,CAKvBA,gBALuB,gCAKJpC,iBALI,uBAMvBqC,QANuB,cAMvBA,QANuB,CAOvBC,UAPuB,cAOvBA,UAPuB,CAQvBC,MARuB,cAQvBA,MARuB,CASvBC,WATuB,cASvBA,WATuB,CAUvBC,SAVuB,cAUvBA,SAVuB,CAWvBX,SAXuB,cAWvBA,SAXuB,CAYvBY,SAZuB,cAYvBA,SAZuB,CAavBrB,cAbuB,cAavBA,cAbuB,CAezB,GAAMsB,CAAAA,WAA8B,CAAG,EAAvC,CACA,GAAMC,CAAAA,wBAAwB,CAAG/C,2BAA2B,CAACgD,MAA5B,CAC/B,wBAD+B,CAE/B,KAF+B,CAAjC,CAhByB,yBAqBhBC,EArBgB,EAsBvB,GAAMC,CAAAA,YAAY,CAAGjB,SAAS,CAC1BA,SAD0B,CAE1B,CAACW,SAAS,EAAI,EAAd,EAAkBf,KAAlB,EAA2B3B,sBAF/B,CAGA,GAAM2B,CAAAA,KAAK,CAAGoB,EAAC,GAAKX,sBAAN,CAA+BC,gBAA/B,CAAkDW,YAAhE,CACA,GAAMtB,CAAAA,UAAU,CAAGS,KAAK,EAAI,IAAT,CAAgBA,KAAK,CAACY,EAAD,CAArB,CAA2B,IAA9C,CAEAH,WAAW,CAACK,IAAZ,CACE,oBAAC,2BAAD,EACE,GAAG,CAAEN,SAAS,EAAII,EAAC,GAAK,CAAnB,CAAuB7C,iBAAvB,CAA2C8B,SADlD,CAEE,GAAG,CAAEe,EAFP,CAGE,YAAY,CAAE,CAHhB,CAIE,UAAU,CAAEF,wBAJd,CAKE,OAAO,CAAE,yBAAMP,CAAAA,QAAQ,CAACS,EAAD,CAAd,EALX,CAME,KAAK,CAAE,CAAClC,MAAM,CAACqC,MAAR,CAAgBT,WAAhB,CANT,CAOE,iBAAiB,CAAC,QAPpB,CAQE,kBAAkB,CAAEP,OAAO,CAACa,EAAD,CAR7B,kDASG,MAAKtB,kBAAL,CAAwBC,UAAxB,CAAoCC,KAApC,CATH,CAUE,oBAAC,IAAD,EAAM,KAAK,CAAE,CAACd,MAAM,CAACsC,IAAR,CAAcT,SAAd,CAAyB,CAAEf,KAAK,CAALA,KAAF,CAAzB,CAAb,kDAAmDO,OAAO,CAACa,EAAD,CAA1D,CAVF,CADF,EAeA,GAAIzB,cAAc,EAAIyB,EAAC,CAAGR,UAAU,CAAGC,MAAb,CAAsB,CAAhD,CAAmD,CACjDI,WAAW,CAACK,IAAZ,CAAiB,MAAKtC,mBAAL,CAAyBoC,EAAzB,CAAjB,EACD,CA7CsB,EAqBzB,IAAK,GAAIA,CAAAA,EAAC,CAAGR,UAAb,CAAyBQ,EAAC,CAAGR,UAAU,CAAGC,MAA1C,CAAkDO,EAAC,EAAnD,CAAuD,OAA9CA,EAA8C,EAyBtD,CAED,MAAOH,CAAAA,WAAP,CACD,C,8EAhGQ,CACP,MACE,qBAAC,IAAD,EAAM,KAAK,CAAE,CAAC/B,MAAM,CAACuC,cAAR,CAAwB,KAAKrC,KAAL,CAAWsC,cAAnC,CAAb,iDACG,KAAKpC,mBAAL,EADH,CAEE,oBAAC,UAAD,kDAAa,KAAKgB,kBAAL,EAAb,CAFF,CADF,CAMD,C,yBAjBsC7C,KAAK,CAACkE,S,EAA1B5C,W,CACZ6C,Y,CAAe,CACpBrC,KAAK,CAAE,IADa,CAEpBE,OAAO,CAAE,IAFW,CAGpBE,cAAc,CAAE,KAHI,CAIpBM,SAAS,CAAE,IAJS,CAKpBc,SAAS,CAAE,EALS,CAMpBD,WAAW,CAAE,EANO,C,QADH/B,W,aA6GrB,GAAMG,CAAAA,MAAM,CAAGxB,UAAU,CAACmE,MAAX,CAAkB,CAC/BN,MAAM,CAAE,CACNO,cAAc,CAAE,YADV,CAENC,UAAU,CAAE,QAFN,CAGNC,aAAa,CAAE,KAHT,CAINC,MAAM,CAAE,EAJF,CAKNC,iBAAiB,CAAE,EALb,CADuB,CAQ/BT,cAAc,CAAE,CACdU,eAAe,CAAE,SADH,CAEdC,QAAQ,CAAE,QAFI,CARe,CAY/BjC,IAAI,CAAE,CACJkC,KAAK,CAAE,EADH,CAEJJ,MAAM,CAAE,EAFJ,CAGJK,WAAW,CAAE,EAHT,CAZyB,CAiB/B7C,OAAO,CAAE,CACP8C,SAAS,CAAE,EADJ,CAEPC,QAAQ,CAAE,EAFH,CAGPxC,KAAK,CAAE5B,sBAHA,CAIPqE,iBAAiB,CAAE,QAJZ,CAjBsB,CAuB/BtD,YAAY,CAAE,CACZgD,eAAe,CAAE,SADL,CAEZF,MAAM,CAAE,CAFI,CAGZI,KAAK,CAAE,MAHK,CAvBiB,CA4B/Bb,IAAI,CAAE,CACJgB,QAAQ,CAAE,EADN,CAEJxC,KAAK,CAAE3B,sBAFH,CAGJoE,iBAAiB,CAAE,QAHf,CA5ByB,CAiC/BlD,KAAK,CAAE,CACLiD,QAAQ,CAAE,EADL,CAELxC,KAAK,CAAE5B,sBAFF,CAGLqE,iBAAiB,CAAE,QAHd,CAjCwB,CAsC/B7C,cAAc,CAAE,CACdmC,UAAU,CAAE,YADE,CAEdW,OAAO,CAAE,EAFK,CAGdC,UAAU,CAAE,EAHE,CAtCe,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js b/lib/module/ActionSheet/index.js index e0e0c10..a7eafba 100644 --- a/lib/module/ActionSheet/index.js +++ b/lib/module/ActionSheet/index.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,separatorStyle=options.separatorStyle;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:123}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:140}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:141}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:141}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:142}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js.map b/lib/module/ActionSheet/index.js.map index c488006..a3956bb 100644 --- a/lib/module/ActionSheet/index.js.map +++ b/lib/module/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/typescript/ActionSheet/ActionGroup.d.ts b/lib/typescript/ActionSheet/ActionGroup.d.ts index d4bb8db..c1ca5e7 100644 --- a/lib/typescript/ActionSheet/ActionGroup.d.ts +++ b/lib/typescript/ActionSheet/ActionGroup.d.ts @@ -13,11 +13,12 @@ export default class ActionGroup extends React.Component { showSeparators: boolean; tintIcons: boolean; textStyle: {}; + buttonStyle: {}; }; render(): JSX.Element; _renderRowSeparator: (key: string | number) => JSX.Element; _renderTitleContent: () => JSX.Element | null; - _renderIconElement: (iconSource: React.ReactNode | null, color: string) => JSX.Element | null; + _renderIconElement: (iconSource: React.ReactNode, color: string) => JSX.Element | null; _renderOptionViews: () => React.ReactNode[]; } export {}; diff --git a/lib/typescript/context.d.ts b/lib/typescript/context.d.ts index c205f85..b7240a3 100644 --- a/lib/typescript/context.d.ts +++ b/lib/typescript/context.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; import { ActionSheetProps } from './types'; export declare function useActionSheet(): ActionSheetProps; -declare const Provider: React.Provider, Consumer: React.Consumer; +declare const Provider: React.ProviderExoticComponent>, Consumer: React.ExoticComponent>; export { Provider, Consumer }; diff --git a/lib/typescript/types.d.ts b/lib/typescript/types.d.ts index 9c8b304..c244a26 100644 --- a/lib/typescript/types.d.ts +++ b/lib/typescript/types.d.ts @@ -21,6 +21,7 @@ export interface ActionSheetOptions extends ActionSheetIOSOptions { autoFocus?: boolean; showSeparators?: boolean; containerStyle?: ViewStyle; + buttonStyle?: ViewStyle; separatorStyle?: ViewStyle; useModal?: boolean; destructiveColor?: string; diff --git a/src/ActionSheet/ActionGroup.tsx b/src/ActionSheet/ActionGroup.tsx index d6d2101..7bb989b 100644 --- a/src/ActionSheet/ActionGroup.tsx +++ b/src/ActionSheet/ActionGroup.tsx @@ -53,6 +53,7 @@ export default class ActionGroup extends React.Component { showSeparators: false, tintIcons: true, textStyle: {}, + buttonStyle: {}, }; render() { @@ -111,6 +112,7 @@ export default class ActionGroup extends React.Component { onSelect, startIndex, length, + buttonStyle, textStyle, tintColor, autoFocus, @@ -136,7 +138,7 @@ export default class ActionGroup extends React.Component { pressInDelay={0} background={nativeFeedbackBackground} onPress={() => onSelect(i)} - style={styles.button} + style={[styles.button, buttonStyle]} accessibilityRole="button" accessibilityLabel={options[i]}> {this._renderIconElement(iconSource, color)} diff --git a/src/ActionSheet/index.tsx b/src/ActionSheet/index.tsx index 8a5a397..ec1e32b 100644 --- a/src/ActionSheet/index.tsx +++ b/src/ActionSheet/index.tsx @@ -117,6 +117,7 @@ export default class ActionSheet extends React.Component { autoFocus, showSeparators, containerStyle, + buttonStyle, separatorStyle, } = options; return ( @@ -156,6 +157,7 @@ export default class ActionSheet extends React.Component { autoFocus={autoFocus} showSeparators={showSeparators} containerStyle={containerStyle} + buttonStyle={buttonStyle} separatorStyle={separatorStyle} /> diff --git a/src/types.ts b/src/types.ts index c8141af..3552a6a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -26,6 +26,7 @@ export interface ActionSheetOptions extends ActionSheetIOSOptions { autoFocus?: boolean; showSeparators?: boolean; containerStyle?: ViewStyle; + buttonStyle?: ViewStyle; separatorStyle?: ViewStyle; useModal?: boolean; destructiveColor?: string; From f961f61cc071691e1802c6f6020d2824f5f0934c Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Thu, 28 Apr 2022 14:45:37 -0500 Subject: [PATCH 05/11] Allow configuring iconStyle. --- README.md | 1 + lib/commonjs/ActionSheet/ActionGroup.js | 2 +- lib/commonjs/ActionSheet/ActionGroup.js.map | 2 +- lib/commonjs/ActionSheet/index.js | 2 +- lib/commonjs/ActionSheet/index.js.map | 2 +- lib/module/ActionSheet/ActionGroup.js | 2 +- lib/module/ActionSheet/ActionGroup.js.map | 2 +- lib/module/ActionSheet/index.js | 2 +- lib/module/ActionSheet/index.js.map | 2 +- lib/typescript/ActionSheet/ActionGroup.d.ts | 1 + lib/typescript/types.d.ts | 3 ++- src/ActionSheet/ActionGroup.tsx | 9 +++++++-- src/ActionSheet/index.tsx | 2 ++ src/types.ts | 3 ++- 14 files changed, 23 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9aa35dc..f626939 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,7 @@ The below props allow modification of the Android ActionSheet. They have no effe | -----------------| ----------------------------------| -------- | ------- | | icons | array of required images or icons | No | | | tintIcons | boolean | No | true | +| iconStyle | ImageStyle | No | | | textStyle | TextStyle | No | | | titleTextStyle | TextStyle | No | | | messageTextStyle | TextStyle | No | | diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js index 294d9db..52bbf9b 100644 --- a/lib/commonjs/ActionSheet/ActionGroup.js +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:70}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:82}},React.createElement(_reactNative.View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:83}},!!title&&React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:84}},title),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:100}});}else{return React.createElement(_reactNative.View,{style:styles.icon,__source:{fileName:_jsxFileName,lineNumber:102}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:135}},_this._renderIconElement(iconSource,color),React.createElement(_reactNative.Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:145}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","Platform","OS","UIManager","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","AccessibilityInfo","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","paddingBottom","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","TouchableNativeFeedbackSafe","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","React","Component","defaultProps","StyleSheet","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","padding","paddingTop"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js b/lib/commonjs/ActionSheet/index.js index 9a0c57e..9781e02 100644 --- a/lib/commonjs/ActionSheet/index.js +++ b/lib/commonjs/ActionSheet/index.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:141}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:142}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:142}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:143}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js.map b/lib/commonjs/ActionSheet/index.js.map index d201541..723a55c 100644 --- a/lib/commonjs/ActionSheet/index.js.map +++ b/lib/commonjs/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js index d1c4101..f9d7bed 100644 --- a/lib/module/ActionSheet/ActionGroup.js +++ b/lib/module/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:70}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:82}},React.createElement(View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:83}},!!title&&React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:84}},title),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:100}});}else{return React.createElement(View,{style:styles.icon,__source:{fileName:_jsxFileName,lineNumber:102}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:135}},_this._renderIconElement(iconSource,color),React.createElement(Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:145}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["React","StyleSheet","Text","Image","View","ScrollView","findNodeHandle","AccessibilityInfo","Platform","UIManager","TouchableNativeFeedbackSafe","BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","OS","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","paddingBottom","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","Component","defaultProps","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","padding","paddingTop"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js b/lib/module/ActionSheet/index.js index a7eafba..fd7876f 100644 --- a/lib/module/ActionSheet/index.js +++ b/lib/module/ActionSheet/index.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:124}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:141}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:142}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:142}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:143}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js.map b/lib/module/ActionSheet/index.js.map index a3956bb..8ee0646 100644 --- a/lib/module/ActionSheet/index.js.map +++ b/lib/module/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/typescript/ActionSheet/ActionGroup.d.ts b/lib/typescript/ActionSheet/ActionGroup.d.ts index c1ca5e7..0ce25c4 100644 --- a/lib/typescript/ActionSheet/ActionGroup.d.ts +++ b/lib/typescript/ActionSheet/ActionGroup.d.ts @@ -12,6 +12,7 @@ export default class ActionGroup extends React.Component { message: null; showSeparators: boolean; tintIcons: boolean; + iconStyle: {}; textStyle: {}; buttonStyle: {}; }; diff --git a/lib/typescript/types.d.ts b/lib/typescript/types.d.ts index c244a26..d82f91d 100644 --- a/lib/typescript/types.d.ts +++ b/lib/typescript/types.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { TextStyle, ViewStyle } from 'react-native'; +import { ImageStyle, TextStyle, ViewStyle } from 'react-native'; export interface ActionSheetProps { showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void; } @@ -15,6 +15,7 @@ export interface ActionSheetIOSOptions { export interface ActionSheetOptions extends ActionSheetIOSOptions { icons?: React.ReactNode[]; tintIcons?: boolean; + iconStyle?: ImageStyle; textStyle?: TextStyle; titleTextStyle?: TextStyle; messageTextStyle?: TextStyle; diff --git a/src/ActionSheet/ActionGroup.tsx b/src/ActionSheet/ActionGroup.tsx index 7bb989b..b8988dc 100644 --- a/src/ActionSheet/ActionGroup.tsx +++ b/src/ActionSheet/ActionGroup.tsx @@ -52,6 +52,7 @@ export default class ActionGroup extends React.Component { message: null, showSeparators: false, tintIcons: true, + iconStyle: {}, textStyle: {}, buttonStyle: {}, }; @@ -96,10 +97,14 @@ export default class ActionGroup extends React.Component { } if (typeof iconSource === 'number') { - const iconStyle = [styles.icon, { tintColor: tintIcons ? color : undefined }]; + const iconStyle = [ + styles.icon, + this.props.iconStyle, + { tintColor: tintIcons ? color : undefined }, + ]; return ; } else { - return {iconSource}; + return {iconSource}; } }; diff --git a/src/ActionSheet/index.tsx b/src/ActionSheet/index.tsx index ec1e32b..4f382fd 100644 --- a/src/ActionSheet/index.tsx +++ b/src/ActionSheet/index.tsx @@ -106,6 +106,7 @@ export default class ActionSheet extends React.Component { options: optionsArray, icons, tintIcons, + iconStyle, destructiveButtonIndex, destructiveColor, textStyle, @@ -143,6 +144,7 @@ export default class ActionSheet extends React.Component { options={optionsArray} icons={icons} tintIcons={tintIcons === undefined ? true : tintIcons} + iconStyle={iconStyle} destructiveButtonIndex={destructiveButtonIndex} destructiveColor={destructiveColor} onSelect={this._onSelect} diff --git a/src/types.ts b/src/types.ts index 3552a6a..2692422 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { TextStyle, ViewStyle } from 'react-native'; +import { ImageStyle, TextStyle, ViewStyle } from 'react-native'; export interface ActionSheetProps { showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void; @@ -20,6 +20,7 @@ export interface ActionSheetIOSOptions { export interface ActionSheetOptions extends ActionSheetIOSOptions { icons?: React.ReactNode[]; tintIcons?: boolean; + iconStyle?: ImageStyle; textStyle?: TextStyle; titleTextStyle?: TextStyle; messageTextStyle?: TextStyle; From c7ea37eb72653de9cca2a45c77bb86a1a40b4c90 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Thu, 28 Apr 2022 14:51:41 -0500 Subject: [PATCH 06/11] Reduce title padding bottom. --- lib/commonjs/ActionSheet/ActionGroup.js | 2 +- lib/commonjs/ActionSheet/ActionGroup.js.map | 2 +- lib/module/ActionSheet/ActionGroup.js | 2 +- lib/module/ActionSheet/ActionGroup.js.map | 2 +- src/ActionSheet/ActionGroup.tsx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js index 52bbf9b..c3164ca 100644 --- a/lib/commonjs/ActionSheet/ActionGroup.js +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:71}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:83}},React.createElement(_reactNative.View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:84}},!!title&&React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},title),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:86}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:105}});}else{return React.createElement(_reactNative.View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:107}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:140}},_this._renderIconElement(iconSource,color),React.createElement(_reactNative.Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:150}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","Platform","OS","UIManager","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","AccessibilityInfo","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","paddingBottom","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","TouchableNativeFeedbackSafe","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","React","Component","defaultProps","StyleSheet","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","padding","paddingTop"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js index f9d7bed..1de817a 100644 --- a/lib/module/ActionSheet/ActionGroup.js +++ b/lib/module/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:71}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:83}},React.createElement(View,{style:[styles.titleContainer,{paddingBottom:showSeparators?24:16}],__source:{fileName:_jsxFileName,lineNumber:84}},!!title&&React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},title),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:86}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:105}});}else{return React.createElement(View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:107}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:140}},_this._renderIconElement(iconSource,color),React.createElement(Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:150}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["React","StyleSheet","Text","Image","View","ScrollView","findNodeHandle","AccessibilityInfo","Platform","UIManager","TouchableNativeFeedbackSafe","BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","OS","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","paddingBottom","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","Component","defaultProps","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","padding","paddingTop"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file diff --git a/src/ActionSheet/ActionGroup.tsx b/src/ActionSheet/ActionGroup.tsx index b8988dc..e5a7cb8 100644 --- a/src/ActionSheet/ActionGroup.tsx +++ b/src/ActionSheet/ActionGroup.tsx @@ -81,7 +81,7 @@ export default class ActionGroup extends React.Component { return ( - + {!!title && {title}} {!!message && {message}} From b97208ef67e0c7b62029a572540c354f539b5597 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Thu, 28 Apr 2022 14:54:21 -0500 Subject: [PATCH 07/11] Tweak title container style. --- lib/commonjs/ActionSheet/ActionGroup.js | 2 +- lib/commonjs/ActionSheet/ActionGroup.js.map | 2 +- lib/module/ActionSheet/ActionGroup.js | 2 +- lib/module/ActionSheet/ActionGroup.js.map | 2 +- src/ActionSheet/ActionGroup.tsx | 5 ++--- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js index c3164ca..bafa54e 100644 --- a/lib/commonjs/ActionSheet/ActionGroup.js +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:71}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:83}},React.createElement(_reactNative.View,{style:[styles.titleContainer,{paddingBottom:10}],__source:{fileName:_jsxFileName,lineNumber:84}},!!title&&React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},title),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:86}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:105}});}else{return React.createElement(_reactNative.View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:107}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:140}},_this._renderIconElement(iconSource,color),React.createElement(_reactNative.Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:150}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","Platform","OS","UIManager","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","AccessibilityInfo","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","TouchableNativeFeedbackSafe","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","React","Component","defaultProps","StyleSheet","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","paddingBottom"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js index 1de817a..50fd5e1 100644 --- a/lib/module/ActionSheet/ActionGroup.js +++ b/lib/module/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:71}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:83}},React.createElement(View,{style:[styles.titleContainer,{paddingBottom:10}],__source:{fileName:_jsxFileName,lineNumber:84}},!!title&&React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},title),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:86}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:105}});}else{return React.createElement(View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:107}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:140}},_this._renderIconElement(iconSource,color),React.createElement(Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:150}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n padding: 16,\n paddingTop: 24,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["React","StyleSheet","Text","Image","View","ScrollView","findNodeHandle","AccessibilityInfo","Platform","UIManager","TouchableNativeFeedbackSafe","BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","OS","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","titleContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","Component","defaultProps","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","paddingBottom"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n});\n"]} \ No newline at end of file diff --git a/src/ActionSheet/ActionGroup.tsx b/src/ActionSheet/ActionGroup.tsx index e5a7cb8..699241b 100644 --- a/src/ActionSheet/ActionGroup.tsx +++ b/src/ActionSheet/ActionGroup.tsx @@ -81,7 +81,7 @@ export default class ActionGroup extends React.Component { return ( - + {!!title && {title}} {!!message && {message}} @@ -200,7 +200,6 @@ const styles = StyleSheet.create({ }, titleContainer: { alignItems: 'flex-start', - padding: 16, - paddingTop: 24, + paddingBottom: 10, }, }); From 522ff417cb456e8c35868ad2e5ba92f1a01db1d0 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Fri, 6 May 2022 18:14:06 -0500 Subject: [PATCH 08/11] Add option for rendering dismiss icon. --- lib/commonjs/ActionSheet/ActionGroup.js | 2 +- lib/commonjs/ActionSheet/ActionGroup.js.map | 2 +- lib/commonjs/ActionSheet/index.js | 2 +- lib/commonjs/ActionSheet/index.js.map | 2 +- lib/module/ActionSheet/ActionGroup.js | 2 +- lib/module/ActionSheet/ActionGroup.js.map | 2 +- lib/module/ActionSheet/index.js | 2 +- lib/module/ActionSheet/index.js.map | 2 +- lib/typescript/ActionSheet/ActionGroup.d.ts | 1 + lib/typescript/types.d.ts | 1 + src/ActionSheet/ActionGroup.tsx | 21 ++++++++++++++++++--- src/ActionSheet/index.tsx | 3 +++ src/types.ts | 1 + 13 files changed, 32 insertions(+), 11 deletions(-) diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js index bafa54e..d3f4492 100644 --- a/lib/commonjs/ActionSheet/ActionGroup.js +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:71}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:83}},React.createElement(_reactNative.View,{style:styles.titleContainer,__source:{fileName:_jsxFileName,lineNumber:84}},!!title&&React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},title),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:86}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:105}});}else{return React.createElement(_reactNative.View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:107}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:140}},_this._renderIconElement(iconSource,color),React.createElement(_reactNative.Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:150}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","Platform","OS","UIManager","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","AccessibilityInfo","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","renderDismissIcon","onCancel","titleContainer","titleTextContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","TouchableNativeFeedbackSafe","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","React","Component","defaultProps","StyleSheet","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","paddingBottom"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js b/lib/commonjs/ActionSheet/index.js index 9781e02..2753053 100644 --- a/lib/commonjs/ActionSheet/index.js +++ b/lib/commonjs/ActionSheet/index.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:142}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:143}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle,renderDismissIcon=options.renderDismissIcon;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:127}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:143}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,onCancel:this._animateOut,renderDismissIcon:renderDismissIcon,__source:{fileName:_jsxFileName,lineNumber:144}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js.map b/lib/commonjs/ActionSheet/index.js.map index 723a55c..833b35e 100644 --- a/lib/commonjs/ActionSheet/index.js.map +++ b/lib/commonjs/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","renderDismissIcon","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n renderDismissIcon,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js index 50fd5e1..6524c91 100644 --- a/lib/module/ActionSheet/ActionGroup.js +++ b/lib/module/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:71}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators;if(!title&&!message){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:83}},React.createElement(View,{style:styles.titleContainer,__source:{fileName:_jsxFileName,lineNumber:84}},!!title&&React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:85}},title),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:86}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:105}});}else{return React.createElement(View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:107}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:140}},_this._renderIconElement(iconSource,color),React.createElement(Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:150}},options[_i])));if(showSeparators&&_i boolean;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props;\n\n if (!title && !message) {\n return null;\n }\n\n return (\n \n \n {!!title && {title}}\n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["React","StyleSheet","Text","Image","View","ScrollView","findNodeHandle","AccessibilityInfo","Platform","UIManager","TouchableNativeFeedbackSafe","BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","OS","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","renderDismissIcon","onCancel","titleContainer","titleTextContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","Ripple","i","defaultColor","push","button","text","groupContainer","containerStyle","Component","defaultProps","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","paddingBottom"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js b/lib/module/ActionSheet/index.js index fd7876f..4d51218 100644 --- a/lib/module/ActionSheet/index.js +++ b/lib/module/ActionSheet/index.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:125}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:142}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,__source:{fileName:_jsxFileName,lineNumber:143}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle,renderDismissIcon=options.renderDismissIcon;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:127}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:143}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,onCancel:this._animateOut,renderDismissIcon:renderDismissIcon,__source:{fileName:_jsxFileName,lineNumber:144}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js.map b/lib/module/ActionSheet/index.js.map index 8ee0646..8b034c7 100644 --- a/lib/module/ActionSheet/index.js.map +++ b/lib/module/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","renderDismissIcon","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n renderDismissIcon,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/typescript/ActionSheet/ActionGroup.d.ts b/lib/typescript/ActionSheet/ActionGroup.d.ts index 0ce25c4..f4b7157 100644 --- a/lib/typescript/ActionSheet/ActionGroup.d.ts +++ b/lib/typescript/ActionSheet/ActionGroup.d.ts @@ -3,6 +3,7 @@ import { ActionSheetOptions } from '../types'; declare type Props = ActionSheetOptions & { tintIcons: boolean | null; onSelect: (i: number) => boolean; + onCancel: () => void; startIndex: number; length: number; }; diff --git a/lib/typescript/types.d.ts b/lib/typescript/types.d.ts index d82f91d..6c541c7 100644 --- a/lib/typescript/types.d.ts +++ b/lib/typescript/types.d.ts @@ -26,4 +26,5 @@ export interface ActionSheetOptions extends ActionSheetIOSOptions { separatorStyle?: ViewStyle; useModal?: boolean; destructiveColor?: string; + renderDismissIcon?: (onCancel: () => void) => JSX.Element; } diff --git a/src/ActionSheet/ActionGroup.tsx b/src/ActionSheet/ActionGroup.tsx index 699241b..27ae718 100644 --- a/src/ActionSheet/ActionGroup.tsx +++ b/src/ActionSheet/ActionGroup.tsx @@ -16,6 +16,7 @@ import { ActionSheetOptions } from '../types'; type Props = ActionSheetOptions & { tintIcons: boolean | null; onSelect: (i: number) => boolean; + onCancel: () => void; startIndex: number; length: number; }; @@ -73,16 +74,27 @@ export default class ActionGroup extends React.Component { }; _renderTitleContent = () => { - const { title, titleTextStyle, message, messageTextStyle, showSeparators } = this.props; + const { + title, + titleTextStyle, + message, + messageTextStyle, + showSeparators, + renderDismissIcon, + onCancel, + } = this.props; - if (!title && !message) { + if (!title && !message && !renderDismissIcon) { return null; } return ( - {!!title && {title}} + + {title || ' '} + {renderDismissIcon ? renderDismissIcon(onCancel) : null} + {!!message && {message}} {!!showSeparators && this._renderRowSeparator('title')} @@ -202,4 +214,7 @@ const styles = StyleSheet.create({ alignItems: 'flex-start', paddingBottom: 10, }, + titleTextContainer: { + flexDirection: 'row', + }, }); diff --git a/src/ActionSheet/index.tsx b/src/ActionSheet/index.tsx index 4f382fd..f1a6e77 100644 --- a/src/ActionSheet/index.tsx +++ b/src/ActionSheet/index.tsx @@ -120,6 +120,7 @@ export default class ActionSheet extends React.Component { containerStyle, buttonStyle, separatorStyle, + renderDismissIcon, } = options; return ( @@ -161,6 +162,8 @@ export default class ActionSheet extends React.Component { containerStyle={containerStyle} buttonStyle={buttonStyle} separatorStyle={separatorStyle} + onCancel={this._animateOut} + renderDismissIcon={renderDismissIcon} /> diff --git a/src/types.ts b/src/types.ts index 2692422..1fbafb3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -31,4 +31,5 @@ export interface ActionSheetOptions extends ActionSheetIOSOptions { separatorStyle?: ViewStyle; useModal?: boolean; destructiveColor?: string; + renderDismissIcon?: (onCancel: () => void) => JSX.Element; } From 9f8e4a99584ae51c124537bde2e5e0e1eed06781 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Thu, 12 May 2022 14:14:42 -0500 Subject: [PATCH 09/11] Use interface for cancel. --- lib/commonjs/ActionSheet/index.js | 2 +- lib/commonjs/ActionSheet/index.js.map | 2 +- lib/module/ActionSheet/index.js | 2 +- lib/module/ActionSheet/index.js.map | 2 +- src/ActionSheet/index.tsx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/commonjs/ActionSheet/index.js b/lib/commonjs/ActionSheet/index.js index 2753053..3ce95f6 100644 --- a/lib/commonjs/ActionSheet/index.js +++ b/lib/commonjs/ActionSheet/index.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle,renderDismissIcon=options.renderDismissIcon;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:127}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:143}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,onCancel:this._animateOut,renderDismissIcon:renderDismissIcon,__source:{fileName:_jsxFileName,lineNumber:144}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _ActionGroup=_interopRequireDefault(require("./ActionGroup"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=_reactNative.Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=_reactNative.Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new _reactNative.Animated.Value(0),sheetOpacity:new _reactNative.Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind((0,_assertThisInitialized2.default)(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});_reactNative.BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}_reactNative.BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});_reactNative.Animated.parallel([_reactNative.Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),_reactNative.Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(_reactNative.Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(_reactNative.View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(_reactNative.Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle,renderDismissIcon=options.renderDismissIcon;return React.createElement(_reactNative.TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(_reactNative.Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:127}},React.createElement(_reactNative.View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:143}},React.createElement(_ActionGroup.default,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,onCancel:this._selectCancelButton,renderDismissIcon:renderDismissIcon,__source:{fileName:_jsxFileName,lineNumber:144}}))));}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet;ActionSheet.defaultProps={useNativeDriver:true};var styles=_reactNative.StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/index.js.map b/lib/commonjs/ActionSheet/index.js.map index 833b35e..89bca55 100644 --- a/lib/commonjs/ActionSheet/index.js.map +++ b/lib/commonjs/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","renderDismissIcon","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n renderDismissIcon,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","Easing","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Animated","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","BackHandler","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","React","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","renderDismissIcon","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","StyleSheet","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"8zBAAA,oDACA,yCAUA,kE,sGAiBA,GAAMA,CAAAA,yBAAyB,CAAG,GAAlC,CACA,GAAMC,CAAAA,0BAA0B,CAAG,GAAnC,CACA,GAAMC,CAAAA,UAAU,CAAGC,oBAAOC,MAAP,CAAc,IAAd,CAAoB,IAApB,CAA0B,IAA1B,CAAgC,IAAhC,CAAnB,CACA,GAAMC,CAAAA,SAAS,CAAGF,oBAAOG,GAAP,CAAWJ,UAAX,CAAlB,C,GAGqBK,CAAAA,W,scAKnBC,kB,CAAqB,G,OAErBC,K,CAAe,CACbC,SAAS,CAAE,KADE,CAEbC,WAAW,CAAE,KAFA,CAGbC,OAAO,CAAE,IAHI,CAIbC,QAAQ,CAAE,IAJG,CAKbC,cAAc,CAAE,GAAIC,uBAASC,KAAb,CAAmB,CAAnB,CALH,CAMbC,YAAY,CAAE,GAAIF,uBAASC,KAAb,CAAmB,CAAnB,CAND,C,OASfE,c,CAA8BC,S,OAE9BC,qB,CAAwB,kBAAGC,CAAAA,WAAH,MAAGA,WAAH,OACrB,OAAKb,kBAAL,CAA0Ba,WAAW,CAACC,MAAZ,CAAmBC,MADxB,E,OAyHxBC,0B,CAA6B,SAACZ,OAAD,CAA8BC,QAA9B,CAAgE,iBACvC,MAAKJ,KADkC,CACnFC,SADmF,aACnFA,SADmF,CACxEI,cADwE,aACxEA,cADwE,CACxDG,YADwD,aACxDA,YADwD,CAG3F,GAAIP,SAAJ,CAAe,CACb,MAAKQ,cAAL,CAAsB,MAAKM,0BAAL,CAAgCC,IAAhC,4CAA2Cb,OAA3C,CAAoDC,QAApD,CAAtB,CACA,OACD,CAED,MAAKa,QAAL,CAAc,CACZd,OAAO,CAAPA,OADY,CAEZC,QAAQ,CAARA,QAFY,CAGZH,SAAS,CAAE,IAHC,CAIZC,WAAW,CAAE,IAJD,CAAd,EAMAG,cAAc,CAACa,QAAf,CAAwB,CAAxB,EACAV,YAAY,CAACU,QAAb,CAAsB,CAAtB,EACAZ,sBAASa,QAAT,CAAkB,CAChBb,sBAASc,MAAT,CAAgBf,cAAhB,CAAgC,CAC9BgB,OAAO,CAAE,IADqB,CAE9BC,MAAM,CAAE7B,UAFsB,CAG9B8B,QAAQ,CAAEhC,yBAHoB,CAI9BiC,eAAe,CAAE,MAAKC,KAAL,CAAWD,eAJE,CAAhC,CADgB,CAOhBlB,sBAASc,MAAT,CAAgBZ,YAAhB,CAA8B,CAC5Ba,OAAO,CAAE,CADmB,CAE5BC,MAAM,CAAE7B,UAFoB,CAG5B8B,QAAQ,CAAEhC,yBAHkB,CAI5BiC,eAAe,CAAE,MAAKC,KAAL,CAAWD,eAJA,CAA9B,CAPgB,CAAlB,EAaGE,KAbH,CAaS,SAAAC,MAAM,CAAI,CACjB,GAAIA,MAAM,CAACC,QAAX,CAAqB,CACnB,MAAKX,QAAL,CAAc,CACZf,WAAW,CAAE,KADD,CAAd,EAGA,MAAKO,cAAL,CAAsBC,SAAtB,CACD,CACF,CApBD,EAsBAmB,yBAAYC,gBAAZ,CAA6B,8BAA7B,CAA6D,MAAKC,mBAAlE,EACD,C,OAEDA,mB,CAAsB,UAAM,IAClB5B,CAAAA,OADkB,CACN,MAAKH,KADC,CAClBG,OADkB,CAG1B,GAAI,CAACA,OAAL,CAAc,CACZ,MAAO,MAAP,CACD,CAED,GAAI,MAAOA,CAAAA,OAAO,CAAC6B,iBAAf,GAAqC,WAAzC,CAAsD,CACpD,OACD,CAFD,IAEO,IAAI,MAAO7B,CAAAA,OAAO,CAAC6B,iBAAf,GAAqC,QAAzC,CAAmD,CACxD,MAAO,OAAKC,SAAL,CAAe9B,OAAO,CAAC6B,iBAAvB,CAAP,CACD,CAFM,IAEA,CACL,MAAO,OAAKE,WAAL,EAAP,CACD,CACF,C,OAEDD,S,CAAY,SAACE,KAAD,CAA4B,kBACJ,MAAKnC,KADD,CAC9BE,WAD8B,cAC9BA,WAD8B,CACjBE,QADiB,cACjBA,QADiB,CAGtC,GAAIF,WAAJ,CAAiB,CACf,MAAO,MAAP,CACD,CAEDE,QAAQ,EAAIA,QAAQ,CAAC+B,KAAD,CAApB,CACA,MAAO,OAAKD,WAAL,EAAP,CACD,C,OAEDA,W,CAAc,UAAe,kBAC2B,MAAKlC,KADhC,CACnBE,WADmB,cACnBA,WADmB,CACNG,cADM,cACNA,cADM,CACUG,YADV,cACUA,YADV,CAG3B,GAAIN,WAAJ,CAAiB,CACf,MAAO,MAAP,CACD,CAGD2B,yBAAYO,mBAAZ,CAAgC,8BAAhC,CAAgE,MAAKL,mBAArE,EACA,MAAKd,QAAL,CAAc,CACZf,WAAW,CAAE,IADD,CAAd,EAGAI,sBAASa,QAAT,CAAkB,CAChBb,sBAASc,MAAT,CAAgBf,cAAhB,CAAgC,CAC9BgB,OAAO,CAAE,CADqB,CAE9BC,MAAM,CAAE1B,SAFsB,CAG9B2B,QAAQ,CAAE/B,0BAHoB,CAI9BgC,eAAe,CAAE,MAAKC,KAAL,CAAWD,eAJE,CAAhC,CADgB,CAOhBlB,sBAASc,MAAT,CAAgBZ,YAAhB,CAA8B,CAC5Ba,OAAO,CAAE,CADmB,CAE5BC,MAAM,CAAE1B,SAFoB,CAG5B2B,QAAQ,CAAE/B,0BAHkB,CAI5BgC,eAAe,CAAE,MAAKC,KAAL,CAAWD,eAJA,CAA9B,CAPgB,CAAlB,EAaGE,KAbH,CAaS,SAAAC,MAAM,CAAI,CACjB,GAAIA,MAAM,CAACC,QAAX,CAAqB,CACnB,MAAKX,QAAL,CAAc,CACZhB,SAAS,CAAE,KADC,CAEZC,WAAW,CAAE,KAFD,CAAd,EAKA,GAAI,MAAKO,cAAT,CAAyB,CACvB,MAAKA,cAAL,GACD,CACF,CACF,CAxBD,EAyBA,MAAO,KAAP,CACD,C,2FAhOQ,kBACwC,KAAKT,KAD7C,CACCC,SADD,cACCA,SADD,CACYI,cADZ,cACYA,cADZ,CAC4BF,OAD5B,cAC4BA,OAD5B,CAEP,GAAMkC,CAAAA,QAAQ,CAAGlC,OAAO,CAAGA,OAAO,CAACkC,QAAR,GAAqB,IAAxB,CAA+B,KAAvD,CACA,GAAMC,CAAAA,OAAO,CAAGrC,SAAS,CACvB,oBAAC,qBAAD,CAAU,IAAV,EACE,KAAK,CAAE,CACLsC,MAAM,CAACD,OADF,CAEL,CACEE,OAAO,CAAEnC,cADX,CAFK,CADT,iDADuB,CASrB,IATJ,CAYA,GAAMoC,CAAAA,UAAU,CACd,oBAAC,iBAAD,EACE,KAAK,CAAEF,MAAM,CAACG,aADhB,CAEE,yBAAyB,CAAEzC,SAAS,CAAG,qBAAH,CAA2B,MAFjE,iDAGG0C,KAAK,CAACC,QAAN,CAAeC,IAAf,CAAoB,KAAKpB,KAAL,CAAWqB,QAA/B,CAHH,CADF,CAQA,MACE,qBAAC,iBAAD,EAAM,aAAa,CAAE,KAAKrB,KAAL,CAAWsB,aAAhC,CAA+C,KAAK,CAAER,MAAM,CAACG,aAA7D,iDACGD,UADH,CAEGxC,SAAS,EAAI,CAACoC,QAAd,EACC,oBAAC,KAAD,CAAO,QAAP,kDACGC,OADH,CAEG,KAAKU,YAAL,EAFH,CAHJ,CAQG/C,SAAS,EAAIoC,QAAb,EACC,oBAAC,kBAAD,EAAO,aAAa,CAAC,MAArB,CAA4B,WAAW,CAAE,IAAzC,CAA+C,cAAc,CAAE,KAAKN,mBAApE,iDACGO,OADH,CAEG,KAAKU,YAAL,EAFH,CATJ,CADF,CAiBD,C,mDAEc,kBACkC,KAAKhD,KADvC,CACLG,OADK,cACLA,OADK,CACID,WADJ,cACIA,WADJ,CACiBM,YADjB,cACiBA,YADjB,CAGb,GAAI,CAACL,OAAL,CAAc,CACZ,MAAO,KAAP,CACD,CALY,GAQF8C,CAAAA,YARE,CA0BT9C,OA1BS,CAQXA,OARW,CASX+C,KATW,CA0BT/C,OA1BS,CASX+C,KATW,CAUXC,SAVW,CA0BThD,OA1BS,CAUXgD,SAVW,CAWXC,SAXW,CA0BTjD,OA1BS,CAWXiD,SAXW,CAYXC,sBAZW,CA0BTlD,OA1BS,CAYXkD,sBAZW,CAaXC,gBAbW,CA0BTnD,OA1BS,CAaXmD,gBAbW,CAcXC,SAdW,CA0BTpD,OA1BS,CAcXoD,SAdW,CAeXC,SAfW,CA0BTrD,OA1BS,CAeXqD,SAfW,CAgBXC,KAhBW,CA0BTtD,OA1BS,CAgBXsD,KAhBW,CAiBXC,cAjBW,CA0BTvD,OA1BS,CAiBXuD,cAjBW,CAkBXC,OAlBW,CA0BTxD,OA1BS,CAkBXwD,OAlBW,CAmBXC,gBAnBW,CA0BTzD,OA1BS,CAmBXyD,gBAnBW,CAoBXC,SApBW,CA0BT1D,OA1BS,CAoBX0D,SApBW,CAqBXC,cArBW,CA0BT3D,OA1BS,CAqBX2D,cArBW,CAsBXC,cAtBW,CA0BT5D,OA1BS,CAsBX4D,cAtBW,CAuBXC,WAvBW,CA0BT7D,OA1BS,CAuBX6D,WAvBW,CAwBXC,cAxBW,CA0BT9D,OA1BS,CAwBX8D,cAxBW,CAyBXC,iBAzBW,CA0BT/D,OA1BS,CAyBX+D,iBAzBW,CA2Bb,MACE,qBAAC,qCAAD,EAA0B,yBAAyB,CAAC,KAApD,CAA0D,OAAO,CAAE,KAAKnC,mBAAxE,kDACE,oBAAC,qBAAD,CAAU,IAAV,EACE,8BAA8B,CAAE7B,WADlC,CAEE,KAAK,CAAE,CACLqC,MAAM,CAAC4B,cADF,CAEL,CACE3B,OAAO,CAAEhC,YADX,CAEE4D,SAAS,CAAE,CACT,CACEC,UAAU,CAAE7D,YAAY,CAAC8D,WAAb,CAAyB,CACnCC,UAAU,CAAE,CAAC,CAAD,CAAI,CAAJ,CADuB,CAEnCC,WAAW,CAAE,CAAC,KAAKzE,kBAAN,CAA0B,CAA1B,CAFsB,CAAzB,CADd,CADS,CAFb,CAFK,CAFT,kDAgBE,oBAAC,iBAAD,EAAM,KAAK,CAAEwC,MAAM,CAACkC,KAApB,CAA2B,QAAQ,CAAE,KAAK9D,qBAA1C,kDACE,oBAAC,oBAAD,EACE,OAAO,CAAEsC,YADX,CAEE,KAAK,CAAEC,KAFT,CAGE,SAAS,CAAEC,SAAS,GAAKzC,SAAd,CAA0B,IAA1B,CAAiCyC,SAH9C,CAIE,SAAS,CAAEC,SAJb,CAKE,sBAAsB,CAAEC,sBAL1B,CAME,gBAAgB,CAAEC,gBANpB,CAOE,QAAQ,CAAE,KAAKrB,SAPjB,CAQE,UAAU,CAAE,CARd,CASE,MAAM,CAAEgB,YAAY,CAACyB,MATvB,CAUE,SAAS,CAAEnB,SAAS,EAAI,EAV1B,CAWE,SAAS,CAAEC,SAXb,CAYE,KAAK,CAAEC,KAAK,EAAI/C,SAZlB,CAaE,cAAc,CAAEgD,cAblB,CAcE,OAAO,CAAEC,OAAO,EAAIjD,SAdtB,CAeE,gBAAgB,CAAEkD,gBAfpB,CAgBE,SAAS,CAAEC,SAhBb,CAiBE,cAAc,CAAEC,cAjBlB,CAkBE,cAAc,CAAEC,cAlBlB,CAmBE,WAAW,CAAEC,WAnBf,CAoBE,cAAc,CAAEC,cApBlB,CAqBE,QAAQ,CAAE,KAAKlC,mBArBjB,CAsBE,iBAAiB,CAAEmC,iBAtBrB,kDADF,CAhBF,CADF,CADF,CA+CD,C,yBAzIsCvB,KAAK,CAACgC,S,8BAA1B7E,W,CACZ8E,Y,CAAe,CACpBpD,eAAe,CAAE,IADG,C,CAuPxB,GAAMe,CAAAA,MAAM,CAAGsC,wBAAWC,MAAX,CAAkB,CAC/BpC,aAAa,CAAE,CACbqC,IAAI,CAAE,CADO,CADgB,CAI/BzC,OAAO,CAAE,CACP0C,QAAQ,CAAE,UADH,CAEPC,GAAG,CAAE,CAFE,CAGPC,KAAK,CAAE,CAHA,CAIPC,MAAM,CAAE,CAJD,CAKPC,IAAI,CAAE,CALC,CAMPC,eAAe,CAAE,OANV,CAJsB,CAY/BlB,cAAc,CAAE,CACda,QAAQ,CAAE,UADI,CAEdI,IAAI,CAAE,CAFQ,CAGdF,KAAK,CAAE,CAHO,CAIdC,MAAM,CAAE,CAJM,CAKdF,GAAG,CAAE,CALS,CAMdI,eAAe,CAAE,aANH,CAOdC,UAAU,CAAE,UAPE,CAQdC,cAAc,CAAE,QARF,CASdC,aAAa,CAAE,KATD,CAZe,CAuB/Bf,KAAK,CAAE,CACLM,IAAI,CAAE,CADD,CAELM,eAAe,CAAE,aAFZ,CAvBwB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n renderDismissIcon,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js b/lib/module/ActionSheet/index.js index 4d51218..29a4dea 100644 --- a/lib/module/ActionSheet/index.js +++ b/lib/module/ActionSheet/index.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle,renderDismissIcon=options.renderDismissIcon;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:127}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:143}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,onCancel:this._animateOut,renderDismissIcon:renderDismissIcon,__source:{fileName:_jsxFileName,lineNumber:144}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); +import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _assertThisInitialized from"@babel/runtime/helpers/assertThisInitialized";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/index.tsx";import*as React from'react';import{Animated,BackHandler,Easing,Modal,StyleSheet,TouchableWithoutFeedback,View}from'react-native';import ActionGroup from'./ActionGroup';var OPACITY_ANIMATION_IN_TIME=225;var OPACITY_ANIMATION_OUT_TIME=195;var EASING_OUT=Easing.bezier(0.25,0.46,0.45,0.94);var EASING_IN=Easing.out(EASING_OUT);var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionSheet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionSheet)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._actionSheetHeight=360;_this.state={isVisible:false,isAnimating:false,options:null,onSelect:null,overlayOpacity:new Animated.Value(0),sheetOpacity:new Animated.Value(0)};_this._deferNextShow=undefined;_this._setActionSheetHeight=function(_ref){var nativeEvent=_ref.nativeEvent;return _this._actionSheetHeight=nativeEvent.layout.height;};_this.showActionSheetWithOptions=function(options,onSelect){var _this$state=_this.state,isVisible=_this$state.isVisible,overlayOpacity=_this$state.overlayOpacity,sheetOpacity=_this$state.sheetOpacity;if(isVisible){_this._deferNextShow=_this.showActionSheetWithOptions.bind(_assertThisInitialized(_this),options,onSelect);return;}_this.setState({options:options,onSelect:onSelect,isVisible:true,isAnimating:true});overlayOpacity.setValue(0);sheetOpacity.setValue(0);Animated.parallel([Animated.timing(overlayOpacity,{toValue:0.32,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:1,easing:EASING_OUT,duration:OPACITY_ANIMATION_IN_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isAnimating:false});_this._deferNextShow=undefined;}});BackHandler.addEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);};_this._selectCancelButton=function(){var options=_this.state.options;if(!options){return false;}if(typeof options.cancelButtonIndex==='undefined'){return;}else if(typeof options.cancelButtonIndex==='number'){return _this._onSelect(options.cancelButtonIndex);}else{return _this._animateOut();}};_this._onSelect=function(index){var _this$state2=_this.state,isAnimating=_this$state2.isAnimating,onSelect=_this$state2.onSelect;if(isAnimating){return false;}onSelect&&onSelect(index);return _this._animateOut();};_this._animateOut=function(){var _this$state3=_this.state,isAnimating=_this$state3.isAnimating,overlayOpacity=_this$state3.overlayOpacity,sheetOpacity=_this$state3.sheetOpacity;if(isAnimating){return false;}BackHandler.removeEventListener('actionSheetHardwareBackPress',_this._selectCancelButton);_this.setState({isAnimating:true});Animated.parallel([Animated.timing(overlayOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver}),Animated.timing(sheetOpacity,{toValue:0,easing:EASING_IN,duration:OPACITY_ANIMATION_OUT_TIME,useNativeDriver:_this.props.useNativeDriver})]).start(function(result){if(result.finished){_this.setState({isVisible:false,isAnimating:false});if(_this._deferNextShow){_this._deferNextShow();}}});return true;};return _this;}_createClass(ActionSheet,[{key:"render",value:function render(){var _this$state4=this.state,isVisible=_this$state4.isVisible,overlayOpacity=_this$state4.overlayOpacity,options=_this$state4.options;var useModal=options?options.useModal===true:false;var overlay=isVisible?React.createElement(Animated.View,{style:[styles.overlay,{opacity:overlayOpacity}],__source:{fileName:_jsxFileName,lineNumber:60}}):null;var appContent=React.createElement(View,{style:styles.flexContainer,importantForAccessibility:isVisible?'no-hide-descendants':'auto',__source:{fileName:_jsxFileName,lineNumber:72}},React.Children.only(this.props.children));return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:styles.flexContainer,__source:{fileName:_jsxFileName,lineNumber:80}},appContent,isVisible&&!useModal&&React.createElement(React.Fragment,{__source:{fileName:_jsxFileName,lineNumber:83}},overlay,this._renderSheet()),isVisible&&useModal&&React.createElement(Modal,{animationType:"none",transparent:true,onRequestClose:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:89}},overlay,this._renderSheet()));}},{key:"_renderSheet",value:function _renderSheet(){var _this$state5=this.state,options=_this$state5.options,isAnimating=_this$state5.isAnimating,sheetOpacity=_this$state5.sheetOpacity;if(!options){return null;}var optionsArray=options.options,icons=options.icons,tintIcons=options.tintIcons,iconStyle=options.iconStyle,destructiveButtonIndex=options.destructiveButtonIndex,destructiveColor=options.destructiveColor,textStyle=options.textStyle,tintColor=options.tintColor,title=options.title,titleTextStyle=options.titleTextStyle,message=options.message,messageTextStyle=options.messageTextStyle,autoFocus=options.autoFocus,showSeparators=options.showSeparators,containerStyle=options.containerStyle,buttonStyle=options.buttonStyle,separatorStyle=options.separatorStyle,renderDismissIcon=options.renderDismissIcon;return React.createElement(TouchableWithoutFeedback,{importantForAccessibility:"yes",onPress:this._selectCancelButton,__source:{fileName:_jsxFileName,lineNumber:126}},React.createElement(Animated.View,{needsOffscreenAlphaCompositing:isAnimating,style:[styles.sheetContainer,{opacity:sheetOpacity,transform:[{translateY:sheetOpacity.interpolate({inputRange:[0,1],outputRange:[this._actionSheetHeight,0]})}]}],__source:{fileName:_jsxFileName,lineNumber:127}},React.createElement(View,{style:styles.sheet,onLayout:this._setActionSheetHeight,__source:{fileName:_jsxFileName,lineNumber:143}},React.createElement(ActionGroup,{options:optionsArray,icons:icons,tintIcons:tintIcons===undefined?true:tintIcons,iconStyle:iconStyle,destructiveButtonIndex:destructiveButtonIndex,destructiveColor:destructiveColor,onSelect:this._onSelect,startIndex:0,length:optionsArray.length,textStyle:textStyle||{},tintColor:tintColor,title:title||undefined,titleTextStyle:titleTextStyle,message:message||undefined,messageTextStyle:messageTextStyle,autoFocus:autoFocus,showSeparators:showSeparators,containerStyle:containerStyle,buttonStyle:buttonStyle,separatorStyle:separatorStyle,onCancel:this._selectCancelButton,renderDismissIcon:renderDismissIcon,__source:{fileName:_jsxFileName,lineNumber:144}}))));}}]);return ActionSheet;}(React.Component);ActionSheet.defaultProps={useNativeDriver:true};export{ActionSheet as default};var styles=StyleSheet.create({flexContainer:{flex:1},overlay:{position:'absolute',top:0,right:0,bottom:0,left:0,backgroundColor:'black'},sheetContainer:{position:'absolute',left:0,right:0,bottom:0,top:0,backgroundColor:'transparent',alignItems:'flex-end',justifyContent:'center',flexDirection:'row'},sheet:{flex:1,backgroundColor:'transparent'}}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/index.js.map b/lib/module/ActionSheet/index.js.map index 8b034c7..3952372 100644 --- a/lib/module/ActionSheet/index.js.map +++ b/lib/module/ActionSheet/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","renderDismissIcon","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n renderDismissIcon,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.tsx"],"names":["React","Animated","BackHandler","Easing","Modal","StyleSheet","TouchableWithoutFeedback","View","ActionGroup","OPACITY_ANIMATION_IN_TIME","OPACITY_ANIMATION_OUT_TIME","EASING_OUT","bezier","EASING_IN","out","ActionSheet","_actionSheetHeight","state","isVisible","isAnimating","options","onSelect","overlayOpacity","Value","sheetOpacity","_deferNextShow","undefined","_setActionSheetHeight","nativeEvent","layout","height","showActionSheetWithOptions","bind","setState","setValue","parallel","timing","toValue","easing","duration","useNativeDriver","props","start","result","finished","addEventListener","_selectCancelButton","cancelButtonIndex","_onSelect","_animateOut","index","removeEventListener","useModal","overlay","styles","opacity","appContent","flexContainer","Children","only","children","pointerEvents","_renderSheet","optionsArray","icons","tintIcons","iconStyle","destructiveButtonIndex","destructiveColor","textStyle","tintColor","title","titleTextStyle","message","messageTextStyle","autoFocus","showSeparators","containerStyle","buttonStyle","separatorStyle","renderDismissIcon","sheetContainer","transform","translateY","interpolate","inputRange","outputRange","sheet","length","Component","defaultProps","create","flex","position","top","right","bottom","left","backgroundColor","alignItems","justifyContent","flexDirection"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n BackHandler,\n Easing,\n Modal,\n StyleSheet,\n TouchableWithoutFeedback,\n View,\n ViewProps,\n} from 'react-native';\nimport ActionGroup from './ActionGroup';\nimport { ActionSheetOptions } from '../types';\n\ninterface State {\n isVisible: boolean;\n isAnimating: boolean;\n options: ActionSheetOptions | null;\n onSelect: ((i: number) => void) | null;\n overlayOpacity: any;\n sheetOpacity: any;\n}\n\ninterface Props {\n readonly useNativeDriver: boolean | undefined;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\nconst OPACITY_ANIMATION_IN_TIME = 225;\nconst OPACITY_ANIMATION_OUT_TIME = 195;\nconst EASING_OUT = Easing.bezier(0.25, 0.46, 0.45, 0.94);\nconst EASING_IN = Easing.out(EASING_OUT);\n\n// Has same API as https://facebook.github.io/react-native/docs/actionsheetios.html\nexport default class ActionSheet extends React.Component {\n static defaultProps = {\n useNativeDriver: true,\n };\n\n _actionSheetHeight = 360;\n\n state: State = {\n isVisible: false,\n isAnimating: false,\n options: null,\n onSelect: null,\n overlayOpacity: new Animated.Value(0),\n sheetOpacity: new Animated.Value(0),\n };\n\n _deferNextShow?: () => void = undefined;\n\n _setActionSheetHeight = ({ nativeEvent }: any) =>\n (this._actionSheetHeight = nativeEvent.layout.height);\n\n render() {\n const { isVisible, overlayOpacity, options } = this.state;\n const useModal = options ? options.useModal === true : false;\n const overlay = isVisible ? (\n \n ) : null;\n\n // While the sheet is visible, hide the rest of the app's content from screen readers.\n const appContent = (\n \n {React.Children.only(this.props.children)}\n \n );\n\n return (\n \n {appContent}\n {isVisible && !useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n {isVisible && useModal && (\n \n {overlay}\n {this._renderSheet()}\n \n )}\n \n );\n }\n\n _renderSheet() {\n const { options, isAnimating, sheetOpacity } = this.state;\n\n if (!options) {\n return null;\n }\n\n const {\n options: optionsArray,\n icons,\n tintIcons,\n iconStyle,\n destructiveButtonIndex,\n destructiveColor,\n textStyle,\n tintColor,\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n autoFocus,\n showSeparators,\n containerStyle,\n buttonStyle,\n separatorStyle,\n renderDismissIcon,\n } = options;\n return (\n \n \n \n \n \n \n \n );\n }\n\n showActionSheetWithOptions = (options: ActionSheetOptions, onSelect: (i: number) => void) => {\n const { isVisible, overlayOpacity, sheetOpacity } = this.state;\n\n if (isVisible) {\n this._deferNextShow = this.showActionSheetWithOptions.bind(this, options, onSelect);\n return;\n }\n\n this.setState({\n options,\n onSelect,\n isVisible: true,\n isAnimating: true,\n });\n overlayOpacity.setValue(0);\n sheetOpacity.setValue(0);\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0.32,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 1,\n easing: EASING_OUT,\n duration: OPACITY_ANIMATION_IN_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isAnimating: false,\n });\n this._deferNextShow = undefined;\n }\n });\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.addEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n };\n\n _selectCancelButton = () => {\n const { options } = this.state;\n\n if (!options) {\n return false;\n }\n\n if (typeof options.cancelButtonIndex === 'undefined') {\n return;\n } else if (typeof options.cancelButtonIndex === 'number') {\n return this._onSelect(options.cancelButtonIndex);\n } else {\n return this._animateOut();\n }\n };\n\n _onSelect = (index: number): boolean => {\n const { isAnimating, onSelect } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n onSelect && onSelect(index);\n return this._animateOut();\n };\n\n _animateOut = (): boolean => {\n const { isAnimating, overlayOpacity, sheetOpacity } = this.state;\n\n if (isAnimating) {\n return false;\n }\n\n // @ts-ignore: Argument of type '\"actionSheetHardwareBackPress\"' is not assignable to parameter of type '\"hardwareBackPress\"'\n BackHandler.removeEventListener('actionSheetHardwareBackPress', this._selectCancelButton);\n this.setState({\n isAnimating: true,\n });\n Animated.parallel([\n Animated.timing(overlayOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n Animated.timing(sheetOpacity, {\n toValue: 0,\n easing: EASING_IN,\n duration: OPACITY_ANIMATION_OUT_TIME,\n useNativeDriver: this.props.useNativeDriver,\n }),\n ]).start(result => {\n if (result.finished) {\n this.setState({\n isVisible: false,\n isAnimating: false,\n });\n\n if (this._deferNextShow) {\n this._deferNextShow();\n }\n }\n });\n return true;\n };\n}\n\nconst styles = StyleSheet.create({\n flexContainer: {\n flex: 1,\n },\n overlay: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'black',\n },\n sheetContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n backgroundColor: 'transparent',\n alignItems: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n sheet: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n});\n"]} \ No newline at end of file diff --git a/src/ActionSheet/index.tsx b/src/ActionSheet/index.tsx index f1a6e77..cbb941e 100644 --- a/src/ActionSheet/index.tsx +++ b/src/ActionSheet/index.tsx @@ -162,7 +162,7 @@ export default class ActionSheet extends React.Component { containerStyle={containerStyle} buttonStyle={buttonStyle} separatorStyle={separatorStyle} - onCancel={this._animateOut} + onCancel={this._selectCancelButton} renderDismissIcon={renderDismissIcon} /> From 1aca2e67b5fd156763c2d6678eb54b8b56edd1a5 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Tue, 24 May 2022 15:20:23 -0500 Subject: [PATCH 10/11] Take in options as components. --- lib/commonjs/ActionSheet/ActionGroup.js | 2 +- lib/commonjs/ActionSheet/ActionGroup.js.map | 2 +- lib/commonjs/ActionSheet/___index.ios.js | 2 -- lib/commonjs/ActionSheet/___index.ios.js.map | 1 - lib/module/ActionSheet/ActionGroup.js | 2 +- lib/module/ActionSheet/ActionGroup.js.map | 2 +- lib/module/ActionSheet/___index.ios.js | 2 -- lib/module/ActionSheet/___index.ios.js.map | 1 - lib/typescript/ActionSheet/___index.ios.d.ts | 13 ------- lib/typescript/types.d.ts | 2 +- src/ActionSheet/ActionGroup.tsx | 5 ++- src/ActionSheet/___index.ios.tsx | 38 -------------------- src/types.ts | 2 +- 13 files changed, 8 insertions(+), 66 deletions(-) delete mode 100644 lib/commonjs/ActionSheet/___index.ios.js delete mode 100644 lib/commonjs/ActionSheet/___index.ios.js.map delete mode 100644 lib/module/ActionSheet/___index.ios.js delete mode 100644 lib/module/ActionSheet/___index.ios.js.map delete mode 100644 lib/typescript/ActionSheet/___index.ios.d.ts delete mode 100644 src/ActionSheet/___index.ios.tsx diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js index d3f4492..773e2b3 100644 --- a/lib/commonjs/ActionSheet/ActionGroup.js +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:72}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators,renderDismissIcon=_this$props.renderDismissIcon,onCancel=_this$props.onCancel;if(!title&&!message&&!renderDismissIcon){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:92}},React.createElement(_reactNative.View,{style:styles.titleContainer,__source:{fileName:_jsxFileName,lineNumber:93}},React.createElement(_reactNative.View,{style:styles.titleTextContainer,__source:{fileName:_jsxFileName,lineNumber:94}},React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:95}},title||' '),renderDismissIcon?renderDismissIcon(onCancel):null),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:98}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:117}});}else{return React.createElement(_reactNative.View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:119}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:152}},_this._renderIconElement(iconSource,color),React.createElement(_reactNative.Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:162}},options[_i])));if(showSeparators&&_i boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","Platform","OS","UIManager","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","AccessibilityInfo","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","renderDismissIcon","onCancel","titleContainer","titleTextContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","TouchableNativeFeedbackSafe","Ripple","i","defaultColor","push","button","groupContainer","containerStyle","React","Component","defaultProps","StyleSheet","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","text","paddingBottom"],"mappings":"ktBAAA,oDACA,yCAWA,kG,4GAWA,GAAMA,CAAAA,sBAAsB,CAAG,WAA/B,CACA,GAAMC,CAAAA,sBAAsB,CAAG,WAA/B,CACA,GAAMC,CAAAA,iBAAiB,CAAG,SAA1B,CAMA,GAAMC,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,CAACC,GAAD,CAAiC,CACzD,GAAIA,GAAJ,CAAS,CACP,GAAMC,CAAAA,QAAQ,CAAG,gCAAeD,GAAf,CAAjB,CACA,GAAIC,QAAJ,CAAc,CACZ,GAAIC,sBAASC,EAAT,GAAgB,SAApB,CAA+B,CAE7BC,uBAAUC,sBAAV,CACEJ,QADF,CAGEG,uBAAUE,uBAAV,CAAkCC,eAHpC,EAKD,CAPD,IAOO,CACLC,+BAAkBC,qBAAlB,CAAwCR,QAAxC,EACD,CACF,CACF,CACF,CAhBD,C,GAkBqBS,CAAAA,W,scAoBnBC,mB,CAAsB,SAACC,GAAD,CAA0B,CAC9C,MACE,qBAAC,iBAAD,EAAM,GAAG,cAAeA,GAAxB,CAA+B,KAAK,CAAE,CAACC,MAAM,CAACC,YAAR,CAAsB,MAAKC,KAAL,CAAWC,cAAjC,CAAtC,iDADF,CAGD,C,OAEDC,mB,CAAsB,UAAM,iBAStB,MAAKF,KATiB,CAExBG,KAFwB,aAExBA,KAFwB,CAGxBC,cAHwB,aAGxBA,cAHwB,CAIxBC,OAJwB,aAIxBA,OAJwB,CAKxBC,gBALwB,aAKxBA,gBALwB,CAMxBC,cANwB,aAMxBA,cANwB,CAOxBC,iBAPwB,aAOxBA,iBAPwB,CAQxBC,QARwB,aAQxBA,QARwB,CAW1B,GAAI,CAACN,KAAD,EAAU,CAACE,OAAX,EAAsB,CAACG,iBAA3B,CAA8C,CAC5C,MAAO,KAAP,CACD,CAED,MACE,qBAAC,iBAAD,kDACE,oBAAC,iBAAD,EAAM,KAAK,CAAEV,MAAM,CAACY,cAApB,iDACE,oBAAC,iBAAD,EAAM,KAAK,CAAEZ,MAAM,CAACa,kBAApB,iDACE,oBAAC,iBAAD,EAAM,KAAK,CAAE,CAACb,MAAM,CAACK,KAAR,CAAeC,cAAf,CAAb,iDAA8CD,KAAK,EAAI,GAAvD,CADF,CAEGK,iBAAiB,CAAGA,iBAAiB,CAACC,QAAD,CAApB,CAAiC,IAFrD,CADF,CAKG,CAAC,CAACJ,OAAF,EAAa,oBAAC,iBAAD,EAAM,KAAK,CAAE,CAACP,MAAM,CAACO,OAAR,CAAiBC,gBAAjB,CAAb,iDAAkDD,OAAlD,CALhB,CADF,CAQG,CAAC,CAACE,cAAF,EAAoB,MAAKX,mBAAL,CAAyB,OAAzB,CARvB,CADF,CAYD,C,OAEDgB,kB,CAAqB,SAACC,UAAD,CAAqCC,KAArC,CAAuD,IAClEC,CAAAA,SADkE,CACpD,MAAKf,KAD+C,CAClEe,SADkE,CAE1E,GAAI,CAACF,UAAL,CAAiB,CACf,MAAO,KAAP,CACD,CAED,GAAI,MAAOA,CAAAA,UAAP,GAAsB,QAA1B,CAAoC,CAClC,GAAMG,CAAAA,SAAS,CAAG,CAChBlB,MAAM,CAACmB,IADS,CAEhB,MAAKjB,KAAL,CAAWgB,SAFK,CAGhB,CAAEE,SAAS,CAAEH,SAAS,CAAGD,KAAH,CAAWK,SAAjC,CAHgB,CAAlB,CAKA,MAAO,qBAAC,kBAAD,EAAO,YAAY,CAAE,CAArB,CAAwB,MAAM,CAAEN,UAAhC,CAA4C,UAAU,CAAC,SAAvD,CAAiE,KAAK,CAAEG,SAAxE,kDAAP,CACD,CAPD,IAOO,CACL,MAAO,qBAAC,iBAAD,EAAM,KAAK,CAAE,CAAClB,MAAM,CAACmB,IAAR,CAAc,MAAKjB,KAAL,CAAWgB,SAAzB,CAAb,kDAAmDH,UAAnD,CAAP,CACD,CACF,C,OAEDO,kB,CAAqB,UAAM,kBAcrB,MAAKpB,KAdgB,CAEvBqB,OAFuB,cAEvBA,OAFuB,CAGvBC,KAHuB,cAGvBA,KAHuB,CAIvBC,sBAJuB,cAIvBA,sBAJuB,oCAKvBC,gBALuB,CAKvBA,gBALuB,gCAKJzC,iBALI,uBAMvB0C,QANuB,cAMvBA,QANuB,CAOvBC,UAPuB,cAOvBA,UAPuB,CAQvBC,MARuB,cAQvBA,MARuB,CASvBC,WATuB,cASvBA,WATuB,CAUvBC,SAVuB,cAUvBA,SAVuB,CAWvBX,SAXuB,cAWvBA,SAXuB,CAYvBY,SAZuB,cAYvBA,SAZuB,CAavBvB,cAbuB,cAavBA,cAbuB,CAezB,GAAMwB,CAAAA,WAA8B,CAAG,EAAvC,CACA,GAAMC,CAAAA,wBAAwB,CAAGC,qCAA4BC,MAA5B,CAC/B,wBAD+B,CAE/B,KAF+B,CAAjC,CAhByB,yBAqBhBC,EArBgB,EAsBvB,GAAMC,CAAAA,YAAY,CAAGlB,SAAS,CAC1BA,SAD0B,CAE1B,CAACW,SAAS,EAAI,EAAd,EAAkBf,KAAlB,EAA2BhC,sBAF/B,CAGA,GAAMgC,CAAAA,KAAK,CAAGqB,EAAC,GAAKZ,sBAAN,CAA+BC,gBAA/B,CAAkDY,YAAhE,CACA,GAAMvB,CAAAA,UAAU,CAAGS,KAAK,EAAI,IAAT,CAAgBA,KAAK,CAACa,EAAD,CAArB,CAA2B,IAA9C,CAEAJ,WAAW,CAACM,IAAZ,CACE,oBAAC,oCAAD,EACE,GAAG,CAAEP,SAAS,EAAIK,EAAC,GAAK,CAAnB,CAAuBnD,iBAAvB,CAA2CmC,SADlD,CAEE,GAAG,CAAEgB,EAFP,CAGE,YAAY,CAAE,CAHhB,CAIE,UAAU,CAAEH,wBAJd,CAKE,OAAO,CAAE,yBAAMP,CAAAA,QAAQ,CAACU,EAAD,CAAd,EALX,CAME,KAAK,CAAE,CAACrC,MAAM,CAACwC,MAAR,CAAgBV,WAAhB,CANT,CAOE,iBAAiB,CAAC,QAPpB,kDAQG,MAAKhB,kBAAL,CAAwBC,UAAxB,CAAoCC,KAApC,CARH,CASGO,OAAO,CAACc,EAAD,CATV,CADF,EAcA,GAAI5B,cAAc,EAAI4B,EAAC,CAAGT,UAAU,CAAGC,MAAb,CAAsB,CAAhD,CAAmD,CACjDI,WAAW,CAACM,IAAZ,CAAiB,MAAKzC,mBAAL,CAAyBuC,EAAzB,CAAjB,EACD,CA5CsB,EAqBzB,IAAK,GAAIA,CAAAA,EAAC,CAAGT,UAAb,CAAyBS,EAAC,CAAGT,UAAU,CAAGC,MAA1C,CAAkDQ,EAAC,EAAnD,CAAuD,OAA9CA,EAA8C,EAwBtD,CAED,MAAOJ,CAAAA,WAAP,CACD,C,2FA9GQ,CACP,MACE,qBAAC,iBAAD,EAAM,KAAK,CAAE,CAACjC,MAAM,CAACyC,cAAR,CAAwB,KAAKvC,KAAL,CAAWwC,cAAnC,CAAb,iDACG,KAAKtC,mBAAL,EADH,CAEE,oBAAC,uBAAD,kDAAa,KAAKkB,kBAAL,EAAb,CAFF,CADF,CAMD,C,yBAlBsCqB,KAAK,CAACC,S,8BAA1B/C,W,CACZgD,Y,CAAe,CACpBxC,KAAK,CAAE,IADa,CAEpBE,OAAO,CAAE,IAFW,CAGpBE,cAAc,CAAE,KAHI,CAIpBQ,SAAS,CAAE,IAJS,CAKpBC,SAAS,CAAE,EALS,CAMpBa,SAAS,CAAE,EANS,CAOpBD,WAAW,CAAE,EAPO,C,CA2HxB,GAAM9B,CAAAA,MAAM,CAAG8C,wBAAWC,MAAX,CAAkB,CAC/BP,MAAM,CAAE,CACNQ,cAAc,CAAE,YADV,CAENC,UAAU,CAAE,QAFN,CAGNC,aAAa,CAAE,KAHT,CAINC,MAAM,CAAE,EAJF,CAKNC,iBAAiB,CAAE,EALb,CADuB,CAQ/BX,cAAc,CAAE,CACdY,eAAe,CAAE,SADH,CAEdC,QAAQ,CAAE,QAFI,CARe,CAY/BnC,IAAI,CAAE,CACJoC,KAAK,CAAE,EADH,CAEJJ,MAAM,CAAE,EAFJ,CAGJK,WAAW,CAAE,EAHT,CAZyB,CAiB/BjD,OAAO,CAAE,CACPkD,SAAS,CAAE,EADJ,CAEPC,QAAQ,CAAE,EAFH,CAGP1C,KAAK,CAAEjC,sBAHA,CAIP4E,iBAAiB,CAAE,QAJZ,CAjBsB,CAuB/B1D,YAAY,CAAE,CACZoD,eAAe,CAAE,SADL,CAEZF,MAAM,CAAE,CAFI,CAGZI,KAAK,CAAE,MAHK,CAvBiB,CA4B/BK,IAAI,CAAE,CACJF,QAAQ,CAAE,EADN,CAEJ1C,KAAK,CAAEhC,sBAFH,CAGJ2E,iBAAiB,CAAE,QAHf,CA5ByB,CAiC/BtD,KAAK,CAAE,CACLqD,QAAQ,CAAE,EADL,CAEL1C,KAAK,CAAEjC,sBAFF,CAGL4E,iBAAiB,CAAE,QAHd,CAjCwB,CAsC/B/C,cAAc,CAAE,CACdqC,UAAU,CAAE,YADE,CAEdY,aAAa,CAAE,EAFD,CAtCe,CA0C/BhD,kBAAkB,CAAE,CAClBqC,aAAa,CAAE,KADG,CA1CW,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\">\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/___index.ios.js b/lib/commonjs/ActionSheet/___index.ios.js deleted file mode 100644 index 3e11667..0000000 --- a/lib/commonjs/ActionSheet/___index.ios.js +++ /dev/null @@ -1,2 +0,0 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/___index.ios.tsx";var ActionSheet=function(_React$Component){(0,_inherits2.default)(ActionSheet,_React$Component);function ActionSheet(){(0,_classCallCheck2.default)(this,ActionSheet);return(0,_possibleConstructorReturn2.default)(this,(0,_getPrototypeOf2.default)(ActionSheet).apply(this,arguments));}(0,_createClass2.default)(ActionSheet,[{key:"render",value:function render(){return React.createElement(_reactNative.View,{pointerEvents:this.props.pointerEvents,style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:17}},React.Children.only(this.props.children));}},{key:"showActionSheetWithOptions",value:function showActionSheetWithOptions(dataOptions,onSelect){var cancelButtonIndex=dataOptions.cancelButtonIndex,destructiveButtonIndex=dataOptions.destructiveButtonIndex,options=dataOptions.options,tintColor=dataOptions.tintColor;var iosOptions={cancelButtonIndex:cancelButtonIndex,destructiveButtonIndex:destructiveButtonIndex,options:options,tintColor:tintColor,title:dataOptions.title||undefined,message:dataOptions.message||undefined,anchor:dataOptions.anchor||undefined};_reactNative.ActionSheetIOS.showActionSheetWithOptions(iosOptions,onSelect);}}]);return ActionSheet;}(React.Component);exports.default=ActionSheet; -//# sourceMappingURL=___index.ios.js.map \ No newline at end of file diff --git a/lib/commonjs/ActionSheet/___index.ios.js.map b/lib/commonjs/ActionSheet/___index.ios.js.map deleted file mode 100644 index 79754b0..0000000 --- a/lib/commonjs/ActionSheet/___index.ios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["___index.ios.tsx"],"names":["ActionSheet","props","pointerEvents","flex","React","Children","only","children","dataOptions","onSelect","cancelButtonIndex","destructiveButtonIndex","options","tintColor","iosOptions","title","undefined","message","anchor","ActionSheetIOS","showActionSheetWithOptions","Component"],"mappings":"ktBAAA,oDAEA,yC,gHAWqBA,CAAAA,W,wVACV,CACP,MACE,qBAAC,iBAAD,EAAM,aAAa,CAAE,KAAKC,KAAL,CAAWC,aAAhC,CAA+C,KAAK,CAAE,CAAEC,IAAI,CAAE,CAAR,CAAtD,iDACGC,KAAK,CAACC,QAAN,CAAeC,IAAf,CAAoB,KAAKL,KAAL,CAAWM,QAA/B,CADH,CADF,CAKD,C,8EAE0BC,W,CAAoCC,Q,CAAoB,IAEzEC,CAAAA,iBAFyE,CAEPF,WAFO,CAEzEE,iBAFyE,CAEtDC,sBAFsD,CAEPH,WAFO,CAEtDG,sBAFsD,CAE9BC,OAF8B,CAEPJ,WAFO,CAE9BI,OAF8B,CAErBC,SAFqB,CAEPL,WAFO,CAErBK,SAFqB,CAGjF,GAAMC,CAAAA,UAAiC,CAAG,CACxCJ,iBAAiB,CAAjBA,iBADwC,CAExCC,sBAAsB,CAAtBA,sBAFwC,CAGxCC,OAAO,CAAPA,OAHwC,CAIxCC,SAAS,CAATA,SAJwC,CAMxCE,KAAK,CAAEP,WAAW,CAACO,KAAZ,EAAqBC,SANY,CAOxCC,OAAO,CAAET,WAAW,CAACS,OAAZ,EAAuBD,SAPQ,CAQxCE,MAAM,CAAEV,WAAW,CAACU,MAAZ,EAAsBF,SARU,CAA1C,CAUAG,4BAAeC,0BAAf,CAA0CN,UAA1C,CAAsDL,QAAtD,EACD,C,yBAvBsCL,KAAK,CAACiB,S","sourcesContent":["import * as React from 'react';\n\nimport { ActionSheetIOS, View, ViewProps } from 'react-native';\n\nimport { ActionSheetIOSOptions } from '../types';\n\ninterface Props {\n readonly children: React.ReactNode;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\ntype onSelect = (buttonIndex: number) => void;\n\nexport default class ActionSheet extends React.Component {\n render() {\n return (\n \n {React.Children.only(this.props.children)}\n \n );\n }\n\n showActionSheetWithOptions(dataOptions: ActionSheetIOSOptions, onSelect: onSelect) {\n // ...dataOptions include other keys which use in android and web, thats why `Android-Only options` Crash on IOS\n const { cancelButtonIndex, destructiveButtonIndex, options, tintColor } = dataOptions;\n const iosOptions: ActionSheetIOSOptions = {\n cancelButtonIndex,\n destructiveButtonIndex,\n options,\n tintColor,\n // A null title or message on iOS causes a crash\n title: dataOptions.title || undefined,\n message: dataOptions.message || undefined,\n anchor: dataOptions.anchor || undefined,\n };\n ActionSheetIOS.showActionSheetWithOptions(iosOptions, onSelect);\n }\n}\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js index 6524c91..f81b4c4 100644 --- a/lib/module/ActionSheet/ActionGroup.js +++ b/lib/module/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:72}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators,renderDismissIcon=_this$props.renderDismissIcon,onCancel=_this$props.onCancel;if(!title&&!message&&!renderDismissIcon){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:92}},React.createElement(View,{style:styles.titleContainer,__source:{fileName:_jsxFileName,lineNumber:93}},React.createElement(View,{style:styles.titleTextContainer,__source:{fileName:_jsxFileName,lineNumber:94}},React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:95}},title||' '),renderDismissIcon?renderDismissIcon(onCancel):null),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:98}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:117}});}else{return React.createElement(View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:119}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",accessibilityLabel:options[_i],__source:{fileName:_jsxFileName,lineNumber:152}},_this._renderIconElement(iconSource,color),React.createElement(Text,{style:[styles.text,textStyle,{color:color}],__source:{fileName:_jsxFileName,lineNumber:162}},options[_i])));if(showSeparators&&_i boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\"\n accessibilityLabel={options[i]}>\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["React","StyleSheet","Text","Image","View","ScrollView","findNodeHandle","AccessibilityInfo","Platform","UIManager","TouchableNativeFeedbackSafe","BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","OS","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","renderDismissIcon","onCancel","titleContainer","titleTextContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","buttonStyle","textStyle","autoFocus","optionViews","nativeFeedbackBackground","Ripple","i","defaultColor","push","button","groupContainer","containerStyle","Component","defaultProps","create","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","text","paddingBottom"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\">\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/___index.ios.js b/lib/module/ActionSheet/___index.ios.js deleted file mode 100644 index 19cfd5b..0000000 --- a/lib/module/ActionSheet/___index.ios.js +++ /dev/null @@ -1,2 +0,0 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/___index.ios.tsx";import*as React from'react';import{ActionSheetIOS,View}from'react-native';var ActionSheet=function(_React$Component){_inherits(ActionSheet,_React$Component);function ActionSheet(){_classCallCheck(this,ActionSheet);return _possibleConstructorReturn(this,_getPrototypeOf(ActionSheet).apply(this,arguments));}_createClass(ActionSheet,[{key:"render",value:function render(){return React.createElement(View,{pointerEvents:this.props.pointerEvents,style:{flex:1},__source:{fileName:_jsxFileName,lineNumber:17}},React.Children.only(this.props.children));}},{key:"showActionSheetWithOptions",value:function showActionSheetWithOptions(dataOptions,onSelect){var cancelButtonIndex=dataOptions.cancelButtonIndex,destructiveButtonIndex=dataOptions.destructiveButtonIndex,options=dataOptions.options,tintColor=dataOptions.tintColor;var iosOptions={cancelButtonIndex:cancelButtonIndex,destructiveButtonIndex:destructiveButtonIndex,options:options,tintColor:tintColor,title:dataOptions.title||undefined,message:dataOptions.message||undefined,anchor:dataOptions.anchor||undefined};ActionSheetIOS.showActionSheetWithOptions(iosOptions,onSelect);}}]);return ActionSheet;}(React.Component);export{ActionSheet as default}; -//# sourceMappingURL=___index.ios.js.map \ No newline at end of file diff --git a/lib/module/ActionSheet/___index.ios.js.map b/lib/module/ActionSheet/___index.ios.js.map deleted file mode 100644 index e80ec54..0000000 --- a/lib/module/ActionSheet/___index.ios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["___index.ios.tsx"],"names":["React","ActionSheetIOS","View","ActionSheet","props","pointerEvents","flex","Children","only","children","dataOptions","onSelect","cancelButtonIndex","destructiveButtonIndex","options","tintColor","iosOptions","title","undefined","message","anchor","showActionSheetWithOptions","Component"],"mappings":"gcAAA,MAAO,GAAKA,CAAAA,KAAZ,KAAuB,OAAvB,CAEA,OAASC,cAAT,CAAyBC,IAAzB,KAAgD,cAAhD,C,GAWqBC,CAAAA,W,wRACV,CACP,MACE,qBAAC,IAAD,EAAM,aAAa,CAAE,KAAKC,KAAL,CAAWC,aAAhC,CAA+C,KAAK,CAAE,CAAEC,IAAI,CAAE,CAAR,CAAtD,iDACGN,KAAK,CAACO,QAAN,CAAeC,IAAf,CAAoB,KAAKJ,KAAL,CAAWK,QAA/B,CADH,CADF,CAKD,C,8EAE0BC,W,CAAoCC,Q,CAAoB,IAEzEC,CAAAA,iBAFyE,CAEPF,WAFO,CAEzEE,iBAFyE,CAEtDC,sBAFsD,CAEPH,WAFO,CAEtDG,sBAFsD,CAE9BC,OAF8B,CAEPJ,WAFO,CAE9BI,OAF8B,CAErBC,SAFqB,CAEPL,WAFO,CAErBK,SAFqB,CAGjF,GAAMC,CAAAA,UAAiC,CAAG,CACxCJ,iBAAiB,CAAjBA,iBADwC,CAExCC,sBAAsB,CAAtBA,sBAFwC,CAGxCC,OAAO,CAAPA,OAHwC,CAIxCC,SAAS,CAATA,SAJwC,CAMxCE,KAAK,CAAEP,WAAW,CAACO,KAAZ,EAAqBC,SANY,CAOxCC,OAAO,CAAET,WAAW,CAACS,OAAZ,EAAuBD,SAPQ,CAQxCE,MAAM,CAAEV,WAAW,CAACU,MAAZ,EAAsBF,SARU,CAA1C,CAUAjB,cAAc,CAACoB,0BAAf,CAA0CL,UAA1C,CAAsDL,QAAtD,EACD,C,yBAvBsCX,KAAK,CAACsB,S,SAA1BnB,W","sourcesContent":["import * as React from 'react';\n\nimport { ActionSheetIOS, View, ViewProps } from 'react-native';\n\nimport { ActionSheetIOSOptions } from '../types';\n\ninterface Props {\n readonly children: React.ReactNode;\n readonly pointerEvents?: ViewProps['pointerEvents'];\n}\n\ntype onSelect = (buttonIndex: number) => void;\n\nexport default class ActionSheet extends React.Component {\n render() {\n return (\n \n {React.Children.only(this.props.children)}\n \n );\n }\n\n showActionSheetWithOptions(dataOptions: ActionSheetIOSOptions, onSelect: onSelect) {\n // ...dataOptions include other keys which use in android and web, thats why `Android-Only options` Crash on IOS\n const { cancelButtonIndex, destructiveButtonIndex, options, tintColor } = dataOptions;\n const iosOptions: ActionSheetIOSOptions = {\n cancelButtonIndex,\n destructiveButtonIndex,\n options,\n tintColor,\n // A null title or message on iOS causes a crash\n title: dataOptions.title || undefined,\n message: dataOptions.message || undefined,\n anchor: dataOptions.anchor || undefined,\n };\n ActionSheetIOS.showActionSheetWithOptions(iosOptions, onSelect);\n }\n}\n"]} \ No newline at end of file diff --git a/lib/typescript/ActionSheet/___index.ios.d.ts b/lib/typescript/ActionSheet/___index.ios.d.ts deleted file mode 100644 index 033a9f8..0000000 --- a/lib/typescript/ActionSheet/___index.ios.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react'; -import { ViewProps } from 'react-native'; -import { ActionSheetIOSOptions } from '../types'; -interface Props { - readonly children: React.ReactNode; - readonly pointerEvents?: ViewProps['pointerEvents']; -} -declare type onSelect = (buttonIndex: number) => void; -export default class ActionSheet extends React.Component { - render(): JSX.Element; - showActionSheetWithOptions(dataOptions: ActionSheetIOSOptions, onSelect: onSelect): void; -} -export {}; diff --git a/lib/typescript/types.d.ts b/lib/typescript/types.d.ts index 6c541c7..5e810c5 100644 --- a/lib/typescript/types.d.ts +++ b/lib/typescript/types.d.ts @@ -4,7 +4,7 @@ export interface ActionSheetProps { showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void; } export interface ActionSheetIOSOptions { - options: string[]; + options: React.ReactNode[]; title?: string; message?: string; tintColor?: string; diff --git a/src/ActionSheet/ActionGroup.tsx b/src/ActionSheet/ActionGroup.tsx index 27ae718..86a5210 100644 --- a/src/ActionSheet/ActionGroup.tsx +++ b/src/ActionSheet/ActionGroup.tsx @@ -156,10 +156,9 @@ export default class ActionGroup extends React.Component { background={nativeFeedbackBackground} onPress={() => onSelect(i)} style={[styles.button, buttonStyle]} - accessibilityRole="button" - accessibilityLabel={options[i]}> + accessibilityRole="button"> {this._renderIconElement(iconSource, color)} - {options[i]} + {options[i]} ); diff --git a/src/ActionSheet/___index.ios.tsx b/src/ActionSheet/___index.ios.tsx deleted file mode 100644 index b5dc498..0000000 --- a/src/ActionSheet/___index.ios.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import * as React from 'react'; - -import { ActionSheetIOS, View, ViewProps } from 'react-native'; - -import { ActionSheetIOSOptions } from '../types'; - -interface Props { - readonly children: React.ReactNode; - readonly pointerEvents?: ViewProps['pointerEvents']; -} - -type onSelect = (buttonIndex: number) => void; - -export default class ActionSheet extends React.Component { - render() { - return ( - - {React.Children.only(this.props.children)} - - ); - } - - showActionSheetWithOptions(dataOptions: ActionSheetIOSOptions, onSelect: onSelect) { - // ...dataOptions include other keys which use in android and web, thats why `Android-Only options` Crash on IOS - const { cancelButtonIndex, destructiveButtonIndex, options, tintColor } = dataOptions; - const iosOptions: ActionSheetIOSOptions = { - cancelButtonIndex, - destructiveButtonIndex, - options, - tintColor, - // A null title or message on iOS causes a crash - title: dataOptions.title || undefined, - message: dataOptions.message || undefined, - anchor: dataOptions.anchor || undefined, - }; - ActionSheetIOS.showActionSheetWithOptions(iosOptions, onSelect); - } -} diff --git a/src/types.ts b/src/types.ts index 1fbafb3..d1db9c1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -7,7 +7,7 @@ export interface ActionSheetProps { // for iOS export interface ActionSheetIOSOptions { - options: string[]; + options: React.ReactNode[]; title?: string; message?: string; tintColor?: string; From e59f1f1ef9d04a85b97ce2cf90e457e5b49c7d38 Mon Sep 17 00:00:00 2001 From: Dan Gilbert Date: Tue, 24 May 2022 15:41:25 -0500 Subject: [PATCH 11/11] WIP: Support elements as options. --- lib/commonjs/ActionSheet/ActionGroup.js | 2 +- lib/commonjs/ActionSheet/ActionGroup.js.map | 2 +- lib/module/ActionSheet/ActionGroup.js | 2 +- lib/module/ActionSheet/ActionGroup.js.map | 2 +- src/ActionSheet/ActionGroup.tsx | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/commonjs/ActionSheet/ActionGroup.js b/lib/commonjs/ActionSheet/ActionGroup.js index 773e2b3..a0bb7b1 100644 --- a/lib/commonjs/ActionSheet/ActionGroup.js +++ b/lib/commonjs/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableNativeFeedbackSafe=_interopRequireDefault(require("./TouchableNativeFeedbackSafe"));var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=(0,_reactNative.findNodeHandle)(ref);if(reactTag){if(_reactNative.Platform.OS==='android'){_reactNative.UIManager.sendAccessibilityEvent(reactTag,_reactNative.UIManager.AccessibilityEventTypes.typeViewFocused);}else{_reactNative.AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){(0,_inherits2.default)(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(_reactNative.View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:72}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators,renderDismissIcon=_this$props.renderDismissIcon,onCancel=_this$props.onCancel;if(!title&&!message&&!renderDismissIcon){return null;}return React.createElement(_reactNative.View,{__source:{fileName:_jsxFileName,lineNumber:92}},React.createElement(_reactNative.View,{style:styles.titleContainer,__source:{fileName:_jsxFileName,lineNumber:93}},React.createElement(_reactNative.View,{style:styles.titleTextContainer,__source:{fileName:_jsxFileName,lineNumber:94}},React.createElement(_reactNative.Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:95}},title||' '),renderDismissIcon?renderDismissIcon(onCancel):null),!!message&&React.createElement(_reactNative.Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:98}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(_reactNative.Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:117}});}else{return React.createElement(_reactNative.View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:119}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=_TouchableNativeFeedbackSafe.default.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(_TouchableNativeFeedbackSafe.default,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",__source:{fileName:_jsxFileName,lineNumber:152}},_this._renderIconElement(iconSource,color),options[_i]));if(showSeparators&&_i boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\">\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","Platform","OS","UIManager","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","AccessibilityInfo","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","renderDismissIcon","onCancel","titleContainer","titleTextContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","textStyle","autoFocus","optionViews","nativeFeedbackBackground","TouchableNativeFeedbackSafe","Ripple","i","defaultColor","push","groupContainer","containerStyle","React","Component","defaultProps","buttonStyle","StyleSheet","create","button","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","text","paddingBottom"],"mappings":"ktBAAA,oDACA,yCAWA,kG,4GAWA,GAAMA,CAAAA,sBAAsB,CAAG,WAA/B,CACA,GAAMC,CAAAA,sBAAsB,CAAG,WAA/B,CACA,GAAMC,CAAAA,iBAAiB,CAAG,SAA1B,CAMA,GAAMC,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,CAACC,GAAD,CAAiC,CACzD,GAAIA,GAAJ,CAAS,CACP,GAAMC,CAAAA,QAAQ,CAAG,gCAAeD,GAAf,CAAjB,CACA,GAAIC,QAAJ,CAAc,CACZ,GAAIC,sBAASC,EAAT,GAAgB,SAApB,CAA+B,CAE7BC,uBAAUC,sBAAV,CACEJ,QADF,CAGEG,uBAAUE,uBAAV,CAAkCC,eAHpC,EAKD,CAPD,IAOO,CACLC,+BAAkBC,qBAAlB,CAAwCR,QAAxC,EACD,CACF,CACF,CACF,CAhBD,C,GAkBqBS,CAAAA,W,scAoBnBC,mB,CAAsB,SAACC,GAAD,CAA0B,CAC9C,MACE,qBAAC,iBAAD,EAAM,GAAG,cAAeA,GAAxB,CAA+B,KAAK,CAAE,CAACC,MAAM,CAACC,YAAR,CAAsB,MAAKC,KAAL,CAAWC,cAAjC,CAAtC,iDADF,CAGD,C,OAEDC,mB,CAAsB,UAAM,iBAStB,MAAKF,KATiB,CAExBG,KAFwB,aAExBA,KAFwB,CAGxBC,cAHwB,aAGxBA,cAHwB,CAIxBC,OAJwB,aAIxBA,OAJwB,CAKxBC,gBALwB,aAKxBA,gBALwB,CAMxBC,cANwB,aAMxBA,cANwB,CAOxBC,iBAPwB,aAOxBA,iBAPwB,CAQxBC,QARwB,aAQxBA,QARwB,CAW1B,GAAI,CAACN,KAAD,EAAU,CAACE,OAAX,EAAsB,CAACG,iBAA3B,CAA8C,CAC5C,MAAO,KAAP,CACD,CAED,MACE,qBAAC,iBAAD,kDACE,oBAAC,iBAAD,EAAM,KAAK,CAAEV,MAAM,CAACY,cAApB,iDACE,oBAAC,iBAAD,EAAM,KAAK,CAAEZ,MAAM,CAACa,kBAApB,iDACE,oBAAC,iBAAD,EAAM,KAAK,CAAE,CAACb,MAAM,CAACK,KAAR,CAAeC,cAAf,CAAb,iDAA8CD,KAAK,EAAI,GAAvD,CADF,CAEGK,iBAAiB,CAAGA,iBAAiB,CAACC,QAAD,CAApB,CAAiC,IAFrD,CADF,CAKG,CAAC,CAACJ,OAAF,EAAa,oBAAC,iBAAD,EAAM,KAAK,CAAE,CAACP,MAAM,CAACO,OAAR,CAAiBC,gBAAjB,CAAb,iDAAkDD,OAAlD,CALhB,CADF,CAQG,CAAC,CAACE,cAAF,EAAoB,MAAKX,mBAAL,CAAyB,OAAzB,CARvB,CADF,CAYD,C,OAEDgB,kB,CAAqB,SAACC,UAAD,CAAqCC,KAArC,CAAuD,IAClEC,CAAAA,SADkE,CACpD,MAAKf,KAD+C,CAClEe,SADkE,CAE1E,GAAI,CAACF,UAAL,CAAiB,CACf,MAAO,KAAP,CACD,CAED,GAAI,MAAOA,CAAAA,UAAP,GAAsB,QAA1B,CAAoC,CAClC,GAAMG,CAAAA,SAAS,CAAG,CAChBlB,MAAM,CAACmB,IADS,CAEhB,MAAKjB,KAAL,CAAWgB,SAFK,CAGhB,CAAEE,SAAS,CAAEH,SAAS,CAAGD,KAAH,CAAWK,SAAjC,CAHgB,CAAlB,CAKA,MAAO,qBAAC,kBAAD,EAAO,YAAY,CAAE,CAArB,CAAwB,MAAM,CAAEN,UAAhC,CAA4C,UAAU,CAAC,SAAvD,CAAiE,KAAK,CAAEG,SAAxE,kDAAP,CACD,CAPD,IAOO,CACL,MAAO,qBAAC,iBAAD,EAAM,KAAK,CAAE,CAAClB,MAAM,CAACmB,IAAR,CAAc,MAAKjB,KAAL,CAAWgB,SAAzB,CAAb,kDAAmDH,UAAnD,CAAP,CACD,CACF,C,OAEDO,kB,CAAqB,UAAM,kBAcrB,MAAKpB,KAdgB,CAEvBqB,OAFuB,cAEvBA,OAFuB,CAGvBC,KAHuB,cAGvBA,KAHuB,CAIvBC,sBAJuB,cAIvBA,sBAJuB,oCAKvBC,gBALuB,CAKvBA,gBALuB,gCAKJzC,iBALI,uBAMvB0C,QANuB,cAMvBA,QANuB,CAOvBC,UAPuB,cAOvBA,UAPuB,CAQvBC,MARuB,cAQvBA,MARuB,CAUvBC,SAVuB,cAUvBA,SAVuB,CAWvBV,SAXuB,cAWvBA,SAXuB,CAYvBW,SAZuB,cAYvBA,SAZuB,CAavBtB,cAbuB,cAavBA,cAbuB,CAezB,GAAMuB,CAAAA,WAA8B,CAAG,EAAvC,CACA,GAAMC,CAAAA,wBAAwB,CAAGC,qCAA4BC,MAA5B,CAC/B,wBAD+B,CAE/B,KAF+B,CAAjC,CAhByB,yBAqBhBC,EArBgB,EAsBvB,GAAMC,CAAAA,YAAY,CAAGjB,SAAS,CAC1BA,SAD0B,CAE1B,CAACU,SAAS,EAAI,EAAd,EAAkBd,KAAlB,EAA2BhC,sBAF/B,CAGA,GAAMgC,CAAAA,KAAK,CAAGoB,EAAC,GAAKX,sBAAN,CAA+BC,gBAA/B,CAAkDW,YAAhE,CACA,GAAMtB,CAAAA,UAAU,CAAGS,KAAK,EAAI,IAAT,CAAgBA,KAAK,CAACY,EAAD,CAArB,CAA2B,IAA9C,CAEAJ,WAAW,CAACM,IAAZ,CACE,oBAAC,oCAAD,EACE,GAAG,CAAEP,SAAS,EAAIK,EAAC,GAAK,CAAnB,CAAuBlD,iBAAvB,CAA2CmC,SADlD,CAEE,GAAG,CAAEe,EAFP,CAGE,YAAY,CAAE,CAHhB,CAIE,UAAU,CAAEH,wBAJd,CAKE,OAAO,CAAE,yBAAMN,CAAAA,QAAQ,CAACS,EAAD,CAAd,EALX,CAOE,iBAAiB,CAAC,QAPpB,kDAQG,MAAKtB,kBAAL,CAAwBC,UAAxB,CAAoCC,KAApC,CARH,CASGO,OAAO,CAACa,EAAD,CATV,CADF,EAcA,GAAI3B,cAAc,EAAI2B,EAAC,CAAGR,UAAU,CAAGC,MAAb,CAAsB,CAAhD,CAAmD,CACjDG,WAAW,CAACM,IAAZ,CAAiB,MAAKxC,mBAAL,CAAyBsC,EAAzB,CAAjB,EACD,CA5CsB,EAqBzB,IAAK,GAAIA,CAAAA,EAAC,CAAGR,UAAb,CAAyBQ,EAAC,CAAGR,UAAU,CAAGC,MAA1C,CAAkDO,EAAC,EAAnD,CAAuD,OAA9CA,EAA8C,EAwBtD,CAED,MAAOJ,CAAAA,WAAP,CACD,C,2FA9GQ,CACP,MACE,qBAAC,iBAAD,EAAM,KAAK,CAAE,CAAChC,MAAM,CAACuC,cAAR,CAAwB,KAAKrC,KAAL,CAAWsC,cAAnC,CAAb,iDACG,KAAKpC,mBAAL,EADH,CAEE,oBAAC,uBAAD,kDAAa,KAAKkB,kBAAL,EAAb,CAFF,CADF,CAMD,C,yBAlBsCmB,KAAK,CAACC,S,8BAA1B7C,W,CACZ8C,Y,CAAe,CACpBtC,KAAK,CAAE,IADa,CAEpBE,OAAO,CAAE,IAFW,CAGpBE,cAAc,CAAE,KAHI,CAIpBQ,SAAS,CAAE,IAJS,CAKpBC,SAAS,CAAE,EALS,CAMpBY,SAAS,CAAE,EANS,CAOpBc,WAAW,CAAE,EAPO,C,CA2HxB,GAAM5C,CAAAA,MAAM,CAAG6C,wBAAWC,MAAX,CAAkB,CAC/BC,MAAM,CAAE,CACNC,cAAc,CAAE,YADV,CAENC,UAAU,CAAE,QAFN,CAGNC,aAAa,CAAE,KAHT,CAINC,MAAM,CAAE,EAJF,CAKNC,iBAAiB,CAAE,EALb,CADuB,CAQ/Bb,cAAc,CAAE,CACdc,eAAe,CAAE,SADH,CAEdC,QAAQ,CAAE,QAFI,CARe,CAY/BnC,IAAI,CAAE,CACJoC,KAAK,CAAE,EADH,CAEJJ,MAAM,CAAE,EAFJ,CAGJK,WAAW,CAAE,EAHT,CAZyB,CAiB/BjD,OAAO,CAAE,CACPkD,SAAS,CAAE,EADJ,CAEPC,QAAQ,CAAE,EAFH,CAGP1C,KAAK,CAAEjC,sBAHA,CAIP4E,iBAAiB,CAAE,QAJZ,CAjBsB,CAuB/B1D,YAAY,CAAE,CACZoD,eAAe,CAAE,SADL,CAEZF,MAAM,CAAE,CAFI,CAGZI,KAAK,CAAE,MAHK,CAvBiB,CA4B/BK,IAAI,CAAE,CACJF,QAAQ,CAAE,EADN,CAEJ1C,KAAK,CAAEhC,sBAFH,CAGJ2E,iBAAiB,CAAE,QAHf,CA5ByB,CAiC/BtD,KAAK,CAAE,CACLqD,QAAQ,CAAE,EADL,CAEL1C,KAAK,CAAEjC,sBAFF,CAGL4E,iBAAiB,CAAE,QAHd,CAjCwB,CAsC/B/C,cAAc,CAAE,CACdqC,UAAU,CAAE,YADE,CAEdY,aAAa,CAAE,EAFD,CAtCe,CA0C/BhD,kBAAkB,CAAE,CAClBqC,aAAa,CAAE,KADG,CA1CW,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n // buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n // style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\">\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file diff --git a/lib/module/ActionSheet/ActionGroup.js b/lib/module/ActionSheet/ActionGroup.js index f81b4c4..05ffafd 100644 --- a/lib/module/ActionSheet/ActionGroup.js +++ b/lib/module/ActionSheet/ActionGroup.js @@ -1,2 +1,2 @@ -import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/danielgilbert/workspace/react-native-action-sheet/src/ActionSheet/ActionGroup.tsx";import*as React from'react';import{StyleSheet,Text,Image,View,ScrollView,findNodeHandle,AccessibilityInfo,Platform,UIManager}from'react-native';import TouchableNativeFeedbackSafe from'./TouchableNativeFeedbackSafe';var BLACK_54PC_TRANSPARENT='#0000008a';var BLACK_87PC_TRANSPARENT='#000000de';var DESTRUCTIVE_COLOR='#d32f2f';var focusViewOnRender=function focusViewOnRender(ref){if(ref){var reactTag=findNodeHandle(ref);if(reactTag){if(Platform.OS==='android'){UIManager.sendAccessibilityEvent(reactTag,UIManager.AccessibilityEventTypes.typeViewFocused);}else{AccessibilityInfo.setAccessibilityFocus(reactTag);}}}};var ActionGroup=function(_React$Component){_inherits(ActionGroup,_React$Component);function ActionGroup(){var _getPrototypeOf2;var _this;_classCallCheck(this,ActionGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(ActionGroup)).call.apply(_getPrototypeOf2,[this].concat(args)));_this._renderRowSeparator=function(key){return React.createElement(View,{key:"separator-"+key,style:[styles.rowSeparator,_this.props.separatorStyle],__source:{fileName:_jsxFileName,lineNumber:72}});};_this._renderTitleContent=function(){var _this$props=_this.props,title=_this$props.title,titleTextStyle=_this$props.titleTextStyle,message=_this$props.message,messageTextStyle=_this$props.messageTextStyle,showSeparators=_this$props.showSeparators,renderDismissIcon=_this$props.renderDismissIcon,onCancel=_this$props.onCancel;if(!title&&!message&&!renderDismissIcon){return null;}return React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:92}},React.createElement(View,{style:styles.titleContainer,__source:{fileName:_jsxFileName,lineNumber:93}},React.createElement(View,{style:styles.titleTextContainer,__source:{fileName:_jsxFileName,lineNumber:94}},React.createElement(Text,{style:[styles.title,titleTextStyle],__source:{fileName:_jsxFileName,lineNumber:95}},title||' '),renderDismissIcon?renderDismissIcon(onCancel):null),!!message&&React.createElement(Text,{style:[styles.message,messageTextStyle],__source:{fileName:_jsxFileName,lineNumber:98}},message)),!!showSeparators&&_this._renderRowSeparator('title'));};_this._renderIconElement=function(iconSource,color){var tintIcons=_this.props.tintIcons;if(!iconSource){return null;}if(typeof iconSource==='number'){var iconStyle=[styles.icon,_this.props.iconStyle,{tintColor:tintIcons?color:undefined}];return React.createElement(Image,{fadeDuration:0,source:iconSource,resizeMode:"contain",style:iconStyle,__source:{fileName:_jsxFileName,lineNumber:117}});}else{return React.createElement(View,{style:[styles.icon,_this.props.iconStyle],__source:{fileName:_jsxFileName,lineNumber:119}},iconSource);}};_this._renderOptionViews=function(){var _this$props2=_this.props,options=_this$props2.options,icons=_this$props2.icons,destructiveButtonIndex=_this$props2.destructiveButtonIndex,_this$props2$destruct=_this$props2.destructiveColor,destructiveColor=_this$props2$destruct===void 0?DESTRUCTIVE_COLOR:_this$props2$destruct,onSelect=_this$props2.onSelect,startIndex=_this$props2.startIndex,length=_this$props2.length,buttonStyle=_this$props2.buttonStyle,textStyle=_this$props2.textStyle,tintColor=_this$props2.tintColor,autoFocus=_this$props2.autoFocus,showSeparators=_this$props2.showSeparators;var optionViews=[];var nativeFeedbackBackground=TouchableNativeFeedbackSafe.Ripple('rgba(180, 180, 180, 1)',false);var _loop=function _loop(_i){var defaultColor=tintColor?tintColor:(textStyle||{}).color||BLACK_87PC_TRANSPARENT;var color=_i===destructiveButtonIndex?destructiveColor:defaultColor;var iconSource=icons!=null?icons[_i]:null;optionViews.push(React.createElement(TouchableNativeFeedbackSafe,{ref:autoFocus&&_i===0?focusViewOnRender:undefined,key:_i,pressInDelay:0,background:nativeFeedbackBackground,onPress:function onPress(){return onSelect(_i);},style:[styles.button,buttonStyle],accessibilityRole:"button",__source:{fileName:_jsxFileName,lineNumber:152}},_this._renderIconElement(iconSource,color),options[_i]));if(showSeparators&&_i boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\">\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file +{"version":3,"sources":["ActionGroup.tsx"],"names":["React","StyleSheet","Text","Image","View","ScrollView","findNodeHandle","AccessibilityInfo","Platform","UIManager","TouchableNativeFeedbackSafe","BLACK_54PC_TRANSPARENT","BLACK_87PC_TRANSPARENT","DESTRUCTIVE_COLOR","focusViewOnRender","ref","reactTag","OS","sendAccessibilityEvent","AccessibilityEventTypes","typeViewFocused","setAccessibilityFocus","ActionGroup","_renderRowSeparator","key","styles","rowSeparator","props","separatorStyle","_renderTitleContent","title","titleTextStyle","message","messageTextStyle","showSeparators","renderDismissIcon","onCancel","titleContainer","titleTextContainer","_renderIconElement","iconSource","color","tintIcons","iconStyle","icon","tintColor","undefined","_renderOptionViews","options","icons","destructiveButtonIndex","destructiveColor","onSelect","startIndex","length","textStyle","autoFocus","optionViews","nativeFeedbackBackground","Ripple","i","defaultColor","push","groupContainer","containerStyle","Component","defaultProps","buttonStyle","create","button","justifyContent","alignItems","flexDirection","height","paddingHorizontal","backgroundColor","overflow","width","marginRight","marginTop","fontSize","textAlignVertical","text","paddingBottom"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n StyleSheet,\n Text,\n Image,\n View,\n ScrollView,\n findNodeHandle,\n AccessibilityInfo,\n Platform,\n UIManager,\n} from 'react-native';\nimport TouchableNativeFeedbackSafe from './TouchableNativeFeedbackSafe';\nimport { ActionSheetOptions } from '../types';\n\ntype Props = ActionSheetOptions & {\n tintIcons: boolean | null;\n onSelect: (i: number) => boolean;\n onCancel: () => void;\n startIndex: number;\n length: number;\n};\n\nconst BLACK_54PC_TRANSPARENT = '#0000008a';\nconst BLACK_87PC_TRANSPARENT = '#000000de';\nconst DESTRUCTIVE_COLOR = '#d32f2f';\n\n/**\n * Can be used as a React ref for a component to auto-focus for accessibility on render.\n * @param ref The component to auto-focus\n */\nconst focusViewOnRender = (ref: React.Component | null) => {\n if (ref) {\n const reactTag = findNodeHandle(ref);\n if (reactTag) {\n if (Platform.OS === 'android') {\n // @ts-ignore: sendAccessibilityEvent is missing from @types/react-native\n UIManager.sendAccessibilityEvent(\n reactTag,\n // @ts-ignore: AccessibilityEventTypes is missing from @types/react-native\n UIManager.AccessibilityEventTypes.typeViewFocused\n );\n } else {\n AccessibilityInfo.setAccessibilityFocus(reactTag);\n }\n }\n }\n};\n\nexport default class ActionGroup extends React.Component {\n static defaultProps = {\n title: null,\n message: null,\n showSeparators: false,\n tintIcons: true,\n iconStyle: {},\n textStyle: {},\n buttonStyle: {},\n };\n\n render() {\n return (\n \n {this._renderTitleContent()}\n {this._renderOptionViews()}\n \n );\n }\n\n _renderRowSeparator = (key: string | number) => {\n return (\n \n );\n };\n\n _renderTitleContent = () => {\n const {\n title,\n titleTextStyle,\n message,\n messageTextStyle,\n showSeparators,\n renderDismissIcon,\n onCancel,\n } = this.props;\n\n if (!title && !message && !renderDismissIcon) {\n return null;\n }\n\n return (\n \n \n \n {title || ' '}\n {renderDismissIcon ? renderDismissIcon(onCancel) : null}\n \n {!!message && {message}}\n \n {!!showSeparators && this._renderRowSeparator('title')}\n \n );\n };\n\n _renderIconElement = (iconSource: React.ReactNode | null, color: string) => {\n const { tintIcons } = this.props;\n if (!iconSource) {\n return null;\n }\n\n if (typeof iconSource === 'number') {\n const iconStyle = [\n styles.icon,\n this.props.iconStyle,\n { tintColor: tintIcons ? color : undefined },\n ];\n return ;\n } else {\n return {iconSource};\n }\n };\n\n _renderOptionViews = () => {\n const {\n options,\n icons,\n destructiveButtonIndex,\n destructiveColor = DESTRUCTIVE_COLOR,\n onSelect,\n startIndex,\n length,\n // buttonStyle,\n textStyle,\n tintColor,\n autoFocus,\n showSeparators,\n } = this.props;\n const optionViews: React.ReactNode[] = [];\n const nativeFeedbackBackground = TouchableNativeFeedbackSafe.Ripple(\n 'rgba(180, 180, 180, 1)',\n false\n );\n\n for (let i = startIndex; i < startIndex + length; i++) {\n const defaultColor = tintColor\n ? tintColor\n : (textStyle || {}).color || BLACK_87PC_TRANSPARENT;\n const color = i === destructiveButtonIndex ? destructiveColor : defaultColor;\n const iconSource = icons != null ? icons[i] : null;\n\n optionViews.push(\n onSelect(i)}\n // style={[styles.button, buttonStyle]}\n accessibilityRole=\"button\">\n {this._renderIconElement(iconSource, color)}\n {options[i]}\n \n );\n\n if (showSeparators && i < startIndex + length - 1) {\n optionViews.push(this._renderRowSeparator(i));\n }\n }\n\n return optionViews;\n };\n}\n\nconst styles = StyleSheet.create({\n button: {\n justifyContent: 'flex-start',\n alignItems: 'center',\n flexDirection: 'row',\n height: 56,\n paddingHorizontal: 16,\n },\n groupContainer: {\n backgroundColor: '#ffffff',\n overflow: 'hidden',\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 32,\n },\n message: {\n marginTop: 12,\n fontSize: 14,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n rowSeparator: {\n backgroundColor: '#dddddd',\n height: 1,\n width: '100%',\n },\n text: {\n fontSize: 16,\n color: BLACK_87PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n title: {\n fontSize: 16,\n color: BLACK_54PC_TRANSPARENT,\n textAlignVertical: 'center',\n },\n titleContainer: {\n alignItems: 'flex-start',\n paddingBottom: 10,\n },\n titleTextContainer: {\n flexDirection: 'row',\n },\n});\n"]} \ No newline at end of file diff --git a/src/ActionSheet/ActionGroup.tsx b/src/ActionSheet/ActionGroup.tsx index 86a5210..a45e7ab 100644 --- a/src/ActionSheet/ActionGroup.tsx +++ b/src/ActionSheet/ActionGroup.tsx @@ -129,7 +129,7 @@ export default class ActionGroup extends React.Component { onSelect, startIndex, length, - buttonStyle, + // buttonStyle, textStyle, tintColor, autoFocus, @@ -155,7 +155,7 @@ export default class ActionGroup extends React.Component { pressInDelay={0} background={nativeFeedbackBackground} onPress={() => onSelect(i)} - style={[styles.button, buttonStyle]} + // style={[styles.button, buttonStyle]} accessibilityRole="button"> {this._renderIconElement(iconSource, color)} {options[i]}