diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-10-16 17:04:13 +0200 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-10-16 17:04:13 +0200 |
commit | 447033038549495318f7c218941829e845aabb61 (patch) | |
tree | ae3b3ca628946a5cc64d92a933dac6e66976bb5a /app/assets/javascripts/components/features/compose | |
parent | f9c9fef1575af3b97cbb300acae60272affc7730 (diff) |
Backfill follow suggestions with fallback when not enough results. Cycling
through suggestions in UI
Diffstat (limited to 'app/assets/javascripts/components/features/compose')
-rw-r--r-- | app/assets/javascripts/components/features/compose/components/suggestions_box.jsx | 49 |
1 files changed, 44 insertions, 5 deletions
diff --git a/app/assets/javascripts/components/features/compose/components/suggestions_box.jsx b/app/assets/javascripts/components/features/compose/components/suggestions_box.jsx index 50229eb69..d7eeee729 100644 --- a/app/assets/javascripts/components/features/compose/components/suggestions_box.jsx +++ b/app/assets/javascripts/components/features/compose/components/suggestions_box.jsx @@ -6,7 +6,8 @@ import { Link } from 'react-router'; const outerStyle = { marginBottom: '10px', - borderTop: '1px solid #616b86' + borderTop: '1px solid #616b86', + position: 'relative' }; const headerStyle = { @@ -41,26 +42,64 @@ const acctStyle = { textOverflow: 'ellipsis' }; +const nextStyle = { + fontWeight: '400', + color: '#2b90d9' +}; + const SuggestionsBox = React.createClass({ propTypes: { - accounts: ImmutablePropTypes.list.isRequired + accounts: ImmutablePropTypes.list.isRequired, + perWindow: React.PropTypes.number + }, + + getInitialState () { + return { + index: 0 + }; + }, + + getDefaultProps () { + return { + perWindow: 2 + }; }, mixins: [PureRenderMixin], + handleNextClick (e) { + e.preventDefault(); + + let newIndex = this.state.index + 1; + + if (this.props.accounts.skip(this.props.perWindow * newIndex).size === 0) { + newIndex = 0; + } + + this.setState({ index: newIndex }); + }, + render () { - const accounts = this.props.accounts.take(3); + const { accounts, perWindow } = this.props; if (accounts.size === 0) { return <div />; } + let nextLink = ''; + + if (accounts.size > perWindow) { + nextLink = <a href='#' style={nextStyle} onClick={this.handleNextClick}>Next</a>; + } + return ( <div style={outerStyle}> - <strong style={headerStyle}>Who to follow</strong> + <strong style={headerStyle}> + Who to follow {nextLink} + </strong> - {accounts.map(account => { + {accounts.skip(perWindow * this.state.index).take(perWindow).map(account => { let displayName = account.get('display_name'); if (displayName.length === 0) { |