Removing break all

Replacing jquery selectors and some other UI improvements

Removing jquery selector
Этот коммит содержится в:
Asaad Mahmood
2016-06-14 22:53:47 +05:00
коммит произвёл Joram Wilander
родитель af4110b2ed
Коммит f6b4a611d0
14 изменённых файлов: 254 добавлений и 138 удалений

Просмотреть файл

@@ -286,7 +286,7 @@ class InviteMemberModal extends React.Component {
lastNameClass += ' has-error'; lastNameClass += ' has-error';
} }
nameFields = ( nameFields = (
<div className='row--invite'> <div className='row row--invite'>
<div className='col-sm-6'> <div className='col-sm-6'>
<div className={firstNameClass}> <div className={firstNameClass}>
<input <input

Просмотреть файл

@@ -142,6 +142,7 @@ export default class PopoverListMembers extends React.Component {
<div> <div>
<div <div
id='member_popover' id='member_popover'
className='member-popover__trigger'
ref='member_popover_target' ref='member_popover_target'
onClick={(e) => this.setState({popoverTarget: e.target, showPopover: !this.state.showPopover})} onClick={(e) => this.setState({popoverTarget: e.target, showPopover: !this.state.showPopover})}
> >

Просмотреть файл

@@ -26,6 +26,7 @@ export default class PostHeader extends React.Component {
/> />
); );
let botIndicator; let botIndicator;
let colon;
if (post.props && post.props.from_webhook) { if (post.props && post.props.from_webhook) {
if (post.props.override_username && global.window.mm_config.EnablePostUsernameOverride === 'true') { if (post.props.override_username && global.window.mm_config.EnablePostUsernameOverride === 'true') {
@@ -50,9 +51,13 @@ export default class PostHeader extends React.Component {
); );
} }
if (this.props.compactDisplay) {
colon = (<strong>{':'}</strong>);
}
return ( return (
<ul className='post__header'> <ul className='post__header'>
<li className='col col__name'>{userProfile}</li> <li className='col col__name'>{userProfile}{colon}</li>
{botIndicator} {botIndicator}
<li className='col'> <li className='col'>
<PostInfo <PostInfo

Просмотреть файл

@@ -370,6 +370,15 @@ export default class Sidebar extends React.Component {
this.setState({showDirectChannelsModal: false}); this.setState({showDirectChannelsModal: false});
} }
openLeftSidebar() {
if (Utils.isMobile()) {
setTimeout(() => {
document.querySelector('.app__body .inner-wrap').classList.add('move--right');
document.querySelector('.app__body .sidebar--left').classList.add('move--right');
});
}
}
createTutorialTip() { createTutorialTip() {
const screens = []; const screens = [];
@@ -535,6 +544,7 @@ export default class Sidebar extends React.Component {
let tutorialTip = null; let tutorialTip = null;
if (this.state.showTutorialTip && channel.name === Constants.DEFAULT_CHANNEL) { if (this.state.showTutorialTip && channel.name === Constants.DEFAULT_CHANNEL) {
tutorialTip = this.createTutorialTip(); tutorialTip = this.createTutorialTip();
this.openLeftSidebar();
} }
let link = ''; let link = '';

Просмотреть файл

@@ -1,6 +1,7 @@
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information. // See License.txt for license information.
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
import TeamMembersModal from './team_members_modal.jsx'; import TeamMembersModal from './team_members_modal.jsx';
import ToggleModalButton from './toggle_modal_button.jsx'; import ToggleModalButton from './toggle_modal_button.jsx';
import UserSettingsModal from './user_settings/user_settings_modal.jsx'; import UserSettingsModal from './user_settings/user_settings_modal.jsx';
@@ -14,6 +15,7 @@ import * as GlobalActions from 'actions/global_actions.jsx';
import * as Utils from 'utils/utils.jsx'; import * as Utils from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx'; import Constants from 'utils/constants.jsx';
const ActionTypes = Constants.ActionTypes;
const Preferences = Constants.Preferences; const Preferences = Constants.Preferences;
const TutorialSteps = Constants.TutorialSteps; const TutorialSteps = Constants.TutorialSteps;
@@ -30,6 +32,7 @@ export default class SidebarRightMenu extends React.Component {
this.onPreferenceChange = this.onPreferenceChange.bind(this); this.onPreferenceChange = this.onPreferenceChange.bind(this);
this.handleAboutModal = this.handleAboutModal.bind(this); this.handleAboutModal = this.handleAboutModal.bind(this);
this.searchMentions = this.searchMentions.bind(this);
this.aboutModalDismissed = this.aboutModalDismissed.bind(this); this.aboutModalDismissed = this.aboutModalDismissed.bind(this);
const state = this.getStateFromStores(); const state = this.getStateFromStores();
@@ -60,13 +63,82 @@ export default class SidebarRightMenu extends React.Component {
getStateFromStores() { getStateFromStores() {
const tutorialStep = PreferenceStore.getInt(Preferences.TUTORIAL_STEP, UserStore.getCurrentId(), 999); const tutorialStep = PreferenceStore.getInt(Preferences.TUTORIAL_STEP, UserStore.getCurrentId(), 999);
return {showTutorialTip: tutorialStep === TutorialSteps.MENU_POPOVER && Utils.isMobile()}; return {
currentUser: UserStore.getCurrentUser(),
showTutorialTip: tutorialStep === TutorialSteps.MENU_POPOVER && Utils.isMobile()
};
} }
onPreferenceChange() { onPreferenceChange() {
this.setState(this.getStateFromStores()); this.setState(this.getStateFromStores());
} }
searchMentions(e) {
e.preventDefault();
const user = this.state.currentUser;
let terms = '';
if (user.notify_props && user.notify_props.mention_keys) {
const termKeys = UserStore.getMentionKeys(user.id);
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);
}
terms = termKeys.join(' ');
}
this.hideSidebars();
AppDispatcher.handleServerAction({
type: ActionTypes.RECEIVED_SEARCH_TERM,
term: terms,
do_search: true,
is_mention_search: true
});
}
closeLeftSidebar() {
if (Utils.isMobile()) {
setTimeout(() => {
document.querySelector('.app__body .inner-wrap').classList.remove('move--right');
document.querySelector('.app__body .sidebar--left').classList.remove('move--right');
});
}
}
openRightSidebar() {
if (Utils.isMobile()) {
setTimeout(() => {
document.querySelector('.app__body .inner-wrap').classList.add('move--left-small');
document.querySelector('.app__body .sidebar--menu').classList.add('move--left');
});
}
}
hideSidebars() {
if (Utils.isMobile()) {
AppDispatcher.handleServerAction({
type: ActionTypes.RECEIVED_SEARCH,
results: null
});
AppDispatcher.handleServerAction({
type: ActionTypes.RECEIVED_POST_SELECTED,
postId: null
});
document.querySelector('.app__body .inner-wrap').classList.remove('move--right', 'move--left', 'move--left-small');
document.querySelector('.app__body .sidebar--left').classList.remove('move--right');
document.querySelector('.app__body .sidebar--right').classList.remove('move--left');
document.querySelector('.app__body .sidebar--menu').classList.remove('move--left');
}
}
render() { render() {
var teamLink = ''; var teamLink = '';
var inviteLink = ''; var inviteLink = '';
@@ -87,7 +159,7 @@ export default class SidebarRightMenu extends React.Component {
href='#' href='#'
onClick={GlobalActions.showInviteMemberModal} onClick={GlobalActions.showInviteMemberModal}
> >
<i className='fa fa-user-plus'></i> <i className='icon fa fa-user-plus'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.inviteNew' id='sidebar_right_menu.inviteNew'
defaultMessage='Invite New Member' defaultMessage='Invite New Member'
@@ -103,7 +175,7 @@ export default class SidebarRightMenu extends React.Component {
href='#' href='#'
onClick={GlobalActions.showGetTeamInviteLinkModal} onClick={GlobalActions.showGetTeamInviteLinkModal}
> >
<i className='glyphicon glyphicon-link'></i> <i className='icon glyphicon glyphicon-link'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.teamLink' id='sidebar_right_menu.teamLink'
defaultMessage='Get Team Invite Link' defaultMessage='Get Team Invite Link'
@@ -122,7 +194,7 @@ export default class SidebarRightMenu extends React.Component {
data-toggle='modal' data-toggle='modal'
data-target='#team_settings' data-target='#team_settings'
> >
<i className='fa fa-globe'></i> <i className='icon fa fa-globe'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.teamSettings' id='sidebar_right_menu.teamSettings'
defaultMessage='Team Settings' defaultMessage='Team Settings'
@@ -133,7 +205,7 @@ export default class SidebarRightMenu extends React.Component {
manageLink = ( manageLink = (
<li> <li>
<ToggleModalButton dialogType={TeamMembersModal}> <ToggleModalButton dialogType={TeamMembersModal}>
<i className='fa fa-users'></i> <i className='icon fa fa-users'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.manageMembers' id='sidebar_right_menu.manageMembers'
defaultMessage='Manage Members' defaultMessage='Manage Members'
@@ -149,7 +221,7 @@ export default class SidebarRightMenu extends React.Component {
<Link <Link
to={'/admin_console'} to={'/admin_console'}
> >
<i className='fa fa-wrench'></i> <i className='icon fa fa-wrench'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.console' id='sidebar_right_menu.console'
defaultMessage='System Console' defaultMessage='System Console'
@@ -177,7 +249,7 @@ export default class SidebarRightMenu extends React.Component {
rel='noopener noreferrer' rel='noopener noreferrer'
to={global.window.mm_config.HelpLink} to={global.window.mm_config.HelpLink}
> >
<i className='fa fa-question'></i> <i className='icon fa fa-question'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.help' id='sidebar_right_menu.help'
defaultMessage='Help' defaultMessage='Help'
@@ -196,7 +268,7 @@ export default class SidebarRightMenu extends React.Component {
rel='noopener noreferrer' rel='noopener noreferrer'
to={global.window.mm_config.ReportAProblemLink} to={global.window.mm_config.ReportAProblemLink}
> >
<i className='fa fa-phone'></i> <i className='icon fa fa-phone'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.report' id='sidebar_right_menu.report'
defaultMessage='Report a Problem' defaultMessage='Report a Problem'
@@ -209,6 +281,8 @@ export default class SidebarRightMenu extends React.Component {
let tutorialTip = null; let tutorialTip = null;
if (this.state.showTutorialTip) { if (this.state.showTutorialTip) {
tutorialTip = createMenuTip((e) => e.preventDefault(), true); tutorialTip = createMenuTip((e) => e.preventDefault(), true);
this.closeLeftSidebar();
this.openRightSidebar();
} }
return ( return (
@@ -228,12 +302,24 @@ export default class SidebarRightMenu extends React.Component {
<div className='nav-pills__container'> <div className='nav-pills__container'>
{tutorialTip} {tutorialTip}
<ul className='nav nav-pills nav-stacked'> <ul className='nav nav-pills nav-stacked'>
<li>
<a
href='#'
onClick={this.searchMentions}
>
<i className='icon mentions'>{'@'}</i>
<FormattedMessage
id='sidebar_right_menu.recentMentions'
defaultMessage='Recent Mentions'
/>
</a>
</li>
<li> <li>
<a <a
href='#' href='#'
onClick={() => this.setState({showUserSettingsModal: true})} onClick={() => this.setState({showUserSettingsModal: true})}
> >
<i className='fa fa-cog'></i> <i className='icon fa fa-cog'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.accountSettings' id='sidebar_right_menu.accountSettings'
defaultMessage='Account Settings' defaultMessage='Account Settings'
@@ -247,7 +333,7 @@ export default class SidebarRightMenu extends React.Component {
{consoleLink} {consoleLink}
<li> <li>
<Link to='/select_team'> <Link to='/select_team'>
<i className='fa fa-exchange'></i> <i className='icon fa fa-exchange'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.switch_team' id='sidebar_right_menu.switch_team'
defaultMessage='Team Selection' defaultMessage='Team Selection'
@@ -260,7 +346,7 @@ export default class SidebarRightMenu extends React.Component {
href='#' href='#'
onClick={GlobalActions.emitUserLoggedOutEvent} onClick={GlobalActions.emitUserLoggedOutEvent}
> >
<i className='fa fa-sign-out'></i> <i className='icon fa fa-sign-out'></i>
<FormattedMessage <FormattedMessage
id='sidebar_right_menu.logout' id='sidebar_right_menu.logout'
defaultMessage='Logout' defaultMessage='Logout'
@@ -275,7 +361,7 @@ export default class SidebarRightMenu extends React.Component {
href='#' href='#'
onClick={this.handleAboutModal} onClick={this.handleAboutModal}
> >
<i className='fa fa-info'></i> <i className='icon fa fa-info'></i>
<FormattedMessage <FormattedMessage
id='navbar_dropdown.about' id='navbar_dropdown.about'
defaultMessage='About Mattermost' defaultMessage='About Mattermost'

Просмотреть файл

@@ -10,6 +10,7 @@ import Constants from 'utils/constants.jsx';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
const Preferences = Constants.Preferences; const Preferences = Constants.Preferences;
import * as Utils from 'utils/utils.jsx';
import {Overlay} from 'react-bootstrap'; import {Overlay} from 'react-bootstrap';
@@ -47,8 +48,17 @@ export default class TutorialTip extends React.Component {
return; return;
} }
this.closeRightSidebar();
this.toggle(); this.toggle();
} }
closeRightSidebar() {
if (Utils.isMobile()) {
setTimeout(() => {
document.querySelector('.app__body .inner-wrap').classList.remove('move--left-small');
document.querySelector('.app__body .sidebar--menu').classList.remove('move--left');
});
}
}
skipTutorial(e) { skipTutorial(e) {
e.preventDefault(); e.preventDefault();
@@ -94,7 +104,7 @@ export default class TutorialTip extends React.Component {
} }
var tutorialGifImage = tutorialGif; var tutorialGifImage = tutorialGif;
if (this.props.overlayClass === 'tip-overlay--header' || this.props.overlayClass === 'tip-overlay--sidebar') { if (this.props.overlayClass === 'tip-overlay--header' || this.props.overlayClass === 'tip-overlay--sidebar' || this.props.overlayClass === 'tip-overlay--header--up') {
tutorialGifImage = tutorialGifWhite; tutorialGifImage = tutorialGifWhite;
} }

Просмотреть файл

@@ -1158,6 +1158,7 @@
"sidebar.unreadAbove": "Unread post(s) above", "sidebar.unreadAbove": "Unread post(s) above",
"sidebar.unreadBelow": "Unread post(s) below", "sidebar.unreadBelow": "Unread post(s) below",
"sidebar_header.tutorial": "<h4>Main Menu</h4><p>The <strong>Main Menu</strong> is where you can <strong>Invite New Members</strong>, access your <strong>Account Settings</strong> and set your <strong>Theme Color</strong>.</p><p>Team administrators can also access their <strong>Team Settings</strong> from this menu.</p><p>System administrators will find a <strong>System Console</strong> option to administrate the entire system.</p>", "sidebar_header.tutorial": "<h4>Main Menu</h4><p>The <strong>Main Menu</strong> is where you can <strong>Invite New Members</strong>, access your <strong>Account Settings</strong> and set your <strong>Theme Color</strong>.</p><p>Team administrators can also access their <strong>Team Settings</strong> from this menu.</p><p>System administrators will find a <strong>System Console</strong> option to administrate the entire system.</p>",
"sidebar_right_menu.recentMentions": "Recent Mentions",
"sidebar_right_menu.accountSettings": "Account Settings", "sidebar_right_menu.accountSettings": "Account Settings",
"sidebar_right_menu.console": "System Console", "sidebar_right_menu.console": "System Console",
"sidebar_right_menu.help": "Help", "sidebar_right_menu.help": "Help",

Просмотреть файл

@@ -1,6 +1,7 @@
@charset 'UTF-8'; @charset 'UTF-8';
.dropdown-menu { .dropdown-menu {
border-radius: $border-rad;
&.colorpicker { &.colorpicker {
z-index: 2500; z-index: 2500;

Просмотреть файл

@@ -29,6 +29,14 @@
} }
} }
.row--invite {
.col-sm-6 {
&:first-child {
padding-right: 0;
}
}
}
.modal__hint { .modal__hint {
@include opacity(.8); @include opacity(.8);
display: block; display: block;
@@ -194,8 +202,8 @@
} }
.modal-content { .modal-content {
border-radius: 0; @include box-shadow(0 0 10px rgba($black, .5));
box-shadow: none; border-radius: $border-rad;
} }
.modal-chevron-icon { .modal-chevron-icon {
@@ -417,24 +425,6 @@
} }
} }
.invite {
margin-right: 40px;
}
.row--invite {
@include clearfix;
margin-right: 40px;
.col-sm-6 {
padding: 0 0 0 15px;
&:first-child {
padding-left: 0;
}
}
}
.more-modal { .more-modal {
.user-list { .user-list {
margin-top: 10px; margin-top: 10px;

Просмотреть файл

@@ -2,6 +2,87 @@
.channel-header { .channel-header {
@include flex(0 0 56px); @include flex(0 0 56px);
border-left: none;
font-size: 14px;
line-height: 56px;
width: 100%;
.member-popover__trigger {
cursor: pointer;
padding-right: 10px;
text-align: right;
width: 60px;
.fa {
font-size: 16px;
margin-left: 4px;
}
}
&.alt {
margin: 0;
th {
font-weight: normal !important;
}
td {
border: none;
}
}
th {
text-align: center;
&:first-child {
border-left: none;
padding-left: 15px;
padding-right: 1em;
text-align: left !important;
width: 100%;
}
&:last-child {
width: 8.9%;
}
}
td {
font-size: 13px;
padding: 5px 25px 5px !important;
text-align: center !important;
&:first-child {
text-align: left !important;
}
}
.heading {
display: inline-block;
font-size: 1.3em;
font-weight: 600;
margin: 0 4px 0 0;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
.caret {
margin-top: 3px;
}
.more {
color: #81848b;
display: inline-block;
font-size: 13px;
text-transform: capitalize;
vertical-align: top;
}
.disabled {
color: #999999;
}
} }
.row { .row {
@@ -256,90 +337,6 @@
} }
} }
.channel-header {
border-left: none;
font-size: 14px;
line-height: 56px;
width: 100%;
#member_popover {
color: #999999;
cursor: pointer;
width: 50px;
.fa {
font-size: 16px;
margin-left: 4px;
}
}
&.alt {
margin: 0;
th {
font-weight: normal !important;
}
td {
border: none;
}
}
th {
text-align: center;
&:first-child {
border-left: none;
padding-left: 15px;
padding-right: 1em;
text-align: left !important;
width: 100%;
}
&:last-child {
width: 8.9%;
}
}
td {
font-size: 13px;
padding: 5px 25px 5px !important;
text-align: center !important;
&:first-child {
text-align: left !important;
}
}
.heading {
color: #555555;
display: inline-block;
font-size: 1.3em;
font-weight: 600;
margin: 0 4px 0 0;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
.caret {
margin-top: 3px;
}
.more {
color: #81848b;
display: inline-block;
font-size: 13px;
text-transform: capitalize;
vertical-align: top;
}
.disabled {
color: #999999;
}
}
.channel-header__navbar { .channel-header__navbar {
font-size: 16px; font-size: 16px;

Просмотреть файл

@@ -486,7 +486,6 @@ body.ios {
&.post--compact { &.post--compact {
&.post--thread { &.post--thread {
.post__header { .post__header {
height: 22px;
padding-top: 3px; padding-top: 3px;
} }
} }
@@ -510,6 +509,10 @@ body.ios {
margin: 0 0 7px; margin: 0 0 7px;
} }
.post__header {
height: 22px;
}
.post__body { .post__body {
background: transparent !important; background: transparent !important;
line-height: 1.6; line-height: 1.6;
@@ -537,10 +540,6 @@ body.ios {
} }
} }
.post-image__columns {
clear: both;
}
.post-image__column { .post-image__column {
@include border-radius(2px); @include border-radius(2px);
font-size: .9em; font-size: .9em;
@@ -765,8 +764,15 @@ body.ios {
@include clearfix; @include clearfix;
max-width: 200px; max-width: 200px;
text-overflow: ellipsis; text-overflow: ellipsis;
vertical-align: top;
white-space: nowrap; white-space: nowrap;
} }
strong {
display: none;
font-weight: 900;
margin-left: 2px;
}
} }
.col__reply { .col__reply {
@@ -1036,6 +1042,7 @@ body.ios {
display: inline-block; display: inline-block;
margin-right: 6px; margin-right: 6px;
visibility: hidden; visibility: hidden;
svg { svg {
fill: inherit; fill: inherit;
position: relative; position: relative;

Просмотреть файл

@@ -68,13 +68,18 @@
line-height: 40px; line-height: 40px;
padding: 0 15px; padding: 0 15px;
.fa, .icon {
.glyphicon { display: inline-block;
left: -5px; left: -5px;
position: relative; position: relative;
text-align: center; text-align: center;
width: 25px; width: 25px;
} }
.mentions {
font-size: 17px;
font-weight: bold;
}
} }
} }
} }

Просмотреть файл

@@ -136,6 +136,13 @@
} }
} }
&.post--comment {
.post__body {
margin-top: 5px;
padding: 2px 0 0 7px;
}
}
&.other--root { &.other--root {
&.post--comment { &.post--comment {
.post__header { .post__header {
@@ -309,7 +316,9 @@
.row--invite { .row--invite {
.col-sm-6 { .col-sm-6 {
padding: 0; &:first-child {
padding-right: 15px;
}
} }
} }

Просмотреть файл

@@ -117,20 +117,13 @@
.col__name { .col__name {
font-weight: bold; font-weight: bold;
margin-right: 2px; margin-right: 2px;
padding-right: 10px; padding-right: 5px;
position: relative; position: relative;
z-index: 1; z-index: 1;
&:after {
content: ':';
display: inline-block;
font-family: FontAwesome;
font-size: 19px;
position: absolute;
right: 3px;
text-rendering: auto;
top: -5px;
} }
strong {
display: inline;
} }
.col__reply { .col__reply {
@@ -176,6 +169,7 @@
&.same--root { &.same--root {
&.same--user { &.same--user {
padding-left: 70px; padding-left: 70px;
padding-top: 0;
.post__header { .post__header {
.col__reply { .col__reply {