mirror of
https://github.com/status-im/react-native-image-viewing.git
synced 2026-08-31 11:51:06 +00:00
59 lines
1.2 KiB
TypeScript
59 lines
1.2 KiB
TypeScript
/**
|
|||
|
|
* Copyright (c) JOB TODAY S.A. and its affiliates.
|
||
|
|
*
|
||
|
|
* This source code is licensed under the MIT license found in the
|
||
|
|
* LICENSE file in the root directory of this source tree.
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
|
||
|
|
import React from "react";
|
||
|
|
import { Image, ScrollView, StyleSheet, TouchableOpacity } from "react-native";
|
||
|
|
|
||
|
|
type Props = {
|
||
|
|
images: string[];
|
||
|
|
onPress: (index: number) => void;
|
||
|
|
shift?: number;
|
||
|
|
};
|
||
|
|
|
||
|
|
const IMAGE_WIDTH = 120;
|
||
|
|
const IMAGE_HEIGH = 120;
|
||
|
|
|
||
|
|
const ImageList = ({ images, shift = 0, onPress }: Props) => (
|
||
|
|
<ScrollView
|
||
|
|
horizontal
|
||
|
|
style={styles.root}
|
||
|
|
contentOffset={{ x: shift * IMAGE_WIDTH, y: 0 }}
|
||
|
|
contentContainerStyle={styles.container}
|
||
|
|
>
|
||
|
|
{images.map((imageUrl, index) => (
|
||
|
|
<TouchableOpacity
|
||
|
|
style={styles.button}
|
||
|
|
key={`${imageUrl}_${index}`}
|
||
|
|
activeOpacity={0.8}
|
||
|
|
onPress={() => onPress(index)}
|
||
|
|
>
|
||
|
|
<Image source={{ uri: imageUrl }} style={styles.image} />
|
||
|
|
</TouchableOpacity>
|
||
|
|
))}
|
||
|
|
</ScrollView>
|
||
|
|
);
|
||
|
|
|
||
|
|
const styles = StyleSheet.create({
|
||
|
|
root: { flexGrow: 0 },
|
||
|
|
container: {
|
||
|
|
flex: 0,
|
||
|
|
paddingLeft: 10,
|
||
|
|
marginBottom: 10
|
||
|
|
},
|
||
|
|
button: {
|
||
|
|
marginRight: 10
|
||
|
|
},
|
||
|
|
image: {
|
||
|
|
width: IMAGE_WIDTH,
|
||
|
|
height: IMAGE_HEIGH,
|
||
|
|
borderRadius: 10
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
export default ImageList;
|