import PropTypes from 'prop-types'; import React, { Component } from 'react'; import TextTruncate from 'react-text-truncate'; import ArtistPoster from 'Artist/ArtistPoster'; import HeartRating from 'Components/HeartRating'; import Icon from 'Components/Icon'; import Label from 'Components/Label'; import Link from 'Components/Link/Link'; import { icons, kinds, sizes } from 'Helpers/Props'; import dimensions from 'Styles/Variables/dimensions'; import fonts from 'Styles/Variables/fonts'; import translate from 'Utilities/String/translate'; import AddNewArtistModal from './AddNewArtistModal'; import styles from './AddNewArtistSearchResult.css'; const columnPadding = parseInt(dimensions.artistIndexColumnPadding); const columnPaddingSmallScreen = parseInt(dimensions.artistIndexColumnPaddingSmallScreen); const defaultFontSize = parseInt(fonts.defaultFontSize); const lineHeight = parseFloat(fonts.lineHeight); function calculateHeight(rowHeight, isSmallScreen) { let height = rowHeight - 45; if (isSmallScreen) { height -= columnPaddingSmallScreen; } else { height -= columnPadding; } return height; } class AddNewArtistSearchResult extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isNewAddArtistModalOpen: false }; } componentDidUpdate(prevProps) { if (!prevProps.isExistingArtist && this.props.isExistingArtist) { this.onAddArtistModalClose(); } } // // Listeners onPress = () => { this.setState({ isNewAddArtistModalOpen: true }); }; onAddArtistModalClose = () => { this.setState({ isNewAddArtistModalOpen: false }); }; onMBLinkPress = (event) => { event.stopPropagation(); }; // // Render render() { const { foreignArtistId, artistName, year, disambiguation, artistType, status, overview, ratings, images, isExistingArtist, isSmallScreen } = this.props; const { isNewAddArtistModalOpen } = this.state; const linkProps = isExistingArtist ? { to: `/artist/${foreignArtistId}` } : { onPress: this.onPress }; const endedString = artistType === 'Person' ? 'Deceased' : 'Inactive'; const height = calculateHeight(230, isSmallScreen); return (
{ isSmallScreen ? null : }
{artistName} { !artistName.contains(year) && year ? ({year}) : null } { !!disambiguation && ({disambiguation}) }
{ isExistingArtist ? : null }
{ artistType ? : null } { status === 'ended' ? : null }
); } } AddNewArtistSearchResult.propTypes = { foreignArtistId: PropTypes.string.isRequired, artistName: PropTypes.string.isRequired, year: PropTypes.number, disambiguation: PropTypes.string, artistType: PropTypes.string, status: PropTypes.string.isRequired, overview: PropTypes.string, ratings: PropTypes.object.isRequired, images: PropTypes.arrayOf(PropTypes.object).isRequired, isExistingArtist: PropTypes.bool.isRequired, isSmallScreen: PropTypes.bool.isRequired }; export default AddNewArtistSearchResult;