import React from 'react'; import PropTypes from 'prop-types'; import { siteRoot, lang } from '../../utils/constants'; import { Utils } from '../../utils/utils'; import MenuControl from '../menu-control'; import moment from 'moment'; moment.locale(lang); const propTypes = { isItemFreezed: PropTypes.bool.isRequired, onMenuToggleClick: PropTypes.func.isRequired, draft: PropTypes.object.isRequired, }; class DraftListItem extends React.Component { constructor(props) { super(props); this.state = { isMenuControlShow: false, highlight: '', }; } onMouseEnter = () => { if (!this.props.isItemFreezed) { this.setState({ isMenuControlShow: true, highlight: 'tr-highlight' }); } } onMouseLeave = () => { if (!this.props.isItemFreezed) { this.setState({ isMenuControlShow: false, highlight: '' }); } } onMenuToggleClick = (e) => { e.nativeEvent.stopImmediatePropagation(); let draft = this.props.draft; this.props.onMenuToggleClick(e, draft); } render() { let draft = this.props.draft; let repoID = draft.origin_repo_id; let filePath = draft.draft_file_path; let fileName = Utils.getFileName(filePath); let draftUrl = siteRoot + 'lib/' + repoID + '/file' + filePath + '?mode=edit'; let libraryUrl = siteRoot + 'library/' + repoID + '/' + encodeURIComponent(draft.repo_name) + '/' ; let reviewUrl = siteRoot + 'drafts/review/' + draft.review_id + '/'; let localTime = moment.utc(draft.updated_at).toDate(); localTime = moment(localTime).fromNow(); return ( icon {fileName} {draft.repo_name} {(draft.review_id && draft.review_status === 'open') ? #{draft.review_id} : -- } {localTime} { this.props.draft.review_status !== 'open' && } ); } } DraftListItem.propTypes = propTypes; export default DraftListItem;