summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/developer/Setup.md26
-rw-r--r--doc/developer/tests/test-markdown-basics.md139
-rw-r--r--doc/developer/tests/test-markdown-lists.md177
-rw-r--r--doc/developer/tests/test-markdown.md25
-rw-r--r--web/react/components/channel_notifications_modal.jsx12
-rw-r--r--web/react/components/get_link_modal.jsx2
-rw-r--r--web/react/components/register_app_modal.jsx192
-rw-r--r--web/react/components/sidebar.jsx2
-rw-r--r--web/react/components/user_settings/user_settings_developer.jsx12
-rw-r--r--web/react/components/view_image.jsx3
-rw-r--r--web/react/dispatcher/event_helpers.jsx7
-rw-r--r--web/react/stores/modal_store.jsx1
-rw-r--r--web/react/utils/constants.jsx3
-rw-r--r--web/react/utils/text_formatting.jsx2
-rw-r--r--web/react/utils/utils.jsx5
-rw-r--r--web/sass-files/sass/partials/_responsive.scss9
-rw-r--r--web/sass-files/sass/partials/_search.scss1
17 files changed, 488 insertions, 130 deletions
diff --git a/doc/developer/Setup.md b/doc/developer/Setup.md
index 882aac530..24e7d6a90 100644
--- a/doc/developer/Setup.md
+++ b/doc/developer/Setup.md
@@ -11,7 +11,10 @@ Developer Machine Setup
`docker-machine ip dev`
3. Add a line to your /etc/hosts that goes `<Docker IP> dockerhost`
4. Run `docker-machine env dev` and copy the export statements to your ~/.bash_profile
-2. Download Go 1.5.1 from http://golang.org/dl/
+2. Download Go 1.5.1 and Node.js using Homebrew
+ 1. Download Homebrew from http://brew.sh/
+ 2. `brew install go`
+ 3. `brew install node`
3. Set up your Go workspace
1. `mkdir ~/go`
2. Add the following to your ~/.bash_profile
@@ -21,20 +24,17 @@ Developer Machine Setup
If you don't increase the file handle limit you may see some weird build issues with browserify or npm.
3. Reload your bash profile
`source ~/.bash_profile`
-4. Install Node.js using Homebrew
- 1. Download Homebrew from http://brew.sh/
- 2. `brew install node`
-5. Install Compass
+4. Install Compass
1. Run `ruby -v` and check the ruby version is 1.8.7 or higher
2. `sudo gem install compass`
-6. Download Mattermost
+5. Download Mattermost
`cd ~/go`
`mkdir -p src/github.com/mattermost`
`cd src/github.com/mattermost`
`git clone https://github.com/mattermost/platform.git`
`cd platform`
-7. Run unit tests on Mattermost using `make test` to make sure the installation was successful
-8. If tests passed, you can now run Mattermost using `make run`
+6. Run unit tests on Mattermost using `make test` to make sure the installation was successful
+7. If tests passed, you can now run Mattermost using `make run`
Any issues? Please let us know on our forums at: http://forum.mattermost.org
@@ -64,13 +64,9 @@ Any issues? Please let us know on our forums at: http://forum.mattermost.org
If you don't increase the file handle limit you may see some weird build issues with browserify or npm.
3. Reload your bashrc
`source ~/.bashrc`
-6. Install Node.js
- 1. Download the newest version of the Node.js sources from https://nodejs.org/en/download/
- 2. Extract the contents of the package and cd into the extracted files
- 3. Compile and install Node.js
- `./configure`
- `make`
- `make install`
+6. Install Node.js
+ `curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -`
+ `sudo apt-get install -y nodejs`
7. Install Ruby and Compass
`apt-get install ruby`
`apt-get install ruby-dev`
diff --git a/doc/developer/tests/test-markdown-basics.md b/doc/developer/tests/test-markdown-basics.md
new file mode 100644
index 000000000..7a46adeb0
--- /dev/null
+++ b/doc/developer/tests/test-markdown-basics.md
@@ -0,0 +1,139 @@
+# Basic Markdown Testing
+Tests for text style, code blocks, in-line code and images, lines, block quotes, and headings.
+
+### Text Style
+
+**The following text should render as:**
+_Italics_
+*Italics*
+**Bold**
+***Bold-italics***
+**_Bold-italics_**
+~~Strikethrough~~
+
+This sentence contains **bold**, _italic_, ***bold-italic***, and ~~stikethrough~~ text.
+
+**The following should render as normal text:**
+Normal Text_
+_Normal Text
+_Normal Text*
+
+### Code Blocks
+
+```
+This text should render in a code block
+```
+
+**The following markdown should not render:**
+```
+_Italics_
+*Italics*
+**Bold**
+***Bold-italics***
+**Bold-italics_**
+~~Strikethrough~~
+:) :-) ;) ;-) :o :O :-o :-O
+:bamboo: :gift_heart: :dolls: :school_satchel: :mortar_board:
+# Heading 1
+## Heading 2
+### Heading 3
+#### Heading 4
+##### Heading 5
+###### Heading 6
+> Block Quote
+- List
+ - List Sub-item
+[Link](http://i.giphy.com/xNrM4cGJ8u3ao.gif)
+[![Github](https://assets-cdn.github.com/favicon.ico)](https://github.com/mattermost/platform)
+| Left-Aligned Text | Center Aligned Text | Right Aligned Text |
+| :------------ |:---------------:| -----:|
+| Left column 1 | this text | $100 |
+```
+
+**The following links should not auto-link or generate previews:**
+```
+GIF: http://i.giphy.com/xNrM4cGJ8u3ao.gif
+Website: https://en.wikipedia.org/wiki/Dolphin
+```
+
+**The following should appear as a carriage return separating two lines of text:**
+```
+Line #1 followed by a blank line
+
+Line #2 following a blank line
+```
+
+### In-line Code
+
+The word `monospace` should render as in-line code.
+
+The following markdown in-line code should not render:
+`_Italics_`, `*Italics*`, `**Bold**`, `***Bold-italics***`, `**Bold-italics_**`, `~~Strikethrough~~`, `:)` , `:-)` , `;)` , `:-O` , `:bamboo:` , `:gift_heart:` , `:dolls:` , `# Heading 1`, `## Heading 2`, `### Heading 3`, `#### Heading 4`, `##### Heading 5`, `###### Heading 6`
+
+This GIF link should not preview: `http://i.giphy.com/xNrM4cGJ8u3ao.gif`
+This link should not auto-link: `https://en.wikipedia.org/wiki/Dolphin`
+
+This sentence with `
+in-line code
+` should appear on one line.
+
+### In-line Images
+
+Mattermost/platform build status: [![Build Status](https://travis-ci.org/mattermost/platform.svg?branch=master)](https://travis-ci.org/mattermost/platform)
+
+GitHub favicon: ![Github](https://assets-cdn.github.com/favicon.ico)
+
+GIF Image:
+![gif](http://i.giphy.com/xNrM4cGJ8u3ao.gif)
+
+4K Wallpaper Image (11Mb):
+![4K Image](http://4kwallpaper.xyz/wallpaper/Large-Galaxy-Lightyears-Space-4K-wallpaper.png)
+
+Panorama Image:
+![Pano](http://amardeepphotography.com/wp-content/uploads/2012/11/Untitled_Panorama6small.jpg)
+
+Tall Portrait Image:
+![Portrait](http://www.maniacworld.com/now-this-is-a-tall-building.jpg)
+
+
+### Lines
+
+Three lines should render with text between them:
+
+Text above line
+
+***
+
+Text between lines
+
+---
+
+Text between lines
+___
+
+Text below line
+
+### Block Quotes
+
+>This text should render in a block quote.
+
+**The following markdown should render within the block quote:**
+> #### Heading 4
+> _Italics_, *Italics*, **Bold**, ***Bold-italics***, **Bold-italics_**, ~~Strikethrough~~
+> :) :-) ;) :-O :bamboo: :gift_heart: :dolls:
+
+**The following text should render in two block quotes separated by one line of text:**
+> Block quote 1
+
+Text between block quotes
+
+> Block quote 2
+
+### Headings
+
+# Heading 1 font size
+## Heading 2 font size
+### Heading 3 font size
+#### Heading 4 font size
+##### Heading 5 font size
+###### Heading 6 font size
diff --git a/doc/developer/tests/test-markdown-lists.md b/doc/developer/tests/test-markdown-lists.md
new file mode 100644
index 000000000..905f5b0d5
--- /dev/null
+++ b/doc/developer/tests/test-markdown-lists.md
@@ -0,0 +1,177 @@
+# Markdown List Testing
+Verify that all list types render as expected.
+
+### Single-item Ordered List
+
+**Expected:**
+```
+7. Single Item
+```
+
+**Actual:**
+7. Single Item
+
+### Multi-item Ordered List
+
+**Expected:**
+```
+1. One
+2. Two
+3. Three
+```
+
+**Actual:**
+3. One
+2. Two
+1. Three
+
+### Nested Ordered List
+
+**Expected:**
+```
+1. Alpha
+ 1. Bravo
+2. Charlie
+3. Delta
+ 1. Echo
+ 1. Foxtrot
+```
+
+**Actual:**
+1. Alpha
+ 1. Bravo
+1. Charlie
+1. Delta
+ 1. Echo
+ 1. Foxtrot
+
+### Single-item Unordered List
+
+**Expected:**
+```
+• Single Item
+```
+
+**Actual:**
+* Single Item
+
+### Multi-item Unordered List
+
+**Expected:**
+```
+• One
+• Two
+• Three
+```
+
+**Actual:**
+* One
+- Two
++ Three
+
+### Nested Unordered List
+
+**Expected:**
+```
+• Alpha
+ • Bravo
+• Charlie
+• Delta
+ • Echo
+ • Foxtrot
+```
+
+**Actual:**
++ Alpha
+ * Bravo
+- Charlie
+* Delta
+ + Echo
+ - Foxtrot
+
+### Mixed List Starting Ordered
+
+**Expected:**
+```
+1. One
+2. Two
+3. Three
+```
+
+**Actual:**
+1. One
++ Two
+- Three
+
+### Mixed List Starting Unordered
+
+**Expected:**
+```
+• Monday
+• Tuesday
+• Wednesday
+```
+
+**Actual:**
++ Monday
+1. Tuesday
+* Wednesday
+
+### Nested Mixed List
+
+**Expected:**
+```
+• Alpha
+ 1. Bravo
+ • Charlie
+ • Delta
+• Echo
+• Foxtrot
+ • Golf
+ 1. Hotel
+ • India
+ 1. Juliet
+ 2. Kilo
+ • Lima
+• Mike
+ 1. November
+ 1. Oscar
+ 1. Papa
+```
+
+**Actual:**
+- Alpha
+ 1. Bravo
+ * Charlie
+ + Delta
+- Echo
+* Foxtrot
+ + Golf
+ 1. Hotel
+ - India
+ 2. Juliet
+ 3. Kilo
+ * Lima
+1. Mike
+ 1. November
+ 4. Oscar
+ 5. Papa
+
+### Ordered Lists Separated by Carriage Returns
+
+**Expected:**
+```
+1. One
+ • Two
+
+1. One
+2. Two
+```
+
+**Actual:**
+1. One
+ - Two
+
+
+1. One
+2. Two
diff --git a/doc/developer/tests/test-markdown.md b/doc/developer/tests/test-markdown.md
deleted file mode 100644
index 2532e504f..000000000
--- a/doc/developer/tests/test-markdown.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Markdown tests
-
-Paste the following tests into Mattermost to test markdown support.
-
-```
-# This should render as Heading 1 font size
-## This should render as Heading 2 font size
-### This should render as Heading 3 font size
-#### This should render as Heading 4 font size
-##### This should render as Heading 5 font size
-###### This should render as Heading 6 font size
-~~This should show strikethrough formatting~~
-**This should be bold**
-```
-
-Here is how it should render:
-
-# This should render as Heading 1 font size
-## This should render as Heading 2 font size
-### This should render as Heading 3 font size
-#### This should render as Heading 4 font size
-##### This should render as Heading 5 font size
-###### This should render as Heading 6 font size
-~~This should show strikethrough formatting~~
-**This should be bold**
diff --git a/web/react/components/channel_notifications_modal.jsx b/web/react/components/channel_notifications_modal.jsx
index 79b769c8a..887589468 100644
--- a/web/react/components/channel_notifications_modal.jsx
+++ b/web/react/components/channel_notifications_modal.jsx
@@ -32,11 +32,13 @@ export default class ChannelNotificationsModal extends React.Component {
activeSection: ''
};
}
- componentDidMount() {
- ChannelStore.addChangeListener(this.onListenerChange);
- }
- componentWillUnmount() {
- ChannelStore.removeChangeListener(this.onListenerChange);
+ componentWillReceiveProps(nextProps) {
+ if (!this.props.show && nextProps.show) {
+ this.onListenerChange();
+ ChannelStore.addChangeListener(this.onListenerChange);
+ } else {
+ ChannelStore.removeChangeListener(this.onListenerChange);
+ }
}
onListenerChange() {
const curChannelId = ChannelStore.getCurrentId();
diff --git a/web/react/components/get_link_modal.jsx b/web/react/components/get_link_modal.jsx
index df5d6b8e1..fd20834f4 100644
--- a/web/react/components/get_link_modal.jsx
+++ b/web/react/components/get_link_modal.jsx
@@ -75,7 +75,7 @@ export default class GetLinkModal extends React.Component {
onHide={this.onHide}
>
<Modal.Header closeButton={true}>
- {this.props.title}
+ <h4 className='modal-title'>{this.props.title}</h4>
</Modal.Header>
<Modal.Body>
{helpText}
diff --git a/web/react/components/register_app_modal.jsx b/web/react/components/register_app_modal.jsx
index 100600c4b..f49b33f73 100644
--- a/web/react/components/register_app_modal.jsx
+++ b/web/react/components/register_app_modal.jsx
@@ -2,21 +2,57 @@
// See License.txt for license information.
import * as Client from '../utils/client.jsx';
+import ModalStore from '../stores/modal_store.jsx';
+
+const Modal = ReactBootstrap.Modal;
+
+import Constants from '../utils/constants.jsx';
+const ActionTypes = Constants.ActionTypes;
export default class RegisterAppModal extends React.Component {
constructor() {
super();
- this.register = this.register.bind(this);
+ this.handleSubmit = this.handleSubmit.bind(this);
this.onHide = this.onHide.bind(this);
this.save = this.save.bind(this);
+ this.updateShow = this.updateShow.bind(this);
- this.state = {clientId: '', clientSecret: '', saved: false};
+ this.state = {
+ clientId: '',
+ clientSecret: '',
+ saved: false,
+ show: false
+ };
}
componentDidMount() {
- $(ReactDOM.findDOMNode(this)).on('hide.bs.modal', this.onHide);
+ ModalStore.addModalListener(ActionTypes.TOGGLE_REGISTER_APP_MODAL, this.updateShow);
+ }
+ componentWillUnmount() {
+ ModalStore.removeModalListener(ActionTypes.TOGGLE_REGISTER_APP_MODAL, this.updateShow);
+ }
+ updateShow(show) {
+ if (!show) {
+ if (this.state.clientId !== '' && !this.state.saved) {
+ return;
+ }
+
+ this.setState({
+ clientId: '',
+ clientSecret: '',
+ saved: false,
+ homepageError: null,
+ callbackError: null,
+ serverError: null,
+ nameError: null
+ });
+ }
+
+ this.setState({show});
}
- register() {
+ handleSubmit(e) {
+ e.preventDefault();
+
var state = this.state;
state.serverError = null;
@@ -94,6 +130,7 @@ export default class RegisterAppModal extends React.Component {
}
var body = '';
+ var footer = '';
if (this.state.clientId === '') {
body = (
<div className='settings-modal'>
@@ -148,24 +185,29 @@ export default class RegisterAppModal extends React.Component {
</div>
</div>
{serverError}
- <hr />
- <a
- className='btn btn-sm theme pull-right'
- href='#'
- data-dismiss='modal'
- aria-label='Close'
- >
- {'Cancel'}
- </a>
- <a
- className='btn btn-sm btn-primary pull-right'
- onClick={this.register}
- >
- {'Register'}
- </a>
</div>
</div>
);
+
+ footer = (
+ <div>
+ <button
+ type='button'
+ className='btn btn-default'
+ onClick={() => this.updateShow(false)}
+ >
+ {'Cancel'}
+ </button>
+ <button
+ onClick={this.handleSubmit}
+ type='submit'
+ className='btn btn-primary'
+ tabIndex='3'
+ >
+ {'Register'}
+ </button>
+ </div>
+ );
} else {
var btnClass = ' disabled';
if (this.state.saved) {
@@ -173,17 +215,35 @@ export default class RegisterAppModal extends React.Component {
}
body = (
- <div className='form-group user-settings'>
- <h3>{'Your Application Credentials'}</h3>
- <br/>
- <br/>
- <label className='col-sm-12 control-label'>{'Client ID: '}{this.state.clientId}</label>
- <label className='col-sm-12 control-label'>{'Client Secret: '}{this.state.clientSecret}</label>
+ <div className='form-horizontal user-settings'>
+ <h4 className='padding-bottom x3'>{'Your Application Credentials'}</h4>
<br/>
+ <div className='row'>
+ <label className='col-sm-4 control-label'>{'Client ID'}</label>
+ <div className='col-sm-7'>
+ <input
+ className='form-control'
+ type='text'
+ value={this.state.clientId}
+ readOnly='true'
+ />
+ </div>
+ </div>
<br/>
+ <div className='row padding-top x2'>
+ <label className='col-sm-4 control-label'>{'Client Secret'}</label>
+ <div className='col-sm-7'>
+ <input
+ className='form-control'
+ type='text'
+ value={this.state.clientSecret}
+ readOnly='true'
+ />
+ </div>
+ </div>
<br/>
<br/>
- <strong>{'Save these somewhere SAFE and SECURE. We can retrieve your Client Id if you lose it, but your Client Secret will be lost forever if you were to lose it.'}</strong>
+ <strong>{'Save these somewhere SAFE and SECURE. Treat your Client ID as your app\'s username and your Client Secret as the app\'s password.'}</strong>
<br/>
<br/>
<div className='checkbox'>
@@ -192,56 +252,50 @@ export default class RegisterAppModal extends React.Component {
ref='save'
type='checkbox'
checked={this.state.saved}
- onClick={this.save}
- >
- {'I have saved both my Client Id and Client Secret somewhere safe'}
- </input>
+ onChange={this.save}
+ />
+ {'I have saved both my Client Id and Client Secret somewhere safe'}
</label>
</div>
- <a
- className={'btn btn-sm btn-primary pull-right' + btnClass}
- href='#'
- data-dismiss='modal'
- aria-label='Close'
- >
- {'Close'}
- </a>
</div>
);
+
+ footer = (
+ <a
+ className={'btn btn-sm btn-primary pull-right' + btnClass}
+ href='#'
+ onClick={(e) => {
+ e.preventDefault();
+ this.updateShow(false);
+ }}
+ >
+ {'Close'}
+ </a>
+ );
}
return (
- <div
- className='modal fade'
- ref='modal'
- id='register_app'
- role='dialog'
- aria-hidden='true'
- >
- <div className='modal-dialog'>
- <div className='modal-content'>
- <div className='modal-header'>
- <button
- type='button'
- className='close'
- data-dismiss='modal'
- aria-label='Close'
- >
- <span aria-hidden='true'>{'×'}</span>
- </button>
- <h4
- className='modal-title'
- ref='title'
- >
- {'Developer Applications'}
- </h4>
- </div>
- <div className='modal-body'>
- {body}
- </div>
- </div>
- </div>
- </div>
+ <span>
+ <Modal
+ show={this.state.show}
+ onHide={() => this.updateShow(false)}
+ >
+ <Modal.Header closeButton={true}>
+ <Modal.Title>{'Developer Applications'}</Modal.Title>
+ </Modal.Header>
+ <form
+ role='form'
+ className='form-horizontal'
+ >
+ <Modal.Body>
+ {body}
+ </Modal.Body>
+ <Modal.Footer>
+ {footer}
+ </Modal.Footer>
+ </form>
+ </Modal>
+ </span>
);
}
}
diff --git a/web/react/components/sidebar.jsx b/web/react/components/sidebar.jsx
index b4c037183..5c8e73874 100644
--- a/web/react/components/sidebar.jsx
+++ b/web/react/components/sidebar.jsx
@@ -3,7 +3,6 @@
import NewChannelFlow from './new_channel_flow.jsx';
import MoreDirectChannels from './more_direct_channels.jsx';
-import SearchBox from './search_bar.jsx';
import SidebarHeader from './sidebar_header.jsx';
import UnreadChannelIndicator from './unread_channel_indicator.jsx';
import TutorialTip from './tutorial/tutorial_tip.jsx';
@@ -586,7 +585,6 @@ export default class Sidebar extends React.Component {
teamName={TeamStore.getCurrent().name}
teamType={TeamStore.getCurrent().type}
/>
- <SearchBox />
<UnreadChannelIndicator
show={this.state.showTopUnread}
diff --git a/web/react/components/user_settings/user_settings_developer.jsx b/web/react/components/user_settings/user_settings_developer.jsx
index 2d02c255a..01e13be57 100644
--- a/web/react/components/user_settings/user_settings_developer.jsx
+++ b/web/react/components/user_settings/user_settings_developer.jsx
@@ -3,16 +3,19 @@
import SettingItemMin from '../setting_item_min.jsx';
import SettingItemMax from '../setting_item_max.jsx';
+import * as EventHelpers from '../../dispatcher/event_helpers.jsx';
export default class DeveloperTab extends React.Component {
constructor(props) {
super(props);
+ this.register = this.register.bind(this);
+
this.state = {};
}
register() {
- $('#user_settings1').modal('hide');
- $('#register_app').modal('show');
+ this.props.closeModal();
+ EventHelpers.showRegisterAppModal();
}
render() {
var appSection;
@@ -21,7 +24,10 @@ export default class DeveloperTab extends React.Component {
var inputs = [];
inputs.push(
- <div className='form-group'>
+ <div
+ key='registerbtn'
+ className='form-group'
+ >
<div className='col-sm-7'>
<a
className='btn btn-sm btn-primary'
diff --git a/web/react/components/view_image.jsx b/web/react/components/view_image.jsx
index 2b505607e..820f8fd8e 100644
--- a/web/react/components/view_image.jsx
+++ b/web/react/components/view_image.jsx
@@ -423,10 +423,11 @@ export default class ViewImageModal extends React.Component {
onClick={this.props.onModalDismissed}
>
<div
- className={'image-wrapper ' + bgClass}
+ className={'image-wrapper'}
onClick={this.props.onModalDismissed}
>
<div
+ className={bgClass}
onMouseEnter={this.onMouseEnterImage}
onMouseLeave={this.onMouseLeaveImage}
onClick={(e) => e.stopPropagation()}
diff --git a/web/react/dispatcher/event_helpers.jsx b/web/react/dispatcher/event_helpers.jsx
index d7f255aaa..856eec2f1 100644
--- a/web/react/dispatcher/event_helpers.jsx
+++ b/web/react/dispatcher/event_helpers.jsx
@@ -104,3 +104,10 @@ export function showInviteMemberModal() {
value: true
});
}
+
+export function showRegisterAppModal() {
+ AppDispatcher.handleViewAction({
+ type: ActionTypes.TOGGLE_REGISTER_APP_MODAL,
+ value: true
+ });
+}
diff --git a/web/react/stores/modal_store.jsx b/web/react/stores/modal_store.jsx
index a26a97f53..9f33cf022 100644
--- a/web/react/stores/modal_store.jsx
+++ b/web/react/stores/modal_store.jsx
@@ -35,6 +35,7 @@ class ModalStoreClass extends EventEmitter {
case ActionTypes.TOGGLE_INVITE_MEMBER_MODAL:
case ActionTypes.TOGGLE_DELETE_POST_MODAL:
case ActionTypes.TOGGLE_GET_TEAM_INVITE_LINK_MODAL:
+ case ActionTypes.TOGGLE_REGISTER_APP_MODAL:
this.emit(type, value, args);
break;
}
diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx
index cbeab18ba..99bd2453c 100644
--- a/web/react/utils/constants.jsx
+++ b/web/react/utils/constants.jsx
@@ -49,7 +49,8 @@ export default {
TOGGLE_IMPORT_THEME_MODAL: null,
TOGGLE_INVITE_MEMBER_MODAL: null,
TOGGLE_DELETE_POST_MODAL: null,
- TOGGLE_GET_TEAM_INVITE_LINK_MODAL: null
+ TOGGLE_GET_TEAM_INVITE_LINK_MODAL: null,
+ TOGGLE_REGISTER_APP_MODAL: null
}),
PayloadSources: keyMirror({
diff --git a/web/react/utils/text_formatting.jsx b/web/react/utils/text_formatting.jsx
index 3a912fd75..f0bd46f9d 100644
--- a/web/react/utils/text_formatting.jsx
+++ b/web/react/utils/text_formatting.jsx
@@ -188,7 +188,7 @@ function highlightCurrentMentions(text, tokens) {
const newAlias = `MM_SELFMENTION${index}`;
newTokens.set(newAlias, {
- value: `<span class='mention-highlight'>${alias}</span>` + token.extraText,
+ value: `<span class='mention-highlight'>${alias}</span>` + (token.extraText || ''),
originalText: token.originalText
});
output = output.replace(alias, newAlias);
diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx
index aa9146183..d6ed34e70 100644
--- a/web/react/utils/utils.jsx
+++ b/web/react/utils/utils.jsx
@@ -607,7 +607,7 @@ export function applyTheme(theme) {
changeCss('.popover.right>.arrow:after, .tip-overlay.tip-overlay--sidebar .arrow, .tip-overlay.tip-overlay--header .arrow', 'border-right-color:' + theme.centerChannelBg, 1);
changeCss('.popover.left>.arrow:after', 'border-left-color:' + theme.centerChannelBg, 1);
changeCss('.popover.top>.arrow:after, .tip-overlay.tip-overlay--chat .arrow', 'border-top-color:' + theme.centerChannelBg, 1);
- changeCss('.search-bar__container .search__form .search-bar, .form-control', 'background:' + theme.centerChannelBg, 1);
+ changeCss('@media(min-width: 960px){.search-bar__container .search__form .search-bar, .form-control', 'background:' + theme.centerChannelBg, 1);
changeCss('.attachment__content', 'background:' + theme.centerChannelBg, 1);
}
@@ -638,8 +638,7 @@ export function applyTheme(theme) {
changeCss('.post-image__column', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 2);
changeCss('.post-image__column .post-image__details', 'color:' + theme.centerChannelColor, 2);
changeCss('.post-image__column a, .post-image__column a:hover, .post-image__column a:focus', 'color:' + theme.centerChannelColor, 1);
- changeCss('.search-bar__container .search__form .search-bar, .form-control', 'color:' + theme.centerChannelColor, 2);
- changeCss('@media(max-width: 960px){.search-bar__container .search__form .search-bar', 'background:' + changeOpacity(theme.centerChannelColor, 0.2) + '; color: inherit;', 1);
+ changeCss('@media(min-width: 960px){.search-bar__container .search__form .search-bar, .form-control', 'color:' + theme.centerChannelColor, 2);
changeCss('.input-group-addon, .search-bar__container .search__form, .form-control', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1);
changeCss('.form-control:focus', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.3), 1);
changeCss('.attachment .attachment__content', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.3), 1);
diff --git a/web/sass-files/sass/partials/_responsive.scss b/web/sass-files/sass/partials/_responsive.scss
index 5f5cca89b..a56c4bb17 100644
--- a/web/sass-files/sass/partials/_responsive.scss
+++ b/web/sass-files/sass/partials/_responsive.scss
@@ -484,7 +484,8 @@
padding: 0 10px 0 31px;
background: rgba(black, 0.2);
@include border-radius(3px);
- color: inherit;
+ color: #444;
+ background: #fff;
}
}
}
@@ -509,15 +510,15 @@
&.move--right {
@include translate3d(0, 0, 0);
}
+ > div {
+ padding-bottom: 0;
+ }
.nav-pills__unread-indicator-bottom {
bottom: 10px;
}
.badge {
top: 13px;
}
- > div {
- padding-bottom: 65px;
- }
.team__header {
display: none;
@include clearfix;
diff --git a/web/sass-files/sass/partials/_search.scss b/web/sass-files/sass/partials/_search.scss
index 27b55f214..b7f658114 100644
--- a/web/sass-files/sass/partials/_search.scss
+++ b/web/sass-files/sass/partials/_search.scss
@@ -38,6 +38,7 @@
font-size: 14px;
@include opacity(0.5);
display: none;
+ color: #777;
}
.search__form {
.search-bar__container & {