+
}
ref={anchorRef}
+ isSmallViewPort={isSmallViewport}
/>
diff --git a/frontend/src/components/MeetingRoom/ToolbarButton/ToolbarButton.tsx b/frontend/src/components/MeetingRoom/ToolbarButton/ToolbarButton.tsx
index b970a0c6..556c3b53 100644
--- a/frontend/src/components/MeetingRoom/ToolbarButton/ToolbarButton.tsx
+++ b/frontend/src/components/MeetingRoom/ToolbarButton/ToolbarButton.tsx
@@ -8,6 +8,7 @@ export type ToolbarButtonProps = {
icon: ReactElement;
sx?: SxProps;
id?: string;
+ isSmallViewPort?: boolean;
};
/**
@@ -16,14 +17,16 @@ export type ToolbarButtonProps = {
* @param {ToolbarButtonProps} props - props for the component
* @property {Function} onClick - on click handler
* @property {ReactElement} icon - MUI Icon for button
- * @property {SxProps} sx- optional MUI style object
+ * @property {SxProps} sx - (optional) MUI style object
+ * @property {string} id - (optional) the data-testid used in unit tests
+ * @property {boolean} isSmallViewPort - (optional) indicates whether the device is a small view port.
* @returns {ReactElement}
*/
const ToolbarButton = forwardRef(function ToolbarButton(
props: ToolbarButtonProps,
ref: ForwardedRef
) {
- const { icon: Icon, sx = {}, ...rest } = props;
+ const { icon: Icon, sx = {}, isSmallViewPort, ...rest } = props;
return (
{
expect(screen.queryByTestId('toolbar-overflow-menu')).not.toBeInTheDocument();
});
+
+ it('renders all the available buttons including the Report Issue button if enabled', () => {
+ vi.stubEnv('VITE_ENABLE_REPORT_ISSUE', 'true');
+ render();
+ expect(screen.getByTestId('layout-button')).toBeVisible();
+ expect(screen.getByTestId('archiving-button')).toBeVisible();
+ expect(screen.getByTestId('emoji-grid-button')).toBeVisible();
+ expect(screen.getByTestId('report-issue-button')).toBeVisible();
+ expect(screen.getByTestId('participant-list-button')).toBeVisible();
+ expect(screen.getByTestId('chat-button')).toBeVisible();
+ });
+
+ it('does not render Report Issue button in overflow menu if it was disabled', () => {
+ vi.stubEnv('VITE_ENABLE_REPORT_ISSUE', 'false');
+ render();
+ expect(screen.getByTestId('layout-button')).toBeVisible();
+ expect(screen.getByTestId('archiving-button')).toBeVisible();
+ expect(screen.getByTestId('emoji-grid-button')).toBeVisible();
+ expect(screen.queryByTestId('report-issue-button')).not.toBeInTheDocument();
+ expect(screen.getByTestId('participant-list-button')).toBeVisible();
+ expect(screen.getByTestId('chat-button')).toBeVisible();
+ });
});
diff --git a/frontend/src/components/MeetingRoom/ToolbarOverflowMenu/ToolbarOverflowMenu.tsx b/frontend/src/components/MeetingRoom/ToolbarOverflowMenu/ToolbarOverflowMenu.tsx
index 31c6a6e0..c7a4dcd6 100644
--- a/frontend/src/components/MeetingRoom/ToolbarOverflowMenu/ToolbarOverflowMenu.tsx
+++ b/frontend/src/components/MeetingRoom/ToolbarOverflowMenu/ToolbarOverflowMenu.tsx
@@ -3,6 +3,9 @@ import { Grow, Paper, Popper } from '@mui/material';
import { Dispatch, ReactElement, RefObject, SetStateAction } from 'react';
import ArchivingButton from '../ArchivingButton';
import EmojiGridButton from '../EmojiGridButton';
+import ParticipantListButton from '../ParticipantListButton';
+import ChatButton from '../ChatButton';
+import ReportIssueButton from '../ReportIssueButton';
import LayoutButton from '../LayoutButton';
import useSessionContext from '../../../hooks/useSessionContext';
@@ -33,9 +36,17 @@ const ToolbarOverflowMenu = ({
anchorRef,
handleClickAway,
}: ToolbarOverflowMenuProps): ReactElement => {
- const { subscriberWrappers } = useSessionContext();
+ const {
+ subscriberWrappers,
+ rightPanelActiveTab,
+ toggleParticipantList,
+ toggleChat,
+ toggleReportIssue,
+ } = useSessionContext();
const isViewingScreenShare = subscriberWrappers.some((subWrapper) => subWrapper.isScreenshare);
-
+ const participantCount =
+ subscriberWrappers.filter(({ isScreenshare }) => !isScreenshare).length + 1;
+ const isReportIssueEnabled = import.meta.env.VITE_ENABLE_REPORT_ISSUE === 'true';
return (
+ {isReportIssueEnabled && (
+
+ )}
+
+