renderWidgetBody()

in packages/issue-dashboard-widgets/widgets/youtrack-issues-list/app/content.js [78:135]


  renderWidgetBody() {
    const {
      issues,
      youTrack,
      isNextPageLoading,
      dateFormats
    } = this.props;
    const {expandedIssueId} = this.state;
    const homeUrl = youTrack ? youTrack.homeUrl : '';
    const loadMoreCount = this.getLoadMoreCount();

    const setExpandedIssueId = issueId =>
      evt => {
        if (evt.target && evt.target.href) {
          return;
        }
        const isAlreadyExpanded = issueId === expandedIssueId;
        this.setState({expandedIssueId: isAlreadyExpanded ? null : issueId});
      };

    return (
      <div className="issues-list-widget">
        {
          (issues || []).map(issue => (
            <div
              key={`issue-${issue.id}`}
              onClick={setExpandedIssueId(issue.id)}
            >
              <IssueLine
                issue={issue}
                homeUrl={homeUrl}
                expanded={expandedIssueId === issue.id}
                dateFormats={dateFormats}
              />
            </div>
          ))
        }
        {
          loadMoreCount > 0 && !isNextPageLoading &&
          (
            <div
              onClick={this.props.onLoadMore}
              className="issues-list-widget__load-more"
            >
              <Link pseudo>
                {
                  i18n.plural(loadMoreCount, 'Load 1 more issue', 'Load {{$count}} more issues')
                }
              </Link>
            </div>
          )
        }
        {
          isNextPageLoading && <LoaderInline/>
        }
      </div>
    );
  }