Merge pull request #5422 from vector-im/luke/fix-interactable-greyed-ui

Use CSS to stop greyed Right/LeftPanel UI from being interactable
This commit is contained in:
Luke Barnard 2017-10-25 15:30:38 +01:00 committed by GitHub
commit 7c7ae3a31f
5 changed files with 50 additions and 39 deletions

View File

@ -19,6 +19,7 @@ limitations under the License.
import React from 'react'; import React from 'react';
import { DragDropContext } from 'react-dnd'; import { DragDropContext } from 'react-dnd';
import HTML5Backend from 'react-dnd-html5-backend'; import HTML5Backend from 'react-dnd-html5-backend';
import classNames from 'classnames';
import KeyCode from 'matrix-react-sdk/lib/KeyCode'; import KeyCode from 'matrix-react-sdk/lib/KeyCode';
import sdk from 'matrix-react-sdk'; import sdk from 'matrix-react-sdk';
import dis from 'matrix-react-sdk/lib/dispatcher'; import dis from 'matrix-react-sdk/lib/dispatcher';
@ -55,7 +56,7 @@ var LeftPanel = React.createClass({
// We just need to update if any of these things change. // We just need to update if any of these things change.
if ( if (
this.props.collapsed !== nextProps.collapsed || this.props.collapsed !== nextProps.collapsed ||
this.props.opacity !== nextProps.opacity this.props.disabled !== nextProps.disabled
) { ) {
return true; return true;
} }
@ -176,14 +177,16 @@ var LeftPanel = React.createClass({
topBox = <SearchBox collapsed={ this.props.collapsed } onSearch={ this.onSearch } />; topBox = <SearchBox collapsed={ this.props.collapsed } onSearch={ this.onSearch } />;
} }
let classes = "mx_LeftPanel mx_fadable"; let classes = classNames(
if (this.props.collapsed) { "mx_LeftPanel", "mx_fadable",
classes += " collapsed"; {
"collapsed": this.props.collapsed,
"mx_fadable_faded": this.props.disabled,
} }
);
return ( return (
<aside className={classes} style={{ opacity: this.props.opacity }} <aside className={classes} onKeyDown={ this._onKeyDown } onFocus={ this._onFocus } onBlur={ this._onBlur }>
onKeyDown={ this._onKeyDown } onFocus={ this._onFocus } onBlur={ this._onBlur }>
{ topBox } { topBox }
<CallPreview ConferenceHandler={VectorConferenceHandler} /> <CallPreview ConferenceHandler={VectorConferenceHandler} />
<RoomList <RoomList

View File

@ -18,6 +18,7 @@ limitations under the License.
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classNames from 'classnames';
import { _t } from 'matrix-react-sdk/lib/languageHandler'; import { _t } from 'matrix-react-sdk/lib/languageHandler';
import sdk from 'matrix-react-sdk'; import sdk from 'matrix-react-sdk';
import dis from 'matrix-react-sdk/lib/dispatcher'; import dis from 'matrix-react-sdk/lib/dispatcher';
@ -345,13 +346,16 @@ module.exports = React.createClass({
); );
} }
let classes = "mx_RightPanel mx_fadable"; let classes = classNames(
if (this.props.collapsed) { "mx_RightPanel", "mx_fadable",
classes += " collapsed"; {
"collapsed": this.props.collapsed,
"mx_fadable_faded": this.props.disabled,
} }
);
return ( return (
<aside className={classes} style={{ opacity: this.props.opacity }}> <aside className={classes}>
<div className="mx_RightPanel_header"> <div className="mx_RightPanel_header">
<div className="mx_RightPanel_headerButtonGroup"> <div className="mx_RightPanel_headerButtonGroup">
{headerButtons} {headerButtons}

View File

@ -89,17 +89,17 @@ module.exports = React.createClass({
}); });
// dis.dispatch({ // dis.dispatch({
// action: 'ui_opacity', // action: 'panel_disable',
// sideOpacity: 0.3, // sideDisabled: true,
// middleOpacity: 0.3, // middleDisabled: true,
// }); // });
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
// dis.dispatch({ // dis.dispatch({
// action: 'ui_opacity', // action: 'panel_disable',
// sideOpacity: 1.0, // sideDisabled: false,
// middleOpacity: 1.0, // middleDisabled: false,
// }); // });
if (this.filterTimeout) { if (this.filterTimeout) {
clearTimeout(this.filterTimeout); clearTimeout(this.filterTimeout);

View File

@ -87,6 +87,11 @@ textarea {
transition: opacity 0.2s ease-in-out; transition: opacity 0.2s ease-in-out;
} }
.mx_fadable.mx_fadable_faded {
opacity: 0.3;
pointer-events: none;
}
/* XXX: critical hack to GeminiScrollbar to allow them to work in FF 42 and Chrome 48. /* XXX: critical hack to GeminiScrollbar to allow them to work in FF 42 and Chrome 48.
Stop the scrollbar view from pushing out the container's overall sizing, which causes Stop the scrollbar view from pushing out the container's overall sizing, which causes
flexbox to adapt to the new size and cause the view to keep growing. flexbox to adapt to the new size and cause the view to keep growing.

View File

@ -80,17 +80,32 @@ limitations under the License.
max-width: 1920px ! important; max-width: 1920px ! important;
} }
.mx_RoomView_topUnreadMessagesBar {
.mx_RoomView_body {
order: 3;
flex: 1 1 0;
flex-direction: column;
display: flex;
}
.mx_RoomView_body .mx_RoomView_topUnreadMessagesBar {
order: 1;
}
.mx_RoomView_body .mx_RoomView_messagePanel {
order: 2;
}
.mx_RoomView_body .mx_RoomView_statusArea {
order: 3; order: 3;
} }
.mx_RoomView_messagePanel { .mx_RoomView_body .mx_MessageComposer {
order: 4; order: 4;
}
flex: 1 1 0; .mx_RoomView_messagePanel {
width: 100%; width: 100%;
overflow-y: auto; overflow-y: auto;
} }
@ -131,18 +146,6 @@ limitations under the License.
clear: both; clear: both;
} }
.mx_RoomView_invitePrompt {
order: 2;
min-width: 0px;
max-width: 960px;
width: 100%;
margin: auto;
margin-top: 12px;
margin-bottom: 12px;
}
li.mx_RoomView_myReadMarker_container { li.mx_RoomView_myReadMarker_container {
height: 0px; height: 0px;
margin: 0px; margin: 0px;
@ -160,8 +163,6 @@ hr.mx_RoomView_myReadMarker {
} }
.mx_RoomView_statusArea { .mx_RoomView_statusArea {
order: 5;
width: 100%; width: 100%;
flex: 0 0 auto; flex: 0 0 auto;
@ -236,8 +237,6 @@ hr.mx_RoomView_myReadMarker {
} }
.mx_RoomView .mx_MessageComposer { .mx_RoomView .mx_MessageComposer {
order: 6;
width: 100%; width: 100%;
flex: 0 0 auto; flex: 0 0 auto;
margin-right: 2px; margin-right: 2px;