Merge pull request #6571 from SimonBrandner/fix/reply-whitespace/18327

Fix clicking whitespaces on replies
This commit is contained in:
Germain 2021-08-06 14:34:31 +01:00 committed by GitHub
commit 40eb9ae452
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import React from 'react'; import React, { createRef } from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import dis from '../../../dispatcher/dispatcher'; import dis from '../../../dispatcher/dispatcher';
@ -38,6 +38,8 @@ interface IProps {
@replaceableComponent("views.rooms.ReplyTile") @replaceableComponent("views.rooms.ReplyTile")
export default class ReplyTile extends React.PureComponent<IProps> { export default class ReplyTile extends React.PureComponent<IProps> {
private anchorElement = createRef<HTMLAnchorElement>();
static defaultProps = { static defaultProps = {
onHeightChanged: () => {}, onHeightChanged: () => {},
}; };
@ -71,7 +73,11 @@ export default class ReplyTile extends React.PureComponent<IProps> {
// Following a link within a reply should not dispatch the `view_room` action // Following a link within a reply should not dispatch the `view_room` action
// so that the browser can direct the user to the correct location // so that the browser can direct the user to the correct location
// The exception being the link wrapping the reply // The exception being the link wrapping the reply
if (clickTarget.tagName.toLowerCase() !== "a" || clickTarget.closest("a") === null) { if (
clickTarget.tagName.toLowerCase() !== "a" ||
clickTarget.closest("a") === null ||
clickTarget === this.anchorElement.current
) {
// This allows the permalink to be opened in a new tab/window or copied as // This allows the permalink to be opened in a new tab/window or copied as
// matrix.to, but also for it to enable routing within Riot when clicked. // matrix.to, but also for it to enable routing within Riot when clicked.
e.preventDefault(); e.preventDefault();
@ -141,7 +147,7 @@ export default class ReplyTile extends React.PureComponent<IProps> {
return ( return (
<div className={classes}> <div className={classes}>
<a href={permalink} onClick={this.onClick}> <a href={permalink} onClick={this.onClick} ref={this.anchorElement}>
{ sender } { sender }
<EventTileType <EventTileType
ref="tile" ref="tile"