1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-22 18:00:18 +01:00
metamask-extension/ui/components/multichain/nft-item/nft-item.js
Binij Shrestha ceadfacb21
Fix/18884 migrate avatar network (#19079)
* 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>
2023-07-24 11:15:33 -07:00

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