}
};
+const renderHashtag = hashtag => (
+ <div className='trends__item' key={hashtag.get('name')}>
+ <div className='trends__item__name'>
+ <Link to={`/timelines/tag/${hashtag.get('name')}`}>
+ #<span>{hashtag.get('name')}</span>
+ </Link>
+
+ <FormattedMessage id='trends.count_by_accounts' defaultMessage='{count} {rawCount, plural, one {person} other {people}} talking' values={{ rawCount: hashtag.getIn(['history', 0, 'accounts']), count: <strong>{shortNumberFormat(hashtag.getIn(['history', 0, 'accounts']))}</strong> }} />
+ </div>
+
+ <div className='trends__item__current'>
+ {shortNumberFormat(hashtag.getIn(['history', 0, 'uses']))}
+ </div>
+
+ <div className='trends__item__sparkline'>
+ <Sparklines width={50} height={28} data={hashtag.get('history').reverse().map(day => day.get('uses')).toArray()}>
+ <SparklinesCurve style={{ fill: 'none' }} />
+ </Sparklines>
+ </div>
+ </div>
+);
+
export default class SearchResults extends ImmutablePureComponent {
static propTypes = {
<FormattedMessage id='trends.header' defaultMessage='Trending now' />
</div>
- {trends && trends.map(hashtag => (
- <div className='trends__item' key={hashtag.get('name')}>
- <div className='trends__item__name'>
- <Link to={`/timelines/tag/${hashtag.get('name')}`}>
- #<span>{hashtag.get('name')}</span>
- </Link>
-
- <FormattedMessage id='trends.count_by_accounts' defaultMessage='{count} {rawCount, plural, one {person} other {people}} talking' values={{ rawCount: hashtag.getIn(['history', 0, 'accounts']), count: <strong>{shortNumberFormat(hashtag.getIn(['history', 0, 'accounts']))}</strong> }} />
- </div>
-
- <div className='trends__item__current'>
- {shortNumberFormat(hashtag.getIn(['history', 0, 'uses']))}
- </div>
-
- <div className='trends__item__sparkline'>
- <Sparklines width={50} height={28} data={hashtag.get('history').reverse().map(day => day.get('uses')).toArray()}>
- <SparklinesCurve style={{ fill: 'none' }} />
- </Sparklines>
- </div>
- </div>
- ))}
+ {trends && trends.map(hashtag => renderHashtag(hashtag))}
</div>
</div>
);
count += results.get('accounts').size;
accounts = (
<div className='search-results__section'>
- <h5><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>
+ <h5><i className='fa fa-fw fa-users' /><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>
{results.get('accounts').map(accountId => <AccountContainer key={accountId} id={accountId} />)}
</div>
count += results.get('statuses').size;
statuses = (
<div className='search-results__section'>
- <h5><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
+ <h5><i className='fa fa-fw fa-quote-right' /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
{results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)}
</div>
count += results.get('hashtags').size;
hashtags = (
<div className='search-results__section'>
- <h5><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>
+ <h5><i className='fa fa-fw fa-hashtag' /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>
- {results.get('hashtags').map(hashtag => (
- <Link key={hashtag} className='search-results__hashtag' to={`/timelines/tag/${hashtag}`}>
- {hashtag}
- </Link>
- ))}
+ {results.get('hashtags').map(hashtag => renderHashtag(hashtag))}
</div>
);
}
COMPOSE_REPLY,
COMPOSE_DIRECT,
} from '../actions/compose';
-import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
+import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
const initialState = ImmutableMap({
value: '',
return state.set('results', ImmutableMap({
accounts: ImmutableList(action.results.accounts.map(item => item.id)),
statuses: ImmutableList(action.results.statuses.map(item => item.id)),
- hashtags: ImmutableList(action.results.hashtags),
+ hashtags: fromJS(action.results.hashtags),
})).set('submitted', true);
default:
return state;
}
.search__icon {
+ &::-moz-focus-inner {
+ border: 0;
+ }
+
+ &::-moz-focus-inner,
+ &:focus {
+ outline: 0 !important;
+ }
+
.fa {
position: absolute;
top: 10px;
.search-results__header {
color: $dark-text-color;
background: lighten($ui-base-color, 2%);
- border-bottom: 1px solid darken($ui-base-color, 4%);
padding: 15px;
font-weight: 500;
font-size: 16px;
}
.search-results__section {
- margin-bottom: 20px;
+ margin-bottom: 5px;
h5 {
- position: relative;
-
- &::before {
- content: "";
- display: block;
- position: absolute;
- left: 0;
- right: 0;
- top: 50%;
- width: 100%;
- height: 0;
- border-top: 1px solid lighten($ui-base-color, 8%);
- }
+ background: darken($ui-base-color, 4%);
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+ cursor: default;
+ display: flex;
+ padding: 15px;
+ font-weight: 500;
+ font-size: 16px;
+ color: $dark-text-color;
- span {
+ .fa {
display: inline-block;
- background: $ui-base-color;
- color: $darker-text-color;
- font-size: 14px;
- font-weight: 500;
- padding: 10px;
- position: relative;
- z-index: 1;
- cursor: default;
+ margin-right: 5px;
}
}