Files
element-call/src/room/OverflowMenu.jsx

93 lines
2.8 KiB
React
Raw Normal View History

2021-12-03 16:42:29 -08:00
import React, { useCallback } from "react";
2022-01-05 16:55:41 -08:00
import { Button } from "../button";
import { Menu } from "../Menu";
2022-01-05 17:21:30 -08:00
import { PopoverMenuTrigger } from "../popover/PopoverMenu";
2021-12-06 17:34:10 -08:00
import { Item } from "@react-stately/collections";
2022-01-05 16:55:41 -08:00
import { ReactComponent as SettingsIcon } from "../icons/Settings.svg";
import { ReactComponent as AddUserIcon } from "../icons/AddUser.svg";
import { ReactComponent as OverflowIcon } from "../icons/Overflow.svg";
import { useModalTriggerState } from "../Modal";
import { SettingsModal } from "../settings/SettingsModal";
2022-01-05 16:58:55 -08:00
import { InviteModal } from "./InviteModal";
2022-02-04 16:55:57 -08:00
import { TooltipTrigger } from "../Tooltip";
import { FeedbackModal } from "./FeedbackModal";
2021-12-03 16:42:29 -08:00
2021-12-06 17:34:10 -08:00
export function OverflowMenu({
2021-12-10 13:44:06 -08:00
roomId,
2021-12-06 17:34:10 -08:00
setShowInspector,
showInspector,
client,
2022-02-04 16:55:57 -08:00
inCall,
groupCall,
2021-12-06 17:34:10 -08:00
}) {
const { modalState: inviteModalState, modalProps: inviteModalProps } =
useModalTriggerState();
const { modalState: settingsModalState, modalProps: settingsModalProps } =
useModalTriggerState();
2022-02-04 16:55:57 -08:00
const { modalState: feedbackModalState, modalProps: feedbackModalProps } =
useModalTriggerState();
2021-12-06 17:34:10 -08:00
// TODO: On closing modal, focus should be restored to the trigger button
// https://github.com/adobe/react-spectrum/issues/2444
const onAction = useCallback((key) => {
switch (key) {
case "invite":
inviteModalState.open();
break;
case "settings":
settingsModalState.open();
break;
2022-02-04 16:55:57 -08:00
case "feedback":
feedbackModalState.open();
break;
2021-12-06 17:34:10 -08:00
}
});
2021-12-03 16:42:29 -08:00
return (
2021-12-06 17:34:10 -08:00
<>
2021-12-13 15:36:35 -08:00
<PopoverMenuTrigger disableOnState>
2022-01-20 13:03:54 -08:00
<TooltipTrigger placement="top">
2021-12-14 22:00:00 -08:00
<Button variant="toolbar">
<OverflowIcon />
</Button>
2022-01-20 13:03:54 -08:00
{() => "More"}
2021-12-14 22:00:00 -08:00
</TooltipTrigger>
2021-12-06 17:34:10 -08:00
{(props) => (
<Menu {...props} label="More menu" onAction={onAction}>
<Item key="invite" textValue="Invite people">
<AddUserIcon />
<span>Invite people</span>
</Item>
<Item key="settings" textValue="Settings">
<SettingsIcon />
<span>Settings</span>
</Item>
2022-02-04 16:55:57 -08:00
<Item key="feedback" textValue="Submit Feedback">
<SettingsIcon />
<span>Submit Feedback</span>
</Item>
2021-12-06 17:34:10 -08:00
</Menu>
)}
</PopoverMenuTrigger>
{settingsModalState.isOpen && (
<SettingsModal
{...settingsModalProps}
setShowInspector={setShowInspector}
showInspector={showInspector}
client={client}
/>
)}
{inviteModalState.isOpen && (
2021-12-10 13:44:06 -08:00
<InviteModal roomId={roomId} {...inviteModalProps} />
2021-12-03 16:42:29 -08:00
)}
2022-02-04 16:55:57 -08:00
{feedbackModalState.isOpen && (
<FeedbackModal
{...feedbackModalProps}
roomId={groupCall?.room.roomId}
inCall={inCall}
/>
)}
2021-12-06 17:34:10 -08:00
</>
2021-12-03 16:42:29 -08:00
);
}