summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--docker/1.2/Dockerfile2
-rw-r--r--web/react/components/login.jsx6
-rw-r--r--web/react/components/more_direct_channels.jsx4
-rw-r--r--web/react/components/popover_list_members.jsx22
-rw-r--r--web/react/components/post_attachment.jsx5
-rw-r--r--web/react/components/search_autocomplete.jsx12
-rw-r--r--web/react/components/settings_sidebar.jsx4
-rw-r--r--web/react/components/tutorial/tutorial_tip.jsx27
-rw-r--r--web/sass-files/sass/partials/_content.scss5
-rw-r--r--web/sass-files/sass/partials/_headers.scss1
-rw-r--r--web/sass-files/sass/partials/_post.scss21
-rw-r--r--web/sass-files/sass/partials/_signup.scss15
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;