UNPKG

react-native-lightbox-v2

Version:

Images etc in Full Screen Lightbox Popovers for React Native

126 lines (96 loc) 4.67 kB
# react-native-lightbox-v2 👀 0.9.0 is coming! > *Fork this project to do some updates, because the original library seems to be out of maintenance!* > *Thanks Joel Arvidsson* ## Installation *I changed the name in order to publish to npm, it is not actually a new version, it just fixed some problems based on the original!* ```shell yarn add react-native-lightbox-v2 ``` ## Usage > Note: react-native-lightbox-v2 will no longer support navigator after version 0.9.0. `navigator` property is optional but recommended on iOS, see next section for `Navigator` configuration. ```js import Lightbox from 'react-native-lightbox-v2'; const LightboxView = ({ navigator }) => ( <Lightbox navigator={navigator}> <Image style={{ height: 300 }} source={{ uri: 'http://knittingisawesome.com/wp-content/uploads/2012/12/cat-wearing-a-reindeer-hat1.jpg' }} /> </Lightbox> ); ``` ### can long press to save image? `longPressCallback` can resolve it! ```js const uri = 'http://knittingisawesome.com/wp-content/uploads/2012/12/cat-wearing-a-reindeer-hat1.jpg' const longPress = (uri) => { CameraRoll.saveToCameraRoll(uri) } <Lightbox longPressCallback={() => longPress(uri)}> <Image style={{ height: 300 }} source={{ uri }} /> </Lightbox> ``` ### Navigator setup/Android support > Note: react-native-lightbox-v2 will no longer support navigator after version 0.9.0. For android support you must pass a reference to a `Navigator` since it does not yet have the `Modal` component and is not on the official todo list. See the `Example` project for a complete example. ```js const renderScene = (route, navigator) => { const Component = route.component; return ( <Component navigator={navigator} route={route} {...route.passProps} /> ); }; const MyApp = () => ( <Navigator ref="navigator" style={{ flex: 1 }} renderScene={renderScene} initialRoute={{ component: LightboxView, }} /> ); ``` ## Properties | Prop | Type | Description | |---|---|---| |**`activeProps`**|`object`|Optional set of props applied to the content component when in lightbox mode. Usable for applying custom styles or higher resolution image source.| |**`renderHeader(close)`**|`function`|Custom header instead of default with X button| |**`renderContent`**|`function`|Custom lightbox content instead of default child content| |**`renderItem(open)`**|`function`|Custom content instead of default child content| |**`willClose`**|`function`|Triggered before lightbox is closed| |**`onClose`**|`function`|Triggered when lightbox is closed| |**`onOpen`**|`function`|Triggered when lightbox is opened| |**`didOpen`**|`function`|Triggered after lightbox is opened| |**`onLongPress`**|`function`|Triggered after lightbox is long pressed| |**`onLayout`**|`function`|Triggered after lightbox layout complete| |**`doubleTapCallback`**|`function`|Triggered after double taped| |**`doubleTapZoomEnabled`**|`boolean`|Enable double-tap to zoom , defaults to true| |**`doubleTapGapTimer`**|`number`|Determine the time interval of double-tap, defaults 500ms| |**`longPressGapTimer`**|`number`|Determine the time interval of long-press, defaults 2000ms| |**`longPressCallback`**|`function`|Triggered after the content is long pressed| |**`doubleTapZoomToCenter`**|`boolean`|Zoom to center when double-tap trigger| |**`doubleTapMaxZoom`**|`number`|Maximum magnification factor, defaults to 2| |**`doubleTapZoomStep`**|`number`|The zoom ratio of each double-tap, defaults to 0.5| |**`underlayColor`**|`string`|Color of touchable background, defaults to `black`| |**`backgroundColor`**|`string`|Color of lightbox background, defaults to `black`| |**`swipeToDismiss`**|`bool`|Enables gestures to dismiss the fullscreen mode by swiping up or down, defaults to `true`.| |**`disabled`**|`bool`|disable the lightbox. defaults to `false`.| |**`style`**|`object`|lightbox view wrapper's style.| |**`dragDismissThreshold`**|`number`|threshold distance for sliding exit. defaults to `150`.| |**`modalProps`**|`object`|any other modal props you need. defaults to `{}`.| |**`useNativeDriver`**|`bool`|wether use native driver. defaults to `false`.| |**`springConfig`**|`object`|[`Animated.spring`](https://facebook.github.io/react-native/docs/animations.html) configuration, defaults to `{ tension: 30, friction: 7 }`.| ## Demo ![Demo](https://cloud.githubusercontent.com/assets/378279/9074360/16eac5d6-3b09-11e5-90af-a69980e9f4be.gif) ## Example Check full example in the `Example` folder. ## Changelog [Changelog](./CHANGELOG.md) ## License [MIT License](http://opensource.org/licenses/mit-license.html). © Joel Arvidsson