2024-06-27 23:31:59 +02:00
|
|
|
import { Product } from "@/lib/product"
|
|
|
|
import { ImageBackground, StyleProp, StyleSheet, Text, ViewStyle } from "react-native";
|
|
|
|
import { AnimatedStyle } from "react-native-reanimated";
|
|
|
|
import { View } from "react-native-reanimated/lib/typescript/Animated";
|
|
|
|
|
|
|
|
export type OnProductSelectedFunc = (product : Product) => any;
|
|
|
|
|
|
|
|
type MyStyle = StyleProp<AnimatedStyle<StyleProp<ViewStyle>>>;
|
|
|
|
|
|
|
|
export type ProductTileProps = {
|
|
|
|
product: (Product),
|
|
|
|
onProductSelected?: OnProductSelectedFunc,
|
|
|
|
style?: {
|
|
|
|
tile?: MyStyle,
|
|
|
|
image?: MyStyle,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const FALLBACK_IMAGE = "";
|
|
|
|
|
|
|
|
export function ProductTile ({product, onProductSelected, style} : ProductTileProps) {
|
|
|
|
const src = product.attributes.image || FALLBACK_IMAGE;
|
|
|
|
return (
|
|
|
|
<View style={style?.tile}>
|
|
|
|
<ImageBackground
|
|
|
|
src={src}
|
|
|
|
resizeMode="cover"
|
|
|
|
style={styles.image}
|
|
|
|
>
|
|
|
|
<Text style={styles.text}>{product.attributes.name || `Product ${product.id}`}</Text>
|
2024-06-28 23:53:48 +02:00
|
|
|
<Text style={styles.text}>{ product.pricePerUnit.toString() } / {product.measure.value} {product.measure.unit.symbol} </Text>
|
2024-06-27 23:31:59 +02:00
|
|
|
</ImageBackground>
|
|
|
|
</View>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
const styles = StyleSheet.create({
|
|
|
|
image: {
|
|
|
|
|
|
|
|
},
|
|
|
|
text: {
|
|
|
|
|
|
|
|
},
|
|
|
|
})
|