import * as React from 'react'; import { Component, Styles, Text, Types, View } from 'reactxp'; import ImageView from './ImageView'; const styles = { container: Styles.createViewStyle({ flexDirection: 'row', alignItems: 'center', }), caption: { base: Styles.createTextStyle({ fontFamily: 'Open Sans', fontSize: 13, fontWeight: '600', color: 'rgb(255, 255, 255, 0.4)', }), hovered: Styles.createTextStyle({ color: 'rgb(255, 255, 255)', }), }, }; interface IProps { onToggle?: (isOpen: boolean) => void; defaultOpen?: boolean; children: string; style?: Types.ViewStyleRuleSet | Types.ViewStyleRuleSet[]; } interface IState { isHovered: boolean; isOpen: boolean; } export default class ConnectionInfoDisclosure extends Component { constructor(props: IProps) { super(props); this.state = { isHovered: false, isOpen: props.defaultOpen === true, }; } public render() { const tintColor = this.state.isHovered ? 'rgb(255, 255, 255)' : 'rgb(255, 255, 255, 0.4)'; return ( {this.props.children} ); } private onMouseEnter = () => { this.setState({ isHovered: true }); }; private onMouseLeave = () => { this.setState({ isHovered: false }); }; private onToggle = () => { this.setState( (state) => ({ ...state, isOpen: !state.isOpen, }), () => { if (this.props.onToggle) { this.props.onToggle(this.state.isOpen); } }, ); }; }