From f1830b4e48887014d3561ff359f323635a25bc71 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Wed, 26 May 2021 17:44:05 -0700 Subject: Move dropdown to legacy --- .../suggestedPeople/legacy/BadgesDropdown.tsx | 130 +++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/components/suggestedPeople/legacy/BadgesDropdown.tsx (limited to 'src/components/suggestedPeople/legacy') diff --git a/src/components/suggestedPeople/legacy/BadgesDropdown.tsx b/src/components/suggestedPeople/legacy/BadgesDropdown.tsx new file mode 100644 index 00000000..267355f3 --- /dev/null +++ b/src/components/suggestedPeople/legacy/BadgesDropdown.tsx @@ -0,0 +1,130 @@ +import React, {useEffect, useState} from 'react'; +import {ImageSourcePropType, StyleSheet} from 'react-native'; +import {TouchableOpacity} from 'react-native-gesture-handler'; +import Animated, {Easing} from 'react-native-reanimated'; +import {BadgeIcon, UniversityIcon} from '../..'; +import {UniversityBadge, UniversityType} from '../../../types'; +import {normalize} from '../../../utils'; +import UniversityIconClicked from '../UniversityIconClicked'; + +interface BadgesDropdownProps { + university: UniversityType; + localBadges: { + badge: UniversityBadge; + img: ImageSourcePropType; + }[]; +} + +const BadgesDropdown: React.FC = ({ + university, + localBadges, +}) => { + // Used to toggle between dropdown being displayed and not + const [displayBadges, setDisplayBadges] = useState(false); + + // Determines the absolute position of the individual badges [0, i * 40] + let [top, setTop] = useState[]>([]); + + useEffect(() => { + // Initialize position of badges to 0 + const defineBadgePositions = () => { + let localTop: Animated.Value[] = []; + localBadges.forEach(() => { + localTop.push(new Animated.Value(0)); + }); + setTop(localTop); + }; + defineBadgePositions(); + }, []); + + // Displays badges dropdown by updating top [state] for every badge + const animate = () => { + for (let i = 0; i < localBadges?.length; i++) { + if (top) { + Animated.timing(top[i], { + toValue: i * 40 + 50, + duration: 150, + easing: Easing.linear, + }).start(); + } + } + }; + + // Draws back displayed badges by setting top [state] to 0 for every badge + const animateBack = () => { + for (let i = 0; i < localBadges?.length; i++) { + if (top) { + Animated.timing(top[i], { + toValue: 0, + duration: 150, + easing: Easing.linear, + }).start(); + } + } + }; + + return ( + + { + const updatedBadges = !displayBadges; + setDisplayBadges(updatedBadges); + if (updatedBadges) { + animate(); + } else { + animateBack(); + } + }}> + {displayBadges ? ( + + ) : ( + + )} + + {localBadges && + localBadges.map(({badge, img}, index) => ( + + + + ))} + + ); +}; + +const styles = StyleSheet.create({ + badgesContainer: { + flexDirection: 'column', + justifyContent: 'space-between', + alignItems: 'center', + width: 38, + left: '5%', + paddingBottom: '2%', + }, + animatedBadgeView: { + position: 'absolute', + }, + universityIconContainer: { + width: normalize(31), + height: normalize(38), + }, +}); + +export default BadgesDropdown; -- cgit v1.2.3-70-g09d2