diff options
-rw-r--r-- | doc/developer/Setup.md | 26 | ||||
-rw-r--r-- | doc/developer/tests/test-markdown-basics.md | 139 | ||||
-rw-r--r-- | doc/developer/tests/test-markdown-lists.md | 177 | ||||
-rw-r--r-- | doc/developer/tests/test-markdown.md | 25 | ||||
-rw-r--r-- | web/react/components/channel_notifications_modal.jsx | 12 | ||||
-rw-r--r-- | web/react/components/get_link_modal.jsx | 2 | ||||
-rw-r--r-- | web/react/components/register_app_modal.jsx | 192 | ||||
-rw-r--r-- | web/react/components/sidebar.jsx | 2 | ||||
-rw-r--r-- | web/react/components/user_settings/user_settings_developer.jsx | 12 | ||||
-rw-r--r-- | web/react/components/view_image.jsx | 3 | ||||
-rw-r--r-- | web/react/dispatcher/event_helpers.jsx | 7 | ||||
-rw-r--r-- | web/react/stores/modal_store.jsx | 1 | ||||
-rw-r--r-- | web/react/utils/constants.jsx | 3 | ||||
-rw-r--r-- | web/react/utils/text_formatting.jsx | 2 | ||||
-rw-r--r-- | web/react/utils/utils.jsx | 5 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_responsive.scss | 9 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_search.scss | 1 |
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 & { |