summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/react/components/admin_console/user_item.jsx2
-rw-r--r--web/react/components/channel_header.jsx6
-rw-r--r--web/react/components/create_comment.jsx2
-rw-r--r--web/react/components/create_post.jsx6
-rw-r--r--web/react/components/member_list_item.jsx6
-rw-r--r--web/react/components/member_list_team_item.jsx4
-rw-r--r--web/react/components/navbar.jsx2
-rw-r--r--web/react/components/post_body.jsx14
-rw-r--r--web/react/components/search_results_item.jsx7
-rw-r--r--web/react/components/suggestion/emoticon_provider.jsx23
-rw-r--r--web/react/stores/socket_store.jsx1
-rw-r--r--web/sass-files/sass/partials/_error-bar.scss1
-rw-r--r--web/sass-files/sass/partials/_files.scss2
-rw-r--r--web/sass-files/sass/partials/_modal.scss1
-rw-r--r--web/sass-files/sass/partials/_post.scss12
-rw-r--r--web/sass-files/sass/partials/_post_right.scss8
-rw-r--r--web/sass-files/sass/partials/_responsive.scss9
-rw-r--r--web/sass-files/sass/partials/_search.scss9
-rw-r--r--web/sass-files/sass/partials/_settings.scss25
19 files changed, 93 insertions, 47 deletions
diff --git a/web/react/components/admin_console/user_item.jsx b/web/react/components/admin_console/user_item.jsx
index bd64564c9..ef0b61460 100644
--- a/web/react/components/admin_console/user_item.jsx
+++ b/web/react/components/admin_console/user_item.jsx
@@ -227,7 +227,6 @@ export default class UserItem extends React.Component {
href='#'
className='dropdown-toggle theme'
type='button'
- id='channel_header_dropdown'
data-toggle='dropdown'
aria-expanded='true'
>
@@ -237,7 +236,6 @@ export default class UserItem extends React.Component {
<ul
className='dropdown-menu member-menu'
role='menu'
- aria-labelledby='channel_header_dropdown'
>
{makeAdmin}
{makeMember}
diff --git a/web/react/components/channel_header.jsx b/web/react/components/channel_header.jsx
index d5a46721e..59ceb038e 100644
--- a/web/react/components/channel_header.jsx
+++ b/web/react/components/channel_header.jsx
@@ -101,9 +101,9 @@ export default class ChannelHeader extends React.Component {
if (user.notify_props && user.notify_props.mention_keys) {
const termKeys = UserStore.getCurrentMentionKeys();
- // if (user.notify_props.all === 'true' && termKeys.indexOf('@all') !== -1) {
- // termKeys.splice(termKeys.indexOf('@all'), 1);
- // }
+ if (user.notify_props.all === 'true' && termKeys.indexOf('@all') !== -1) {
+ termKeys.splice(termKeys.indexOf('@all'), 1);
+ }
if (user.notify_props.channel === 'true' && termKeys.indexOf('@channel') !== -1) {
termKeys.splice(termKeys.indexOf('@channel'), 1);
diff --git a/web/react/components/create_comment.jsx b/web/react/components/create_comment.jsx
index fac40e895..b0f33eda1 100644
--- a/web/react/components/create_comment.jsx
+++ b/web/react/components/create_comment.jsx
@@ -362,11 +362,11 @@ export default class CreateComment extends React.Component {
onClick={this.handleSubmit}
/>
{uploadsInProgressText}
+ {preview}
{postError}
{serverError}
</div>
</div>
- {preview}
</form>
);
}
diff --git a/web/react/components/create_post.jsx b/web/react/components/create_post.jsx
index f7f63fb92..89e984e27 100644
--- a/web/react/components/create_post.jsx
+++ b/web/react/components/create_post.jsx
@@ -470,13 +470,13 @@ export default class CreatePost extends React.Component {
{tutorialTip}
</div>
<div className={postFooterClassName}>
- {postError}
- {serverError}
- {preview}
<MsgTyping
channelId={this.state.channelId}
parentId=''
/>
+ {preview}
+ {postError}
+ {serverError}
</div>
</div>
</form>
diff --git a/web/react/components/member_list_item.jsx b/web/react/components/member_list_item.jsx
index f7f77f48a..a7273f280 100644
--- a/web/react/components/member_list_item.jsx
+++ b/web/react/components/member_list_item.jsx
@@ -78,17 +78,15 @@ export default class MemberListItem extends React.Component {
href='#'
className='dropdown-toggle theme'
type='button'
- id='channel_header_dropdown'
data-toggle='dropdown'
aria-expanded='true'
>
+ <span className='fa fa-pencil'></span>
<span className='text-capitalize'>{member.roles || 'Member'} </span>
- <span className='caret'></span>
</a>
<ul
className='dropdown-menu member-menu'
role='menu'
- aria-labelledby='channel_header_dropdown'
>
{makeAdminOption}
{handleRemoveOption}
@@ -96,7 +94,7 @@ export default class MemberListItem extends React.Component {
</div>
);
} else {
- invite = <div className='member-role text-capitalize'>{member.roles || 'Member'}<span className='caret hidden'></span></div>;
+ invite = <div className='member-role text-capitalize'><span className='fa fa-pencil hidden'></span>{member.roles || 'Member'}</div>;
}
return (
diff --git a/web/react/components/member_list_team_item.jsx b/web/react/components/member_list_team_item.jsx
index 316fad01a..7967c410d 100644
--- a/web/react/components/member_list_team_item.jsx
+++ b/web/react/components/member_list_team_item.jsx
@@ -181,17 +181,15 @@ export default class MemberListTeamItem extends React.Component {
href='#'
className='dropdown-toggle theme'
type='button'
- id='channel_header_dropdown'
data-toggle='dropdown'
aria-expanded='true'
>
+ <span className='fa fa-pencil'></span>
<span>{currentRoles} </span>
- <span className='caret'></span>
</a>
<ul
className='dropdown-menu member-menu'
role='menu'
- aria-labelledby='channel_header_dropdown'
>
{makeAdmin}
{makeMember}
diff --git a/web/react/components/navbar.jsx b/web/react/components/navbar.jsx
index 3bdc9efac..ae14fca2f 100644
--- a/web/react/components/navbar.jsx
+++ b/web/react/components/navbar.jsx
@@ -272,7 +272,6 @@ export default class Navbar extends React.Component {
href='#'
className='dropdown-toggle theme'
type='button'
- id='channel_header_dropdown'
data-toggle='dropdown'
aria-expanded='true'
>
@@ -282,7 +281,6 @@ export default class Navbar extends React.Component {
<ul
className='dropdown-menu'
role='menu'
- aria-labelledby='channel_header_dropdown'
>
{viewInfoOption}
{addMembersOption}
diff --git a/web/react/components/post_body.jsx b/web/react/components/post_body.jsx
index 296b9e7d7..35a7727e9 100644
--- a/web/react/components/post_body.jsx
+++ b/web/react/components/post_body.jsx
@@ -309,7 +309,15 @@ export default class PostBody extends React.Component {
let apostrophe = '';
let name = '...';
if (profile != null) {
- if (profile.username.slice(-1) === 's') {
+ let username = profile.username;
+ if (parentPost.props &&
+ parentPost.props.from_webhook &&
+ parentPost.props.override_username &&
+ global.window.mm_config.EnablePostUsernameOverride === 'true') {
+ username = parentPost.props.override_username;
+ }
+
+ if (username.slice(-1) === 's') {
apostrophe = '\'';
} else {
apostrophe = '\'s';
@@ -317,9 +325,9 @@ export default class PostBody extends React.Component {
name = (
<a
className='theme'
- onClick={Utils.searchForTerm.bind(null, profile.username)}
+ onClick={Utils.searchForTerm.bind(null, username)}
>
- {profile.username}
+ {username}
</a>
);
}
diff --git a/web/react/components/search_results_item.jsx b/web/react/components/search_results_item.jsx
index 1d4983026..cd8359df5 100644
--- a/web/react/components/search_results_item.jsx
+++ b/web/react/components/search_results_item.jsx
@@ -19,6 +19,11 @@ export default class SearchResultsItem extends React.Component {
e.preventDefault();
EventHelpers.emitPostFocusEvent(this.props.post.id);
+
+ if ($(window).width() < 768) {
+ $('.sidebar--right').removeClass('move--left');
+ $('.inner__wrap').removeClass('move--left');
+ }
}
render() {
@@ -65,7 +70,7 @@ export default class SearchResultsItem extends React.Component {
className='search-item__jump'
onClick={this.handleClick}
>
- {<i className='fa fa-mail-reply'></i>}
+ {'Jump'}
</a>
</li>
</ul>
diff --git a/web/react/components/suggestion/emoticon_provider.jsx b/web/react/components/suggestion/emoticon_provider.jsx
index 7dcb86442..fd470cf21 100644
--- a/web/react/components/suggestion/emoticon_provider.jsx
+++ b/web/react/components/suggestion/emoticon_provider.jsx
@@ -51,23 +51,40 @@ export default class EmoticonProvider {
const text = captured[1];
const partialName = captured[2];
- const terms = [];
const names = [];
for (const emoticon of Emoticons.emoticonMap.keys()) {
if (emoticon.indexOf(partialName) !== -1) {
- terms.push(':' + emoticon + ':');
names.push(emoticon);
- if (terms.length >= MAX_EMOTICON_SUGGESTIONS) {
+ if (names.length >= MAX_EMOTICON_SUGGESTIONS) {
break;
}
}
}
+ // sort the emoticons so that emoticons starting with the entered text come first
+ names.sort((a, b) => {
+ const aPrefix = a.startsWith(partialName);
+ const bPrefix = b.startsWith(partialName);
+
+ if (aPrefix === bPrefix) {
+ return a.localeCompare(b);
+ } else if (aPrefix) {
+ return -1;
+ }
+
+ return 1;
+ });
+
+ const terms = names.map((name) => ':' + name + ':');
+
if (terms.length > 0) {
SuggestionStore.setMatchedPretext(suggestionId, text);
SuggestionStore.addSuggestions(suggestionId, terms, names, EmoticonSuggestion);
+
+ // force the selection to be cleared since the order of elements may have changed
+ SuggestionStore.clearSelection(suggestionId);
}
}
}
diff --git a/web/react/stores/socket_store.jsx b/web/react/stores/socket_store.jsx
index c8e3c8bdd..d5aed40cf 100644
--- a/web/react/stores/socket_store.jsx
+++ b/web/react/stores/socket_store.jsx
@@ -225,6 +225,7 @@ function handlePostEditEvent(msg) {
// Store post
const post = JSON.parse(msg.props.post);
PostStore.storePost(post);
+ PostStore.emitChange();
// Update channel state
if (ChannelStore.getCurrentId() === msg.channel_id) {
diff --git a/web/sass-files/sass/partials/_error-bar.scss b/web/sass-files/sass/partials/_error-bar.scss
index 249bbeaa5..0bfcbe0be 100644
--- a/web/sass-files/sass/partials/_error-bar.scss
+++ b/web/sass-files/sass/partials/_error-bar.scss
@@ -19,6 +19,7 @@
font-weight: 600;
text-decoration: none;
padding: 0 10px;
+ font-family: 'Open Sans', sans-serif;
&:hover {
color: #FFF;
text-decoration: none;
diff --git a/web/sass-files/sass/partials/_files.scss b/web/sass-files/sass/partials/_files.scss
index aeb04e931..2c341f61e 100644
--- a/web/sass-files/sass/partials/_files.scss
+++ b/web/sass-files/sass/partials/_files.scss
@@ -2,7 +2,7 @@
.preview-container {
position: relative;
- margin-top: 25px;
+ margin: 1px 0 10px;
width: 100%;
max-height: 100px;
height: 100px;
diff --git a/web/sass-files/sass/partials/_modal.scss b/web/sass-files/sass/partials/_modal.scss
index 55725abe0..9279cf0c4 100644
--- a/web/sass-files/sass/partials/_modal.scss
+++ b/web/sass-files/sass/partials/_modal.scss
@@ -186,6 +186,7 @@
padding: 8px 15px 8px 8px;
width: 80px;
vertical-align: middle;
+ position: relative;
&.lg {
width: 110px;
}
diff --git a/web/sass-files/sass/partials/_post.scss b/web/sass-files/sass/partials/_post.scss
index 81cc311e1..df519c752 100644
--- a/web/sass-files/sass/partials/_post.scss
+++ b/web/sass-files/sass/partials/_post.scss
@@ -319,13 +319,11 @@ body.ios {
@include clearfix;
padding: 3px 0 0 0;
font-size: 13px;
- .has-error {
- .control-label {
- height: 0;
- display: block;
- font-weight: normal;
- margin-bottom: 0;
- }
+ .control-label {
+ font-weight: normal;
+ margin-bottom: 0;
+ top: -5px;
+ position: relative;
}
.msg-typing {
min-height: 25px;
diff --git a/web/sass-files/sass/partials/_post_right.scss b/web/sass-files/sass/partials/_post_right.scss
index 4f04a266b..fa52e2972 100644
--- a/web/sass-files/sass/partials/_post_right.scss
+++ b/web/sass-files/sass/partials/_post_right.scss
@@ -44,6 +44,9 @@
.textarea-wrapper {
min-height: 100px;
}
+ .btn {
+ margin-bottom: 10px;
+ }
.custom-textarea {
min-height: 100px;
}
@@ -123,6 +126,11 @@
overflow: auto;
-webkit-overflow-scrolling: touch;
@include flex(1 1 auto);
+
+ .preview-container {
+ margin-top: 5px;
+ }
+
}
.post-right-comment-time {
diff --git a/web/sass-files/sass/partials/_responsive.scss b/web/sass-files/sass/partials/_responsive.scss
index bdf04ff82..ed2d0bbe9 100644
--- a/web/sass-files/sass/partials/_responsive.scss
+++ b/web/sass-files/sass/partials/_responsive.scss
@@ -377,10 +377,8 @@
.msg-typing {
display: none;
}
- .has-error {
- .control-label {
- height: auto;
- }
+ .control-label {
+ top: 0;
}
}
.post-create-body {
@@ -409,8 +407,7 @@
}
}
.preview-container {
- padding: 0px;
- margin-top: 5px;
+ margin: 5px 0 0;
.preview-div {
margin-top: 0;
}
diff --git a/web/sass-files/sass/partials/_search.scss b/web/sass-files/sass/partials/_search.scss
index a29e940e6..a5b2a78dd 100644
--- a/web/sass-files/sass/partials/_search.scss
+++ b/web/sass-files/sass/partials/_search.scss
@@ -111,7 +111,14 @@
.search-item__jump {
position: absolute;
right: 0;
- top: 0;
+ top: 0px;
+ font-size: 13px;
+ @include opacity(0.8);
+
+ &:hover {
+ @include opacity(1);
+ }
+
}
.search-item-time {
diff --git a/web/sass-files/sass/partials/_settings.scss b/web/sass-files/sass/partials/_settings.scss
index ee0c40067..f078cafb4 100644
--- a/web/sass-files/sass/partials/_settings.scss
+++ b/web/sass-files/sass/partials/_settings.scss
@@ -135,9 +135,10 @@
.input-group-addon {
padding: 4px 5px;
width: 40px;
- img {
- border: 1px solid rgba(black, 0.15);
- }
+ }
+ img {
+ border: 1px solid rgba(black, 0.15);
+ width: 29px;
}
}
.premade-themes {
@@ -325,12 +326,22 @@
overflow: hidden;
text-overflow: ellipsis;
}
+}
+
+.member-role, .member-drop {
+ position:absolute;
+ right: 15px;
+ top: 8px;
+
+ .fa {
+ margin-right: 5px;
+ }
- .member-role, .member-drop {
- position:absolute;
- right: 15px;
- top: 8px;
+ .member-menu {
+ top: -50%;
+ right: 110%;
}
+
}
.member-invite {