diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | docker/1.2/Dockerfile | 2 | ||||
-rw-r--r-- | web/react/components/login.jsx | 6 | ||||
-rw-r--r-- | web/react/components/more_direct_channels.jsx | 4 | ||||
-rw-r--r-- | web/react/components/popover_list_members.jsx | 22 | ||||
-rw-r--r-- | web/react/components/post_attachment.jsx | 5 | ||||
-rw-r--r-- | web/react/components/search_autocomplete.jsx | 12 | ||||
-rw-r--r-- | web/react/components/settings_sidebar.jsx | 4 | ||||
-rw-r--r-- | web/react/components/tutorial/tutorial_tip.jsx | 27 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_content.scss | 5 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_headers.scss | 1 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_post.scss | 21 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_signup.scss | 15 |
13 files changed, 75 insertions, 51 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 3af4a6ae6..74c5b5208 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,7 +89,7 @@ System Console ### Compatibility - IE 11 new minimum version for IE, since IE 10 share fell below 5% on desktop -- Safari 8 new minimum version for Safari, since Safari 7 fell below 1% on desktop +- Safari 9 new minimum version for Safari, since Safari 7 and 8 fell below 1% each on desktop #### Config.json Changes from v1.1 to v1.2 diff --git a/docker/1.2/Dockerfile b/docker/1.2/Dockerfile index 0e4e3e242..cb2b58f53 100644 --- a/docker/1.2/Dockerfile +++ b/docker/1.2/Dockerfile @@ -34,7 +34,7 @@ VOLUME /var/lib/mysql WORKDIR /mattermost # Copy over files -ADD https://github.com/mattermost/platform/releases/download/v1.2.0-rc2/mattermost.tar.gz / +ADD https://github.com/mattermost/platform/releases/download/v1.2.0/mattermost.tar.gz / RUN tar -zxvf /mattermost.tar.gz --strip-components=1 && rm /mattermost.tar.gz ADD config_docker.json / ADD docker-entry.sh / diff --git a/web/react/components/login.jsx b/web/react/components/login.jsx index f7f5bd23d..423ba9067 100644 --- a/web/react/components/login.jsx +++ b/web/react/components/login.jsx @@ -125,7 +125,7 @@ export default class Login extends React.Component { let emailSignup; if (global.window.mm_config.EnableSignUpWithEmail === 'true') { emailSignup = ( - <div> + <div className='signup__email-container'> <div className={'form-group' + errorClass}> <input autoFocus={focusEmail} @@ -206,7 +206,7 @@ export default class Login extends React.Component { href='/' className='signup-team-login' > - {'Sign up now'} + {'Create one now'} </a> </span> </div> @@ -215,11 +215,11 @@ export default class Login extends React.Component { return ( <div className='signup-team__container'> - {verifiedBox} <h5 className='margin--less'>{'Sign in to:'}</h5> <h2 className='signup-team__name'>{teamDisplayName}</h2> <h2 className='signup-team__subdomain'>{'on '}{global.window.mm_config.SiteName}</h2> <form onSubmit={this.handleSubmit}> + {verifiedBox} <div className={'form-group' + errorClass}> {serverError} </div> diff --git a/web/react/components/more_direct_channels.jsx b/web/react/components/more_direct_channels.jsx index 40deb37f2..d1265f67e 100644 --- a/web/react/components/more_direct_channels.jsx +++ b/web/react/components/more_direct_channels.jsx @@ -50,6 +50,10 @@ export default class MoreDirectChannels extends React.Component { handleFilterChange() { const filter = ReactDOM.findDOMNode(this.refs.filter).value; + if ($(window).width() > 768) { + $(ReactDOM.findDOMNode(this.refs.userList)).scrollTop(0); + } + if (filter !== this.state.filter) { this.setState({filter}); } diff --git a/web/react/components/popover_list_members.jsx b/web/react/components/popover_list_members.jsx index bd6b6d3bd..102bddcf5 100644 --- a/web/react/components/popover_list_members.jsx +++ b/web/react/components/popover_list_members.jsx @@ -69,7 +69,6 @@ export default class PopoverListMembers extends React.Component { render() { let popoverHtml = []; - let countText = '-'; const members = this.props.members; const teamMembers = UserStore.getProfilesUsernameMap(); const currentUserId = UserStore.getCurrentId(); @@ -148,13 +147,20 @@ export default class PopoverListMembers extends React.Component { ); } }); + } - const count = this.props.memberCount; - if (count > 20) { - countText = '20+'; - } else if (count > 0) { - countText = count.toString(); - } + let count = this.props.memberCount; + let countText = '-'; + + // fall back to checking the length of the member list if the count isn't set + if (!count && members) { + count = members.length; + } + + if (count > 20) { + countText = '20+'; + } else if (count > 0) { + countText = count.toString(); } return ( @@ -194,6 +200,6 @@ export default class PopoverListMembers extends React.Component { PopoverListMembers.propTypes = { members: React.PropTypes.array.isRequired, - memberCount: React.PropTypes.number.isRequired, + memberCount: React.PropTypes.number, channelId: React.PropTypes.string.isRequired }; diff --git a/web/react/components/post_attachment.jsx b/web/react/components/post_attachment.jsx index 2d6b47f03..cf65dfbfb 100644 --- a/web/react/components/post_attachment.jsx +++ b/web/react/components/post_attachment.jsx @@ -50,7 +50,8 @@ export default class PostAttachment extends React.Component { } shouldCollapse() { - return (this.props.attachment.text.match(/\n/g) || []).length >= 5 || this.props.attachment.text.length > 700; + const text = this.props.attachment.text || ''; + return (text.match(/\n/g) || []).length >= 5 || text.length > 700; } getCollapsedText() { @@ -292,4 +293,4 @@ export default class PostAttachment extends React.Component { PostAttachment.propTypes = { attachment: React.PropTypes.object.isRequired -};
\ No newline at end of file +}; diff --git a/web/react/components/search_autocomplete.jsx b/web/react/components/search_autocomplete.jsx index d245c6bac..04384203f 100644 --- a/web/react/components/search_autocomplete.jsx +++ b/web/react/components/search_autocomplete.jsx @@ -46,7 +46,7 @@ export default class SearchAutocomplete extends React.Component { componentDidUpdate(prevProps, prevState) { const content = $(ReactDOM.findDOMNode(this.refs.searchPopover)).find('.popover-content'); - if (this.state.show) { + if (this.state.show && this.state.suggestions.length > 0) { if (!prevState.show) { content.perfectScrollbar(); content.css('max-height', $(window).height() - 200); @@ -143,10 +143,12 @@ export default class SearchAutocomplete extends React.Component { } getSelection() { - if (this.state.mode === 'channels') { - return this.state.suggestions[this.state.selection].name; - } else if (this.state.mode === 'users') { - return this.state.suggestions[this.state.selection].username; + if (this.state.suggestions.length > 0) { + if (this.state.mode === 'channels') { + return this.state.suggestions[this.state.selection].name; + } else if (this.state.mode === 'users') { + return this.state.suggestions[this.state.selection].username; + } } return ''; diff --git a/web/react/components/settings_sidebar.jsx b/web/react/components/settings_sidebar.jsx index 68d9cea48..4af46c35a 100644 --- a/web/react/components/settings_sidebar.jsx +++ b/web/react/components/settings_sidebar.jsx @@ -1,14 +1,10 @@ // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. -var utils = require('../utils/utils.jsx'); export default class SettingsSidebar extends React.Component { componentDidUpdate() { $('.settings-modal').find('.modal-body').scrollTop(0); $('.settings-modal').find('.modal-body').perfectScrollbar('update'); - if (utils.isSafari()) { - $('.settings-modal .settings-links .nav').addClass('absolute'); - } } constructor(props) { super(props); diff --git a/web/react/components/tutorial/tutorial_tip.jsx b/web/react/components/tutorial/tutorial_tip.jsx index 75d73e920..dd231b816 100644 --- a/web/react/components/tutorial/tutorial_tip.jsx +++ b/web/react/components/tutorial/tutorial_tip.jsx @@ -51,21 +51,22 @@ export default class TutorialTip extends React.Component { const dots = []; if (this.props.screens.length > 1) { for (let i = 0; i < this.props.screens.length; i++) { + let className = 'circle'; if (i === this.state.currentScreen) { - dots.push( - <div - className='circle active' - key={'dotactive' + i} - /> - ); - } else { - dots.push( - <div - className='circle' - key={'dotinactive' + i} - /> - ); + className += ' active'; } + + dots.push( + <a + href='#' + key={'dotactive' + i} + className={className} + onClick={(e) => { //eslint-disable-line no-loop-func + e.preventDefault(); + this.setState({currentScreen: i}); + }} + /> + ); } } diff --git a/web/sass-files/sass/partials/_content.scss b/web/sass-files/sass/partials/_content.scss index d86e225f3..6228cc45e 100644 --- a/web/sass-files/sass/partials/_content.scss +++ b/web/sass-files/sass/partials/_content.scss @@ -18,14 +18,15 @@ margin-left: 220px; position: relative; background: #fff; - display: flex; + @include display-flex; + @include flex-direction(column); flex-direction: column; .channel__wrap & { padding-top: 0; } } #post-create { - flex: 0 0 auto; + @include flex(0 0 auto); background: #fff; width: 100%; z-index: 3; diff --git a/web/sass-files/sass/partials/_headers.scss b/web/sass-files/sass/partials/_headers.scss index 74a7cecff..67c938b8c 100644 --- a/web/sass-files/sass/partials/_headers.scss +++ b/web/sass-files/sass/partials/_headers.scss @@ -2,6 +2,7 @@ padding: 3px 0; height: 58px; flex: 0 0 58px; + @include flex(0 0 50px); } .row { &.header { diff --git a/web/sass-files/sass/partials/_post.scss b/web/sass-files/sass/partials/_post.scss index 33748052d..45b7b7f23 100644 --- a/web/sass-files/sass/partials/_post.scss +++ b/web/sass-files/sass/partials/_post.scss @@ -16,7 +16,8 @@ } .bad-connection { - background-color: rgb(255, 255, 172) !important; + background: #ffffac !important; + color: #D04444 !important; } .textarea-div { @@ -46,7 +47,6 @@ body.ios { .textarea-wrapper { position:relative; - min-height: 36px; .textbox-preview-area { position: absolute; z-index: 2; @@ -62,6 +62,7 @@ body.ios { font-size: 13px; cursor: pointer; } + min-height:36px; } .date-separator, .new-separator { @@ -197,7 +198,7 @@ body.ios { } #post-list { - flex: 1 1 auto; + @include flex(1 1 auto); position: relative; overflow-y: hidden; .post-list-holder-by-time { @@ -544,9 +545,13 @@ body.ios { } &.post-info { .post-profile-time { - width: 150px; - display: inline-block; - margin-left: 50px; + color: #a8adb7; + vertical-align: top; + max-width: 220px; + overflow: hidden; + display: block; + white-space: nowrap; + text-overflow: ellipsis; } } .post-header-col { @@ -554,6 +559,8 @@ body.ios { display: inline-block; margin-right: 10px; &.post-header__reply { + position: relative; + top: -1px; min-width: 70px; .dropdown-menu { right: 0; @@ -706,4 +713,4 @@ body.ios { margin: 0; } } -} +}
\ No newline at end of file diff --git a/web/sass-files/sass/partials/_signup.scss b/web/sass-files/sass/partials/_signup.scss index b9486e254..6216dd9ae 100644 --- a/web/sass-files/sass/partials/_signup.scss +++ b/web/sass-files/sass/partials/_signup.scss @@ -80,7 +80,7 @@ } .inner__content { - padding: 0 15px; + padding: 0 1rem; margin: 30px 0 20px; } @@ -133,17 +133,18 @@ .or__container { height: 1px; background: #dddddd; - text-align: center; + text-align: left; margin: 2em 0; span { - width: 33px; + width: 40px; top: -10px; position: relative; - font-size: em(16px); + font-size: 1.14286em; line-height: 20px; font-weight: 600; background: #fff; display: inline-block; + text-align: center; } } @@ -152,6 +153,10 @@ padding-left: 18px; } + .signup__email-container { + margin-left: 1rem; + } + .btn { font-size: 1em; padding: em(7px) em(15px); @@ -173,7 +178,7 @@ min-width: 200px; width: 200px; padding: 0 1em; - margin: 1em auto; + margin: 1em 1rem; height: 40px; line-height: 34px; color: #fff; |