forked from matrix/element-web
Refactor so that the tooltip positional tweaks can be done in CSS rather than passed in as parameters
This commit is contained in:
parent
38ac520e1e
commit
7cb48e0d2d
|
@ -79,7 +79,7 @@ module.exports = React.createClass({
|
||||||
getLabel: function(label, show) {
|
getLabel: function(label, show) {
|
||||||
if (show) {
|
if (show) {
|
||||||
var RoomTooltip = sdk.getComponent("rooms.RoomTooltip");
|
var RoomTooltip = sdk.getComponent("rooms.RoomTooltip");
|
||||||
return <RoomTooltip label={label} left={6} top={this.props.collapsed ? 3 : null} />;
|
return <RoomTooltip className="mx_BottomLeftMenu_tooltip" label={label} />;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -24,13 +24,11 @@ module.exports = React.createClass({
|
||||||
displayName: 'RoomTooltip',
|
displayName: 'RoomTooltip',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
|
// Alllow the tooltip to be styled by the parent element
|
||||||
|
className: React.PropTypes.string.isRequired,
|
||||||
// The tooltip is derived from either the room name or a label
|
// The tooltip is derived from either the room name or a label
|
||||||
room: React.PropTypes.object,
|
room: React.PropTypes.object,
|
||||||
label: React.PropTypes.string,
|
label: React.PropTypes.string,
|
||||||
|
|
||||||
// The tooltip position can be tweaked by passing in additional positional information
|
|
||||||
top: React.PropTypes.number,
|
|
||||||
left: React.PropTypes.number,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Create a wrapper for the tooltip outside the parent and attach it to the body element
|
// Create a wrapper for the tooltip outside the parent and attach it to the body element
|
||||||
|
@ -52,8 +50,6 @@ module.exports = React.createClass({
|
||||||
action: 'view_tooltip',
|
action: 'view_tooltip',
|
||||||
tooltip: null,
|
tooltip: null,
|
||||||
parent: null,
|
parent: null,
|
||||||
top: null,
|
|
||||||
left: null,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
ReactDOM.unmountComponentAtNode(this.tooltipContainer);
|
ReactDOM.unmountComponentAtNode(this.tooltipContainer);
|
||||||
|
@ -67,16 +63,12 @@ module.exports = React.createClass({
|
||||||
// positioned, also taking into account any window zoom
|
// positioned, also taking into account any window zoom
|
||||||
// NOTE: The additional 6 pixels for the left position, is to take account of the
|
// NOTE: The additional 6 pixels for the left position, is to take account of the
|
||||||
// tooltips chevron
|
// tooltips chevron
|
||||||
var parent = ReactDOM.findDOMNode(this).parentElement;
|
var parent = ReactDOM.findDOMNode(this);
|
||||||
var style = {};
|
var style = {};
|
||||||
style.top = parent.getBoundingClientRect().top + window.pageYOffset;
|
style.top = parent.getBoundingClientRect().top + window.pageYOffset;
|
||||||
style.left = 6 + parent.getBoundingClientRect().right + window.pageXOffset;
|
style.left = 6 + parent.getBoundingClientRect().right + window.pageXOffset;
|
||||||
style.display = "block";
|
style.display = "block";
|
||||||
|
|
||||||
// Add any additional positional tweaks passed in to the tooltip
|
|
||||||
if (this.props.top) { style.top += this.props.top; }
|
|
||||||
if (this.props.left) { style.left += this.props.left; }
|
|
||||||
|
|
||||||
var tooltip = (
|
var tooltip = (
|
||||||
<div className="mx_RoomTooltip" style={style} >
|
<div className="mx_RoomTooltip" style={style} >
|
||||||
<div className="mx_RoomTooltip_chevron"></div>
|
<div className="mx_RoomTooltip_chevron"></div>
|
||||||
|
@ -92,15 +84,13 @@ module.exports = React.createClass({
|
||||||
action: 'view_tooltip',
|
action: 'view_tooltip',
|
||||||
tooltip: this.tooltip,
|
tooltip: this.tooltip,
|
||||||
parent: parent,
|
parent: parent,
|
||||||
top: this.props.top,
|
|
||||||
left: this.props.left,
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
// Render a placeholder
|
// Render a placeholder
|
||||||
return (
|
return (
|
||||||
<div className="mx_RoomToolTip_placeholder" >
|
<div className={ this.props.className } >
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,14 @@ limitations under the License.
|
||||||
height: 34px;
|
height: 34px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_RoomTile_tooltip {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
top: -62px;
|
||||||
|
left: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.mx_RoomTile_nameContainer {
|
.mx_RoomTile_nameContainer {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 180px;
|
width: 180px;
|
||||||
|
|
|
@ -105,3 +105,10 @@ limitations under the License.
|
||||||
.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings {
|
.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings {
|
||||||
float: none;
|
float: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_LeftPanel .mx_BottomLeftMenu_tooltip {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
top: -25px;
|
||||||
|
left: 6px;
|
||||||
|
}
|
||||||
|
|
|
@ -50,6 +50,3 @@ limitations under the License.
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
mx_RoomToolTip_placeholder {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue