Fix: Clicking on members pile does nothing. (#11657)

* Fix: Clicking on pile opens members list

* onClick used on Accessible Component

* Updated snapshots for testing

* Snapshots updated after merging

---------

Co-authored-by: Manan Sadana <manan.sadana@cnhteam.onmicrosoft.com>
This commit is contained in:
Manan Sadana 2023-10-06 12:24:25 +05:30 committed by GitHub
parent 91413bc6b6
commit 54fa9a572e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 22 deletions

View File

@ -189,6 +189,7 @@ limitations under the License.
.mx_FacePile { .mx_FacePile {
display: inline-block; display: inline-block;
cursor: pointer;
} }
.mx_SpaceRoomView_landing_inviteButton, .mx_SpaceRoomView_landing_inviteButton,

View File

@ -19,6 +19,7 @@ import { RoomMember } from "matrix-js-sdk/src/matrix";
import { AvatarStack, Tooltip } from "@vector-im/compound-web"; import { AvatarStack, Tooltip } from "@vector-im/compound-web";
import MemberAvatar from "../avatars/MemberAvatar"; import MemberAvatar from "../avatars/MemberAvatar";
import AccessibleButton, { ButtonEvent } from "./AccessibleButton";
interface IProps extends HTMLAttributes<HTMLSpanElement> { interface IProps extends HTMLAttributes<HTMLSpanElement> {
members: RoomMember[]; members: RoomMember[];
@ -28,6 +29,7 @@ interface IProps extends HTMLAttributes<HTMLSpanElement> {
tooltipShortcut?: string; tooltipShortcut?: string;
children?: ReactNode; children?: ReactNode;
viewUserOnClick?: boolean; viewUserOnClick?: boolean;
onClick?: (e: ButtonEvent) => void | Promise<void>;
} }
const FacePile: FC<IProps> = ({ const FacePile: FC<IProps> = ({
@ -64,8 +66,10 @@ const FacePile: FC<IProps> = ({
const content = ( const content = (
<div className="mx_FacePile"> <div className="mx_FacePile">
<AvatarStack>{pileContents}</AvatarStack> <AccessibleButton kind="link_inline" onClick={props.onClick ?? null}>
{children} <AvatarStack>{pileContents}</AvatarStack>
{children}
</AccessibleButton>
</div> </div>
); );

View File

@ -23,6 +23,7 @@ import DMRoomMap from "../../../utils/DMRoomMap";
import FacePile from "./FacePile"; import FacePile from "./FacePile";
import { useRoomMembers } from "../../../hooks/useRoomMembers"; import { useRoomMembers } from "../../../hooks/useRoomMembers";
import MatrixClientContext from "../../../contexts/MatrixClientContext"; import MatrixClientContext from "../../../contexts/MatrixClientContext";
import { ButtonEvent } from "./AccessibleButton";
const DEFAULT_NUM_FACES = 5; const DEFAULT_NUM_FACES = 5;
@ -32,6 +33,7 @@ interface IProps extends HTMLAttributes<HTMLSpanElement> {
room: Room; room: Room;
onlyKnownUsers?: boolean; onlyKnownUsers?: boolean;
numShown?: number; numShown?: number;
onClick?: (e: ButtonEvent) => void | Promise<void>;
} }
const RoomFacePile: FC<IProps> = ({ room, onlyKnownUsers = true, numShown = DEFAULT_NUM_FACES, ...props }) => { const RoomFacePile: FC<IProps> = ({ room, onlyKnownUsers = true, numShown = DEFAULT_NUM_FACES, ...props }) => {

View File

@ -7,18 +7,24 @@ exports[`<FacePile /> renders with a tooltip 1`] = `
data-state="closed" data-state="closed"
> >
<div <div
class="_stacked-avatars_ylj7w_116" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_link_inline"
role="button"
tabindex="0"
> >
<span <div
class="_avatar_ylj7w_17 mx_BaseAvatar _avatar-imageless_ylj7w_56" class="_stacked-avatars_ylj7w_116"
data-color="8"
data-testid="avatar-img"
data-type="round"
role="presentation"
style="--cpd-avatar-size: 36px;"
> >
4 <span
</span> class="_avatar_ylj7w_17 mx_BaseAvatar _avatar-imageless_ylj7w_56"
data-color="8"
data-testid="avatar-img"
data-type="round"
role="presentation"
style="--cpd-avatar-size: 36px;"
>
4
</span>
</div>
</div> </div>
</div> </div>
</DocumentFragment> </DocumentFragment>

View File

@ -7,18 +7,24 @@ exports[`<RoomFacePile /> renders 1`] = `
data-state="closed" data-state="closed"
> >
<div <div
class="_stacked-avatars_ylj7w_116" class="mx_AccessibleButton mx_AccessibleButton_hasKind mx_AccessibleButton_kind_link_inline"
role="button"
tabindex="0"
> >
<span <div
class="_avatar_ylj7w_17 mx_BaseAvatar _avatar-imageless_ylj7w_56" class="_stacked-avatars_ylj7w_116"
data-color="8"
data-testid="avatar-img"
data-type="round"
role="presentation"
style="--cpd-avatar-size: 28px;"
> >
b <span
</span> class="_avatar_ylj7w_17 mx_BaseAvatar _avatar-imageless_ylj7w_56"
data-color="8"
data-testid="avatar-img"
data-type="round"
role="presentation"
style="--cpd-avatar-size: 28px;"
>
b
</span>
</div>
</div> </div>
</div> </div>
</DocumentFragment> </DocumentFragment>