import React, { Component, PropTypes } from 'react'; import classNames from 'classnames'; import { isEqual } from 'lodash'; import moment from 'moment'; import Checkbox from 'components/forms/fields/Checkbox'; import ClickableTableRow from 'components/ClickableTableRow'; import Icon from 'components/icons/Icon'; import packInterface from 'interfaces/pack'; const baseClass = 'packs-list-row'; class Row extends Component { static propTypes = { checked: PropTypes.bool, onCheck: PropTypes.func, onSelect: PropTypes.func, pack: packInterface.isRequired, selected: PropTypes.bool, }; shouldComponentUpdate (nextProps) { return !isEqual(this.props, nextProps); } handleChange = (shouldCheck) => { const { onCheck, pack } = this.props; return onCheck(shouldCheck, pack.id); } handleSelect = () => { const { onSelect, pack } = this.props; return onSelect(pack); } renderStatusData = () => { const { disabled } = this.props.pack; const iconClassName = classNames(`${baseClass}__status-icon`, { [`${baseClass}__status-icon--enabled`]: !disabled, [`${baseClass}__status-icon--disabled`]: disabled, }); if (disabled) { return ( Disabled ); } return ( Enabled ); } render () { const { checked, pack, selected } = this.props; const { handleChange, handleSelect, renderStatusData } = this; const updatedTime = moment(pack.updated_at).format('MM/DD/YY'); const rowClass = classNames(baseClass, { [`${baseClass}--selected`]: selected, }); return ( {pack.name} {pack.query_count} {renderStatusData()} {updatedTime} ); } } export default Row;