mirror of
https://github.com/vector-im/element-call.git
synced 2026-10-13 23:35:51 +00:00
compound-web 10.4.0 treats a PortalRoot whose root is null as one whose root is not available yet, so floating-ui never mounts the portal and every tooltip label, and with it every icon button's accessible name, is missing. The component defaulted portalRoot to null and wrapped the call unconditionally. Wrap the call only when the host supplied a root, keeping null as the not-yet-available case Compound defines, and say so on the prop. Cover it in CallPortalRoot.test.tsx. Drop the git allowBuilds entry for compound-web now that it is a release again. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
27 lines
782 B
TypeScript
27 lines
782 B
TypeScript
/*
|
|
Copyright 2026 Element Creations Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE in the repository root for full details.
|
|
*/
|
|
|
|
import { type FC, type ReactNode } from "react";
|
|
import { PortalRoot } from "@vector-im/compound-web";
|
|
|
|
interface Props {
|
|
root: HTMLElement | null | undefined;
|
|
children: ReactNode;
|
|
}
|
|
|
|
/**
|
|
* Where Compound floats the call's menus and tooltips. With no `root` the call
|
|
* is not wrapped at all and they go into the host document's body; `null` is
|
|
* Compound's "not available yet", and the floating parts wait for it.
|
|
*/
|
|
export const CallPortalRoot: FC<Props> = ({ root, children }): ReactNode =>
|
|
root === undefined ? (
|
|
children
|
|
) : (
|
|
<PortalRoot root={root}>{children}</PortalRoot>
|
|
);
|