Multiple UI changes
Этот коммит содержится в:
@@ -270,7 +270,7 @@ export default class FileAttachment extends React.Component {
|
||||
href={fileUrl}
|
||||
download={filenameString}
|
||||
data-toggle='tooltip'
|
||||
title={filenameString}
|
||||
title={'Download ' + filenameString}
|
||||
className='post-image__name'
|
||||
>
|
||||
{trimmedFilename}
|
||||
|
||||
@@ -98,7 +98,7 @@ export default class GetLinkModal extends React.Component {
|
||||
<br /><br />
|
||||
</p>
|
||||
<textarea
|
||||
className='form-control no-resize'
|
||||
className='form-control no-resize min-height'
|
||||
readOnly='true'
|
||||
ref='textarea'
|
||||
value={this.state.value}
|
||||
|
||||
@@ -58,6 +58,7 @@ export default class NavbarDropdown extends React.Component {
|
||||
TeamStore.addChangeListener(this.onListenerChange);
|
||||
|
||||
$(ReactDOM.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => {
|
||||
$('.sidebar--left .dropdown-menu').scrollTop(0);
|
||||
this.blockToggle = true;
|
||||
setTimeout(() => {
|
||||
this.blockToggle = false;
|
||||
|
||||
@@ -10,6 +10,7 @@ const patterns = new Map([
|
||||
['channels', /\b(?:in|channel):\s*(\S*)$/i],
|
||||
['users', /\bfrom:\s*(\S*)$/i]
|
||||
]);
|
||||
const Popover = ReactBootstrap.Popover;
|
||||
|
||||
export default class SearchAutocomplete extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -36,6 +37,11 @@ export default class SearchAutocomplete extends React.Component {
|
||||
$(document).on('click', this.handleDocumentClick);
|
||||
}
|
||||
|
||||
componentDidUpdate() {
|
||||
$(ReactDOM.findDOMNode(this.refs.searchPopover)).find('.popover-content').perfectScrollbar();
|
||||
$(ReactDOM.findDOMNode(this.refs.searchPopover)).find('.popover-content').css('max-height', $(window).height() - 200);
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
$(document).off('click', this.handleDocumentClick);
|
||||
}
|
||||
@@ -193,7 +199,7 @@ export default class SearchAutocomplete extends React.Component {
|
||||
|
||||
if (this.state.mode === 'channels') {
|
||||
suggestions = this.state.suggestions.map((channel, index) => {
|
||||
let className = 'search-autocomplete__channel';
|
||||
let className = 'search-autocomplete__item';
|
||||
if (this.state.selection === index) {
|
||||
className += ' selected';
|
||||
}
|
||||
@@ -211,7 +217,7 @@ export default class SearchAutocomplete extends React.Component {
|
||||
});
|
||||
} else if (this.state.mode === 'users') {
|
||||
suggestions = this.state.suggestions.map((user, index) => {
|
||||
let className = 'search-autocomplete__user';
|
||||
let className = 'search-autocomplete__item';
|
||||
if (this.state.selection === index) {
|
||||
className += ' selected';
|
||||
}
|
||||
@@ -224,7 +230,7 @@ export default class SearchAutocomplete extends React.Component {
|
||||
className={className}
|
||||
>
|
||||
<img
|
||||
className='profile-img'
|
||||
className='profile-img rounded'
|
||||
src={'/api/v1/users/' + user.id + '/image?time=' + user.update_at}
|
||||
/>
|
||||
{user.username}
|
||||
@@ -234,12 +240,15 @@ export default class SearchAutocomplete extends React.Component {
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
ref='container'
|
||||
className='search-autocomplete'
|
||||
<Popover
|
||||
ref='searchPopover'
|
||||
onShow={this.componentDidMount}
|
||||
id='search-autocomplete__popover'
|
||||
className='search-help-popover autocomplete visible'
|
||||
placement='bottom'
|
||||
>
|
||||
{suggestions}
|
||||
</div>
|
||||
</Popover>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ export default class SettingPicture extends React.Component {
|
||||
img = (
|
||||
<img
|
||||
ref='image'
|
||||
className='profile-img'
|
||||
className='profile-img rounded'
|
||||
src=''
|
||||
/>
|
||||
);
|
||||
@@ -50,7 +50,7 @@ export default class SettingPicture extends React.Component {
|
||||
img = (
|
||||
<img
|
||||
ref='image'
|
||||
className='profile-img'
|
||||
className='profile-img rounded'
|
||||
src={this.props.src}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -5,6 +5,9 @@ var NavbarDropdown = require('./navbar_dropdown.jsx');
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
const Utils = require('../utils/utils.jsx');
|
||||
|
||||
const Tooltip = ReactBootstrap.Tooltip;
|
||||
const OverlayTrigger = ReactBootstrap.OverlayTrigger;
|
||||
|
||||
export default class SidebarHeader extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -47,7 +50,15 @@ export default class SidebarHeader extends React.Component {
|
||||
{profilePicture}
|
||||
<div className='header__info'>
|
||||
<div className='user__name'>{'@' + me.username}</div>
|
||||
<OverlayTrigger
|
||||
trigger={['hover', 'focus']}
|
||||
delayShow={1000}
|
||||
placement='bottom'
|
||||
overlay={<Tooltip id='team-name__tooltip'>{this.props.teamDisplayName}</Tooltip>}
|
||||
ref='descriptionOverlay'
|
||||
>
|
||||
<div className='team__name'>{this.props.teamDisplayName}</div>
|
||||
</OverlayTrigger>
|
||||
</div>
|
||||
</a>
|
||||
<NavbarDropdown
|
||||
|
||||
@@ -71,7 +71,7 @@ export default class EmailSignUpPage extends React.Component {
|
||||
className='btn btn-md btn-primary'
|
||||
type='submit'
|
||||
>
|
||||
{'Sign up'}
|
||||
{'Create Team'}
|
||||
</button>
|
||||
{serverError}
|
||||
</div>
|
||||
|
||||
Ссылка в новой задаче
Block a user