Files
mostlymatter/webapp/components/search_results_header.jsx
Jonathan 76bfd279b3 PLT-7140: On slow connection searching should clear RHS and show spinner (#7014)
* Added a RECEIVED_SEARCH_TERM event on search form submit, attempted to modify Search Results Header title when loading search results

* Fixed RHS behaviour so that loading icon is shown while waiting for search results on slow connections.

* PLT-7140: Fixed all eslint issues

* PLT-7140: reverted changes to config/config.json that were accidentally committed

* PLT-7140: Removed all static function decorators that I previously added to jsx files. These were suggested by eslint, but can cause issues for functions that override parent functionality. still can't reproduce the errors seen on spinmint locally, so I'm guessing at this point

* PLT-7140: Changed var to const

* Updating UI for search results loading (#7096)
2017-08-02 15:38:54 -04:00

154 строки
4.9 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import Constants from 'utils/constants.jsx';
import {Tooltip, OverlayTrigger} from 'react-bootstrap';
import * as GlobalActions from 'actions/global_actions.jsx';
import {FormattedMessage} from 'react-intl';
import PropTypes from 'prop-types';
import React from 'react';
export default class SearchResultsHeader extends React.Component {
constructor(props) {
super(props);
this.handleClose = this.handleClose.bind(this);
this.toggleSize = this.toggleSize.bind(this);
}
handleClose(e) {
e.preventDefault();
GlobalActions.toggleSideBarAction(false);
this.props.shrink();
}
toggleSize(e) {
e.preventDefault();
this.props.toggleSize();
}
render() {
var title = (
<FormattedMessage
id='search_header.results'
defaultMessage='Search Results'
/>
);
const closeSidebarTooltip = (
<Tooltip id='closeSidebarTooltip'>
<FormattedMessage
id='rhs_header.closeSidebarTooltip'
defaultMessage='Close Sidebar'
/>
</Tooltip>
);
const expandSidebarTooltip = (
<Tooltip id='expandSidebarTooltip'>
<FormattedMessage
id='rhs_header.expandSidebarTooltip'
defaultMessage='Expand Sidebar'
/>
</Tooltip>
);
const shrinkSidebarTooltip = (
<Tooltip id='shrinkSidebarTooltip'>
<FormattedMessage
id='rhs_header.shrinkSidebarTooltip'
defaultMessage='Shrink Sidebar'
/>
</Tooltip>
);
if (this.props.isMentionSearch) {
title = (
<FormattedMessage
id='search_header.title2'
defaultMessage='Recent Mentions'
/>
);
} else if (this.props.isFlaggedPosts) {
title = (
<FormattedMessage
id='search_header.title3'
defaultMessage='Flagged Posts'
/>
);
} else if (this.props.isPinnedPosts) {
title = (
<FormattedMessage
id='search_header.title4'
defaultMessage='Pinned posts in {channelDisplayName}'
values={{
channelDisplayName: this.props.channelDisplayName
}}
/>
);
}
return (
<div className='sidebar--right__header'>
<span className='sidebar--right__title'>{title}</span>
<div className='pull-right'>
<button
type='button'
className='sidebar--right__expand'
aria-label='Expand'
onClick={this.toggleSize}
>
<OverlayTrigger
trigger={['hover', 'focus']}
delayShow={Constants.OVERLAY_TIME_DELAY}
placement='top'
overlay={expandSidebarTooltip}
>
<i className='fa fa-expand'/>
</OverlayTrigger>
<OverlayTrigger
trigger={['hover', 'focus']}
delayShow={Constants.OVERLAY_TIME_DELAY}
placement='top'
overlay={shrinkSidebarTooltip}
>
<i className='fa fa-compress'/>
</OverlayTrigger>
</button>
<button
type='button'
className='sidebar--right__close'
aria-label='Close'
title='Close'
onClick={this.handleClose}
>
<OverlayTrigger
trigger={['hover', 'focus']}
delayShow={Constants.OVERLAY_TIME_DELAY}
placement='top'
overlay={closeSidebarTooltip}
>
<i className='fa fa-sign-out'/>
</OverlayTrigger>
</button>
</div>
</div>
);
}
}
SearchResultsHeader.propTypes = {
isMentionSearch: PropTypes.bool,
toggleSize: PropTypes.func,
shrink: PropTypes.func,
isFlaggedPosts: PropTypes.bool,
isPinnedPosts: PropTypes.bool,
channelDisplayName: PropTypes.string.isRequired,
isLoading: PropTypes.bool.isRequired
};