diff --git a/res/css/_components.scss b/res/css/_components.scss
index 6e681894e3..ff22ad9eab 100644
--- a/res/css/_components.scss
+++ b/res/css/_components.scss
@@ -97,6 +97,7 @@
@import "./views/elements/_RoleButton.scss";
@import "./views/elements/_Spinner.scss";
@import "./views/elements/_SyntaxHighlight.scss";
+@import "./views/elements/_TextWithTooltip.scss";
@import "./views/elements/_ToggleSwitch.scss";
@import "./views/elements/_ToolTipButton.scss";
@import "./views/elements/_Tooltip.scss";
diff --git a/res/css/structures/auth/_Login.scss b/res/css/structures/auth/_Login.scss
index 2cf6276557..4eff5c33e4 100644
--- a/res/css/structures/auth/_Login.scss
+++ b/res/css/structures/auth/_Login.scss
@@ -79,3 +79,7 @@ limitations under the License.
.mx_Login_type_dropdown {
min-width: 200px;
}
+
+.mx_Login_underlinedServerName {
+ border-bottom: 1px dashed $accent-color;
+}
diff --git a/res/css/views/elements/_TextWithTooltip.scss b/res/css/views/elements/_TextWithTooltip.scss
new file mode 100644
index 0000000000..5b34e7a3be
--- /dev/null
+++ b/res/css/views/elements/_TextWithTooltip.scss
@@ -0,0 +1,19 @@
+/*
+Copyright 2019 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+.mx_TextWithTooltip_tooltip {
+ display: none;
+}
\ No newline at end of file
diff --git a/src/components/structures/auth/ForgotPassword.js b/src/components/structures/auth/ForgotPassword.js
index 5316235fe0..42ca23256c 100644
--- a/src/components/structures/auth/ForgotPassword.js
+++ b/src/components/structures/auth/ForgotPassword.js
@@ -194,9 +194,17 @@ module.exports = React.createClass({
serverName: this.props.serverConfig.hsName,
});
if (this.props.serverConfig.hsNameIsDifferent) {
- // TODO: TravisR - Use tooltip to underline
+ const TextWithTooltip = sdk.getComponent("elements.TextWithTooltip");
+
yourMatrixAccountText = _t('Your Matrix account on ', {}, {
- 'underlinedServerName': () => {this.props.serverConfig.hsName},
+ 'underlinedServerName': () => {
+ return
+ {this.props.serverConfig.hsName}
+ ;
+ },
});
}
diff --git a/src/components/views/auth/PasswordLogin.js b/src/components/views/auth/PasswordLogin.js
index f5b2aec210..825bffdc84 100644
--- a/src/components/views/auth/PasswordLogin.js
+++ b/src/components/views/auth/PasswordLogin.js
@@ -279,9 +279,17 @@ export default class PasswordLogin extends React.Component {
serverName: this.props.serverConfig.hsName,
});
if (this.props.serverConfig.hsNameIsDifferent) {
- // TODO: TravisR - Use tooltip to underline
+ const TextWithTooltip = sdk.getComponent("elements.TextWithTooltip");
+
signInToText = _t('Sign in to your Matrix account on ', {}, {
- 'underlinedServerName': () => {this.props.serverConfig.hsName},
+ 'underlinedServerName': () => {
+ return
+ {this.props.serverConfig.hsName}
+ ;
+ },
});
}
diff --git a/src/components/views/auth/RegistrationForm.js b/src/components/views/auth/RegistrationForm.js
index 0eecc6b826..b1af6ea42c 100644
--- a/src/components/views/auth/RegistrationForm.js
+++ b/src/components/views/auth/RegistrationForm.js
@@ -516,9 +516,17 @@ module.exports = React.createClass({
serverName: this.props.serverConfig.hsName,
});
if (this.props.serverConfig.hsNameIsDifferent) {
- // TODO: TravisR - Use tooltip to underline
+ const TextWithTooltip = sdk.getComponent("elements.TextWithTooltip");
+
yourMatrixAccountText = _t('Create your Matrix account on ', {}, {
- 'underlinedServerName': () => {this.props.serverConfig.hsName},
+ 'underlinedServerName': () => {
+ return
+ {this.props.serverConfig.hsName}
+ ;
+ },
});
}
diff --git a/src/components/views/elements/TextWithTooltip.js b/src/components/views/elements/TextWithTooltip.js
new file mode 100644
index 0000000000..61c3a2125a
--- /dev/null
+++ b/src/components/views/elements/TextWithTooltip.js
@@ -0,0 +1,56 @@
+/*
+ Copyright 2019 New Vector Ltd.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+
+export default class TextWithTooltip extends React.Component {
+ static propTypes = {
+ class: PropTypes.string,
+ tooltip: PropTypes.string.isRequired,
+ };
+
+ constructor() {
+ super();
+
+ this.state = {
+ hover: false,
+ };
+ }
+
+ onMouseOver = () => {
+ this.setState({hover: true});
+ };
+
+ onMouseOut = () => {
+ this.setState({hover: false});
+ };
+
+ render() {
+ const Tooltip = sdk.getComponent("elements.Tooltip");
+
+ return (
+
+ {this.props.children}
+
+
+ );
+ }
+}
diff --git a/src/components/views/elements/Tooltip.js b/src/components/views/elements/Tooltip.js
index 1cc82978ed..1d6b54f413 100644
--- a/src/components/views/elements/Tooltip.js
+++ b/src/components/views/elements/Tooltip.js
@@ -79,6 +79,10 @@ module.exports = React.createClass({
let offset = 0;
if (parentBox.height > MIN_TOOLTIP_HEIGHT) {
offset = Math.floor((parentBox.height - MIN_TOOLTIP_HEIGHT) / 2);
+ } else {
+ // The tooltip is larger than the parent height: figure out what offset
+ // we need so that we're still centered.
+ offset = Math.floor(parentBox.height - MIN_TOOLTIP_HEIGHT);
}
style.top = (parentBox.top - 2) + window.pageYOffset + offset;
style.left = 6 + parentBox.right + window.pageXOffset;