import React, { PureComponent } from 'react'; import { Animated, Easing, Switch, Text, TouchableWithoutFeedback, View } from 'react-native'; import PropTypes from 'prop-types'; import Touch from '../../utils/touch'; import { CustomIcon } from '../../lib/Icons'; import Check from '../../containers/Check'; import I18n from '../../i18n'; import { SWITCH_TRACK_COLOR, themes } from '../../constants/colors'; import styles from './styles'; const ANIMATION_DURATION = 200; const ANIMATION_PROPS = { duration: ANIMATION_DURATION, easing: Easing.inOut(Easing.quad), useNativeDriver: true }; export default class DirectoryOptions extends PureComponent { static propTypes = { type: PropTypes.string, globalUsers: PropTypes.bool, isFederationEnabled: PropTypes.bool, close: PropTypes.func, changeType: PropTypes.func, toggleWorkspace: PropTypes.func, theme: PropTypes.string }; constructor(props) { super(props); this.animatedValue = new Animated.Value(0); } componentDidMount() { Animated.timing(this.animatedValue, { toValue: 1, ...ANIMATION_PROPS }).start(); } close = () => { const { close } = this.props; Animated.timing(this.animatedValue, { toValue: 0, ...ANIMATION_PROPS }).start(() => close()); }; renderItem = itemType => { const { changeType, type: propType, theme } = this.props; let text = 'Users'; let icon = 'user'; if (itemType === 'channels') { text = 'Channels'; icon = 'channel-public'; } if (itemType === 'teams') { text = 'Teams'; icon = 'teams'; } return ( changeType(itemType)} style={styles.dropdownItemButton} theme={theme}> {I18n.t(text)} {propType === itemType ? : null} ); }; render() { const translateY = this.animatedValue.interpolate({ inputRange: [0, 1], outputRange: [-326, 0] }); const { globalUsers, toggleWorkspace, isFederationEnabled, theme } = this.props; const backdropOpacity = this.animatedValue.interpolate({ inputRange: [0, 1], outputRange: [0, themes[theme].backdropOpacity] }); return ( <> {I18n.t('Search_by')} {this.renderItem('channels')} {this.renderItem('users')} {this.renderItem('teams')} {isFederationEnabled ? ( <> {I18n.t('Search_global_users')} {I18n.t('Search_global_users_description')} ) : null} ); } }