2018-09-18 20:57:17 -05:00
|
|
|
import React from 'react';
|
2018-09-29 18:32:53 +08:00
|
|
|
import PropTypes from 'prop-types';
|
2019-01-10 16:36:54 +08:00
|
|
|
import { Utils } from '../../utils/utils';
|
2018-09-29 18:32:53 +08:00
|
|
|
|
|
|
|
const propTypes = {
|
|
|
|
item: PropTypes.object.isRequired,
|
|
|
|
onItemClickHandler: PropTypes.func.isRequired,
|
|
|
|
};
|
2018-08-17 12:23:55 +08:00
|
|
|
|
|
|
|
class SearchResultItem extends React.Component {
|
|
|
|
|
|
|
|
onClickHandler = () => {
|
|
|
|
var item = this.props.item;
|
2018-09-18 10:11:37 +08:00
|
|
|
this.props.onItemClickHandler(item);
|
2018-08-17 12:23:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
let item = this.props.item;
|
2019-04-17 18:21:00 +08:00
|
|
|
let className = item.link_content ? 'item-img' : 'lib-item-img';
|
2019-04-12 14:27:19 +08:00
|
|
|
let folderIconUrl = item.link_content ? Utils.getFolderIconUrl(false, 192) : Utils.getDefaultLibIconUrl(true);
|
2019-04-10 18:08:25 +08:00
|
|
|
let fileIconUrl = item.is_dir ? folderIconUrl : Utils.getFileIconUrl(item.name, 192);
|
2018-08-17 12:23:55 +08:00
|
|
|
return (
|
|
|
|
<li className="search-result-item" onClick={this.onClickHandler}>
|
2019-04-12 14:27:19 +08:00
|
|
|
<img className={className} src={fileIconUrl} alt="" />
|
2019-01-10 16:36:54 +08:00
|
|
|
<div className="item-content">
|
2019-03-19 11:39:33 +08:00
|
|
|
<div className="item-name ellipsis">{item.name}</div>
|
|
|
|
<div className="item-link ellipsis">{item.repo_name}/{item.link_content}</div>
|
|
|
|
<div className="item-text ellipsis" dangerouslySetInnerHTML={{__html: item.content}}></div>
|
2019-01-10 16:36:54 +08:00
|
|
|
</div>
|
2018-08-17 12:23:55 +08:00
|
|
|
</li>
|
2018-09-29 18:32:53 +08:00
|
|
|
);
|
2018-08-17 12:23:55 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-09-29 18:32:53 +08:00
|
|
|
SearchResultItem.propTypes = propTypes;
|
|
|
|
|
2018-09-18 10:11:37 +08:00
|
|
|
export default SearchResultItem;
|