diff --git a/README.md b/README.md index a7d31d6..944fd6a 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Prop | Description | Type | Default `scrollViewStyle` | Custom style for the `FlatList` component | `object` | `{}` `onSingleTapConfirmed` | Fired after a single tap | `function` `onLongPress` | Fired after a long press | `function` +`imageLoadingIndicatorProps` | Props to be passed to the underlying image `ActivityIndicator` component | `object` | React Native `ActivityIndicator` defaults ## Scroll state and events diff --git a/src/Gallery.js b/src/Gallery.js index 5cc4835..b7a71be 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react'; -import { View, ViewPropTypes } from 'react-native'; +import { View, ViewPropTypes, ActivityIndicator } from 'react-native'; import PropTypes from 'prop-types'; import { createResponder } from './libraries/GestureResponder'; import TransformableImage from './libraries/TransformableImage'; @@ -13,6 +13,7 @@ export default class Gallery extends PureComponent { static propTypes = { ...View.propTypes, images: PropTypes.arrayOf(PropTypes.object), + imageLoadingIndicatorProps: PropTypes.shape(ActivityIndicator.propTypes), initialPage: PropTypes.number, scrollViewStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, pageMargin: PropTypes.number, @@ -225,7 +226,7 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent } = this.props; + const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent, imageLoadingIndicatorProps } = this.props; return ( { @@ -240,6 +241,7 @@ export default class Gallery extends PureComponent { errorComponent={errorComponent} imageComponent={imageComponent} image={pageData} + imageLoadingIndicatorProps={imageLoadingIndicatorProps} /> ); } diff --git a/src/libraries/ActivityIndicator/index.js b/src/libraries/ActivityIndicator/index.js new file mode 100644 index 0000000..b01dc71 --- /dev/null +++ b/src/libraries/ActivityIndicator/index.js @@ -0,0 +1,22 @@ +import React from 'react'; +import {View, ActivityIndicator} from 'react-native'; + +const ActivityIndicatorComponent = (props) => { + return ( + + + + ); +}; + +ActivityIndicatorComponent.propTypes = ActivityIndicator.propTypes; + +export default ActivityIndicatorComponent; diff --git a/src/libraries/TransformableImage/index.js b/src/libraries/TransformableImage/index.js index 8ff8469..34a3ba6 100644 --- a/src/libraries/TransformableImage/index.js +++ b/src/libraries/TransformableImage/index.js @@ -1,7 +1,8 @@ import React, { PureComponent } from 'react'; -import { View, Text, Image, ViewPropTypes } from 'react-native'; +import { View, Text, Image, ViewPropTypes, ActivityIndicator } from 'react-native'; import PropTypes from 'prop-types'; import ViewTransformer from '../ViewTransformer'; +import ImageLoadingIndicator from '../ActivityIndicator'; export default class TransformableImage extends PureComponent { static propTypes = { @@ -22,7 +23,8 @@ export default class TransformableImage extends PureComponent { onViewTransformed: PropTypes.func, imageComponent: PropTypes.func, resizeMode: PropTypes.string, - errorComponent: PropTypes.func + errorComponent: PropTypes.func, + imageLoadingIndicatorProps: PropTypes.shape(ActivityIndicator.propTypes), }; static defaultProps = { @@ -142,7 +144,7 @@ export default class TransformableImage extends PureComponent { render () { const { imageDimensions, viewWidth, viewHeight, error, keyAccumulator, imageLoaded } = this.state; - const { style, image, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed } = this.props; + const { style, image, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed, imageLoadingIndicatorProps } = this.props; let maxScale = 1; let contentAspectRatio; @@ -175,21 +177,24 @@ export default class TransformableImage extends PureComponent { const content = imageComponent ? imageComponent(imageProps, imageDimensions) : ; return ( - - { error ? this.renderError() : content } - + + + { error ? this.renderError() : content } + + {!imageLoaded && } + ); } }