Skip to content

Commit 643afe1

Browse files
committed
fix(plugins): add svg icon support to media area button +
Also adds missing tooltip support to the button.
1 parent 379c207 commit 643afe1

3 files changed

Lines changed: 29 additions & 4 deletions

File tree

bigbluebutton-html5/imports/ui/components/actions-bar/media-area/media-sharing/component.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import React, { useEffect, useState } from 'react';
22
import IconButton from '@mui/material/IconButton';
33
import CloseIcon from '@mui/icons-material/Close';
4-
import { colorPrimary } from '/imports/ui/stylesheets/styled-components/palette';
4+
import SvgIcon from '@mui/material/SvgIcon';
5+
import { btnDefaultColor, colorPrimary } from '/imports/ui/stylesheets/styled-components/palette';
56
import CoPresentIcon from '@mui/icons-material/CoPresent';
67
import KEYS from '/imports/utils/keys';
78
import { useIsScreenGloballyBroadcasting, screenshareHasEnded } from '/imports/ui/components/screenshare/service';
@@ -214,6 +215,7 @@ const MediaSharingModal: React.FC<MediaSharingModalProps> = ({
214215
color={hasCameraAsContent ? 'primary' : 'default'}
215216
text={intl.formatMessage(intlMessages.shareCameraAsContent)}
216217
icon={<Icon iconName="video" />}
218+
tooltip={intl.formatMessage(intlMessages.shareCameraAsContent)}
217219
onClick={handleCameraAsContentClick}
218220
/>
219221
)}
@@ -225,7 +227,15 @@ const MediaSharingModal: React.FC<MediaSharingModalProps> = ({
225227
dataTest={item.dataTest}
226228
color="default"
227229
text={item.label || ''}
228-
icon={item.icon ? <Icon iconName={item.icon} /> : undefined}
230+
icon={item?.icon && 'iconName' in item.icon ? (
231+
<Icon iconName={item.icon.iconName} />
232+
) : (
233+
<SvgIcon fontSize="large" sx={{ color: btnDefaultColor }}>
234+
{/* @ts-ignore */}
235+
{item.icon?.svgContent}
236+
</SvgIcon>
237+
)}
238+
tooltip={item.tooltip}
229239
onClick={() => {
230240
if (item.onClick) item.onClick();
231241
handleClose();

bigbluebutton-html5/imports/ui/components/actions-bar/media-area/media-sharing/media-button/component.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { IconButton } from '@mui/material';
33
import SettingsIcon from '@mui/icons-material/Settings';
44
import Styled from './styles';
55
import { colorPrimary, colorWhite } from '/imports/ui/stylesheets/styled-components/palette';
6+
import TooltipContainer from '/imports/ui/components/common/tooltip/container';
67

78
export interface MediaButtonProps {
89
color: string;
@@ -12,6 +13,7 @@ export interface MediaButtonProps {
1213
onClick?: () => void;
1314
/** The main icon to be rendered in the button */
1415
icon?: React.ReactElement;
16+
tooltip?: string;
1517
}
1618

1719
export const MediaButton: FunctionComponent<MediaButtonProps> = ({
@@ -21,6 +23,7 @@ export const MediaButton: FunctionComponent<MediaButtonProps> = ({
2123
dataTest,
2224
onClick,
2325
icon,
26+
tooltip,
2427
}) => {
2528
let settingsIconColor = 'inherit';
2629
if (color === 'active') {
@@ -29,7 +32,7 @@ export const MediaButton: FunctionComponent<MediaButtonProps> = ({
2932
settingsIconColor = colorWhite;
3033
}
3134

32-
return (
35+
const buttonContent = (
3336
<Styled.MediaButtonContainer data-test={dataTest}>
3437
<Styled.ButtonFrame color={color} onClick={onClick}>
3538
{showSettingsIcon && (
@@ -52,6 +55,16 @@ export const MediaButton: FunctionComponent<MediaButtonProps> = ({
5255
<Styled.ButtonText>{text}</Styled.ButtonText>
5356
</Styled.MediaButtonContainer>
5457
);
58+
59+
if (tooltip && tooltip !== '') {
60+
return (
61+
<TooltipContainer position="top" title={tooltip}>
62+
{buttonContent}
63+
</TooltipContainer>
64+
);
65+
}
66+
67+
return buttonContent;
5568
};
5669

5770
export default MediaButton;

bigbluebutton-html5/imports/ui/components/actions-bar/media-area/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { IntlShape } from 'react-intl';
22
import { MediaAreaItemType } from 'bigbluebutton-html-plugin-sdk/dist/cjs/extensible-areas/media-area-item/enums';
3+
import { MediaAreaIconType } from 'bigbluebutton-html-plugin-sdk/dist/cjs/extensible-areas/media-area-item/types';
34

45
export interface MediaButtonPluginItem {
56
type: MediaAreaItemType;
67
id: string;
7-
icon?: string;
8+
icon?: MediaAreaIconType;
9+
tooltip?: string;
810
label?: string;
911
onClick?: () => void;
1012
allowed: boolean;

0 commit comments

Comments
 (0)