mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-29 15:50:28 +01:00
88 lines
2.3 KiB
JavaScript
88 lines
2.3 KiB
JavaScript
|
import React, { useContext } from 'react';
|
||
|
import PropTypes from 'prop-types';
|
||
|
import classnames from 'classnames';
|
||
|
|
||
|
import {
|
||
|
Icon,
|
||
|
IconName,
|
||
|
IconSize,
|
||
|
} from '../../../components/component-library';
|
||
|
import { IconColor } from '../../../helpers/constants/design-system';
|
||
|
import UrlIcon from '../../../components/ui/url-icon';
|
||
|
import { I18nContext } from '../../../contexts/i18n';
|
||
|
|
||
|
export default function SelectedToken({
|
||
|
onClick,
|
||
|
onClose,
|
||
|
selectedToken,
|
||
|
testId,
|
||
|
}) {
|
||
|
const t = useContext(I18nContext);
|
||
|
const hasIcon = selectedToken?.iconUrl && selectedToken?.symbol;
|
||
|
|
||
|
const onKeyUp = (e) => {
|
||
|
if (e.key === 'Escape') {
|
||
|
onClose();
|
||
|
} else if (e.key === 'Enter') {
|
||
|
onClick(e);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return (
|
||
|
<div
|
||
|
className={classnames(
|
||
|
'dropdown-search-list',
|
||
|
'dropdown-search-list__selector-closed-container',
|
||
|
'dropdown-input-pair__selector--closed',
|
||
|
)}
|
||
|
data-testid="dropdown-search-list"
|
||
|
tabIndex="0"
|
||
|
onClick={onClick}
|
||
|
onKeyUp={onKeyUp}
|
||
|
>
|
||
|
<div className="dropdown-search-list__selector-closed">
|
||
|
{hasIcon && (
|
||
|
<UrlIcon
|
||
|
url={selectedToken.iconUrl}
|
||
|
className="dropdown-search-list__selector-closed-icon"
|
||
|
name={selectedToken?.symbol}
|
||
|
/>
|
||
|
)}
|
||
|
<div
|
||
|
className={classnames('dropdown-search-list__labels', {
|
||
|
'dropdown-search-list__labels--with-icon': hasIcon,
|
||
|
})}
|
||
|
>
|
||
|
<div className="dropdown-search-list__item-labels">
|
||
|
<span
|
||
|
data-testid={testId}
|
||
|
className={classnames(
|
||
|
'dropdown-search-list__closed-primary-label',
|
||
|
{
|
||
|
'dropdown-search-list__select-default':
|
||
|
!selectedToken?.symbol,
|
||
|
},
|
||
|
)}
|
||
|
>
|
||
|
{selectedToken?.symbol || t('swapSelectAToken')}
|
||
|
</span>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<Icon
|
||
|
name={IconName.ArrowDown}
|
||
|
size={IconSize.Xs}
|
||
|
marginRight={3}
|
||
|
color={IconColor.iconAlternative}
|
||
|
/>
|
||
|
</div>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
SelectedToken.propTypes = {
|
||
|
onClick: PropTypes.func.isRequired,
|
||
|
onClose: PropTypes.func.isRequired,
|
||
|
selectedToken: PropTypes.object.isRequired,
|
||
|
testId: PropTypes.string,
|
||
|
};
|