mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
ceadfacb21
* Migrate AvatarNetwokr fixing error fix textAlign added AvatarNetworkSize NetworkProps extends BaseProps instead of Boxprops omitted children from base, made name required replace deprecated and fix lint * update AvatarNetwork TS * add AvatarNetworkSize test * remove unused size import * Update ui/components/component-library/avatar-network/avatar-network.types.ts Co-authored-by: George Marshall <georgewrmarshall@gmail.com> * fix readme * update to latest box component --------- Co-authored-by: garrettbear <gwhisten@gmail.com> Co-authored-by: George Marshall <georgewrmarshall@gmail.com>
95 lines
2.6 KiB
JavaScript
95 lines
2.6 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import classnames from 'classnames';
|
|
import { useSelector } from 'react-redux';
|
|
import NftDefaultImage from '../../app/nft-default-image/nft-default-image';
|
|
import {
|
|
AvatarNetwork,
|
|
AvatarNetworkSize,
|
|
BadgeWrapper,
|
|
BadgeWrapperAnchorElementShape,
|
|
Box,
|
|
} from '../../component-library';
|
|
import {
|
|
BackgroundColor,
|
|
Display,
|
|
JustifyContent,
|
|
} from '../../../helpers/constants/design-system';
|
|
import { getTestNetworkBackgroundColor } from '../../../selectors';
|
|
|
|
export const NftItem = ({
|
|
alt,
|
|
name,
|
|
src,
|
|
networkName,
|
|
networkSrc,
|
|
tokenId,
|
|
onClick,
|
|
clickable = false,
|
|
}) => {
|
|
const testNetworkBackgroundColor = useSelector(getTestNetworkBackgroundColor);
|
|
return (
|
|
<Box
|
|
className="nft-item__container"
|
|
data-testid="nft-item"
|
|
as="button"
|
|
onClick={onClick}
|
|
>
|
|
<BadgeWrapper
|
|
className={classnames('nft-item__badge-wrapper', {
|
|
'nft-item__badge-wrapper__clickable': clickable,
|
|
})}
|
|
anchorElementShape={BadgeWrapperAnchorElementShape.circular}
|
|
positionObj={{ top: -4, right: -4 }}
|
|
display={Display.Block}
|
|
badge={
|
|
<AvatarNetwork
|
|
className="nft-item__network-badge"
|
|
backgroundColor={testNetworkBackgroundColor}
|
|
data-testid="nft-network-badge"
|
|
size={AvatarNetworkSize.Sm}
|
|
name={networkName}
|
|
src={networkSrc}
|
|
borderWidth={2}
|
|
borderColor={BackgroundColor.backgroundDefault}
|
|
/* We are using BackgroundColor.backgroundDefault here because
|
|
* there is no equivalent BorderColor to get the "cutout" effect
|
|
*/
|
|
/>
|
|
}
|
|
>
|
|
{src ? (
|
|
<Box
|
|
className="nft-item__item nft-item__item-image"
|
|
data-testid="nft-image"
|
|
as="img"
|
|
src={src}
|
|
alt={alt}
|
|
display={Display.Block}
|
|
justifyContent={JustifyContent.center}
|
|
/>
|
|
) : (
|
|
<NftDefaultImage
|
|
className="nft-item__default-image"
|
|
data-testid="nft-default-image"
|
|
name={name}
|
|
tokenId={tokenId}
|
|
clickable={clickable}
|
|
/>
|
|
)}
|
|
</BadgeWrapper>
|
|
</Box>
|
|
);
|
|
};
|
|
|
|
NftItem.propTypes = {
|
|
src: PropTypes.string,
|
|
alt: PropTypes.string.isRequired,
|
|
name: PropTypes.string.isRequired,
|
|
networkName: PropTypes.string.isRequired,
|
|
networkSrc: PropTypes.string.isRequired,
|
|
tokenId: PropTypes.string.isRequired,
|
|
onClick: PropTypes.func,
|
|
clickable: PropTypes.bool,
|
|
};
|