From 0bb9f92aeb66c4b05a151bf86818ab2d386a7732 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Tue, 9 Mar 2021 10:21:41 -0800 Subject: Added new component --- src/components/suggestedPeople/BadgesDropdown.tsx | 149 ++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 src/components/suggestedPeople/BadgesDropdown.tsx (limited to 'src') diff --git a/src/components/suggestedPeople/BadgesDropdown.tsx b/src/components/suggestedPeople/BadgesDropdown.tsx new file mode 100644 index 00000000..cd0d20cc --- /dev/null +++ b/src/components/suggestedPeople/BadgesDropdown.tsx @@ -0,0 +1,149 @@ +import {useNavigation} from '@react-navigation/native'; +import React, {useEffect, useState} from 'react'; +import {Image, StyleSheet} from 'react-native'; +import {TouchableOpacity} from 'react-native-gesture-handler'; +import LinearGradient from 'react-native-linear-gradient'; +import Animated, {Easing} from 'react-native-reanimated'; +import {UniversityBadge} from 'src/types'; +import {UniversityIcon} from '..'; +import {normalize, SCREEN_WIDTH} from '../../utils'; + +interface BadgesDropdownProps { + localBadges: { + badge: UniversityBadge; + img: string; + }[]; +} + +const BadgesDropdown: React.FC = ({localBadges}) => { + const [displayBadges, setDisplayBadges] = useState(false); + let [top, setTop] = useState[]>([]); + const navigation = useNavigation(); + + useEffect(() => { + const defineBadgePositions = () => { + let localTop: Animated.Value[] = []; + localBadges.forEach(() => { + localTop.push(new Animated.Value(0)); + }); + setTop(localTop); + }; + defineBadgePositions(); + }, []); + + const animate = () => { + for (let i = 0; i < localBadges.length; i++) { + if (top) { + Animated.timing(top[i], { + toValue: i * 40 + 50, + duration: 500, + easing: Easing.linear, + }).start(); + } + } + }; + + const animateBack = () => { + for (let i = 0; i < localBadges.length; i++) { + if (top) { + Animated.timing(top[i], { + toValue: 0, + duration: 500, + easing: Easing.linear, + }).start(); + } + } + }; + return ( + + { + setDisplayBadges(!displayBadges); + if (displayBadges) { + animate(); + } else { + animateBack(); + } + }}> + + + {localBadges && + localBadges.map(({badge, img}, index) => ( + + { + navigation.navigate('MutualBadgeHolders', { + badge_id: badge.id, + badge_title: badge.name, + }); + }}> + + + + + + ))} + + ); +}; + +const styles = StyleSheet.create({ + badgeBackground: { + position: 'absolute', + width: '100%', + height: '100%', + borderRadius: 50, + borderColor: 'transparent', + borderWidth: 1, + alignSelf: 'center', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + badgesContainer: { + flexDirection: 'column', + justifyContent: 'space-between', + alignItems: 'center', + width: 38, + left: '5%', + paddingBottom: '2%', + }, + badgeButton: { + width: 30, + height: 30, + borderRadius: 15, + }, + animatedBadgeView: {position: 'absolute'}, + universityIconContainer: { + width: normalize(31), + height: normalize(38), + }, +}); + +export default BadgesDropdown; -- cgit v1.2.3-70-g09d2