* 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)
154 строки
4.9 KiB
JavaScript
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
|
|
};
|