import React, { useEffect, useRef } from 'react'; import classnames from 'classnames'; import PropTypes from 'prop-types'; import { AlignItems, IconColor, BorderRadius, Color, Size, JustifyContent, TextColor, BackgroundColor, BlockSize, Display, } from '../../../helpers/constants/design-system'; import { AvatarNetwork, ButtonIcon, Text, IconName, Box, } from '../../component-library'; import { useI18nContext } from '../../../hooks/useI18nContext'; import { getAvatarNetworkColor } from '../../../helpers/utils/accounts'; import Tooltip from '../../ui/tooltip/tooltip'; const MAXIMUM_CHARACTERS_WITHOUT_TOOLTIP = 20; export const NetworkListItem = ({ name, iconSrc, selected = false, focus = true, onClick, onDeleteClick, }) => { const t = useI18nContext(); const networkRef = useRef(); useEffect(() => { if (networkRef.current && focus) { networkRef.current.focus(); } }, [networkRef, focus]); return ( {selected && ( )} { e.stopPropagation(); onClick(); }} color={TextColor.textDefault} backgroundColor={BackgroundColor.transparent} ellipsis > {name.length > MAXIMUM_CHARACTERS_WITHOUT_TOOLTIP ? ( {name} ) : ( name )} {onDeleteClick ? ( { e.stopPropagation(); onDeleteClick(); }} /> ) : null} ); }; NetworkListItem.propTypes = { /** * The name of the network */ name: PropTypes.string.isRequired, /** * Path to the Icon image */ iconSrc: PropTypes.string, /** * Represents if the network item is selected */ selected: PropTypes.bool, /** * Executes when the item is clicked */ onClick: PropTypes.func.isRequired, /** * Executes when the delete icon is clicked */ onDeleteClick: PropTypes.func, /** * Represents if the network item should be keyboard selected */ focus: PropTypes.bool, };