From b75b6f7f747f65e91dc79216cd45b2c8b0e86802 Mon Sep 17 00:00:00 2001 From: Germain Date: Mon, 4 Sep 2023 12:42:27 +0100 Subject: [PATCH] Prevent event propagation when clicking icon buttons (#11515) * Prevent event propagation when clicking icon buttons * Inhibit view user on click behaviour for room header face pile * Update snapshot --- src/components/views/elements/FacePile.tsx | 19 ++++- src/components/views/rooms/RoomHeader.tsx | 79 +++++++++++-------- .../__snapshots__/RoomHeader-test.tsx.snap | 4 + 3 files changed, 67 insertions(+), 35 deletions(-) diff --git a/src/components/views/elements/FacePile.tsx b/src/components/views/elements/FacePile.tsx index 47c05598ba..ab71cff7cb 100644 --- a/src/components/views/elements/FacePile.tsx +++ b/src/components/views/elements/FacePile.tsx @@ -27,15 +27,30 @@ interface IProps extends HTMLAttributes { tooltipLabel?: string; tooltipShortcut?: string; children?: ReactNode; + viewUserOnClick?: boolean; } -const FacePile: FC = ({ members, size, overflow, tooltipLabel, tooltipShortcut, children, ...props }) => { +const FacePile: FC = ({ + members, + size, + overflow, + tooltipLabel, + tooltipShortcut, + children, + viewUserOnClick = true, + ...props +}) => { const faces = members.map( tooltipLabel ? (m) => : (m) => ( - + ), ); diff --git a/src/components/views/rooms/RoomHeader.tsx b/src/components/views/rooms/RoomHeader.tsx index cdfd6d833d..78d3f8139f 100644 --- a/src/components/views/rooms/RoomHeader.tsx +++ b/src/components/views/rooms/RoomHeader.tsx @@ -175,43 +175,55 @@ export default function RoomHeader({ room }: { room: Room }): JSX.Element { {!useElementCallExclusively && ( + + { + evt.stopPropagation(); + placeCall(room, CallType.Voice, voiceCallType); + }} + > + + + + )} + { - placeCall(room, CallType.Voice, voiceCallType); + disabled={!!videoCallDisabledReason} + title={!videoCallDisabledReason ? _t("Video call") : videoCallDisabledReason!} + onClick={(evt) => { + evt.stopPropagation(); + placeCall(room, CallType.Video, videoCallType); }} > - + - )} - { - placeCall(room, CallType.Video, videoCallType); - }} - > - - - { - showOrHidePanel(RightPanelPhases.ThreadPanel); - }} - title={_t("common|threads")} - > - - - { - showOrHidePanel(RightPanelPhases.NotificationPanel); - }} - title={_t("Notifications")} - > - - + + + { + evt.stopPropagation(); + showOrHidePanel(RightPanelPhases.ThreadPanel); + }} + title={_t("common|threads")} + > + + + + + { + evt.stopPropagation(); + showOrHidePanel(RightPanelPhases.NotificationPanel); + }} + title={_t("Notifications")} + > + + + {!isDirectMessage && ( {formatCount(memberCount)} diff --git a/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap b/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap index d1ddaeeb42..c501271b37 100644 --- a/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap +++ b/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap @@ -37,6 +37,7 @@ exports[`RoomHeader does not show the face pile for DMs 1`] = ` >