1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-23 02:10:12 +01:00
metamask-extension/ui/pages/swaps/selected-token/selected-token.js
2023-06-15 20:17:21 +02:00

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,
};