import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; import episodeEntities from 'Album/episodeEntities'; import Button from 'Components/Link/Button'; import ModalContent from 'Components/Modal/ModalContent'; import ModalHeader from 'Components/Modal/ModalHeader'; import ModalBody from 'Components/Modal/ModalBody'; import ModalFooter from 'Components/Modal/ModalFooter'; import MonitorToggleButton from 'Components/MonitorToggleButton'; import EpisodeSummaryConnector from './Summary/EpisodeSummaryConnector'; import AlbumHistoryConnector from './History/AlbumHistoryConnector'; import EpisodeSearchConnector from './Search/EpisodeSearchConnector'; import styles from './EpisodeDetailsModalContent.css'; const tabs = [ 'details', 'history', 'search' ]; class EpisodeDetailsModalContent extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { selectedTab: props.selectedTab }; } // // Listeners onTabSelect = (index, lastIndex) => { this.setState({ selectedTab: tabs[index] }); } // // Render render() { const { albumId, episodeEntity, artistId, artistName, nameSlug, albumLabel, artistMonitored, episodeTitle, releaseDate, monitored, isSaving, showOpenArtistButton, startInteractiveSearch, onMonitorAlbumPress, onModalClose } = this.props; const artistLink = `/artist/${nameSlug}`; return ( {artistName} - {episodeTitle} Details History Search { showOpenArtistButton && } ); } } EpisodeDetailsModalContent.propTypes = { albumId: PropTypes.number.isRequired, episodeEntity: PropTypes.string.isRequired, artistId: PropTypes.number.isRequired, artistName: PropTypes.string.isRequired, nameSlug: PropTypes.string.isRequired, artistMonitored: PropTypes.bool.isRequired, releaseDate: PropTypes.string.isRequired, albumLabel: PropTypes.arrayOf(PropTypes.string).isRequired, episodeTitle: PropTypes.string.isRequired, monitored: PropTypes.bool.isRequired, isSaving: PropTypes.bool, showOpenArtistButton: PropTypes.bool, selectedTab: PropTypes.string.isRequired, startInteractiveSearch: PropTypes.bool.isRequired, onMonitorAlbumPress: PropTypes.func.isRequired, onModalClose: PropTypes.func.isRequired }; EpisodeDetailsModalContent.defaultProps = { selectedTab: 'details', albumLabel: ['Unknown'], episodeEntity: episodeEntities.EPISODES, startInteractiveSearch: false }; export default EpisodeDetailsModalContent;