import React from 'react'; import _ from 'lodash'; import styled from 'styled-components'; import { contextMenu } from 'react-contexify'; type SProps = { onArrowClick: (e: React.MouseEvent) => void; onMainButtonClick: (e: React.MouseEvent) => void; isMuted?: boolean; isFullScreen?: boolean; iconType: 'microphone' | 'camera' | 'volume'; }; const StyledRoundedButton = styled.div<{ isFullScreen: boolean; isMuted: boolean }>` border-radius: 50%; cursor: pointer; transition-duration: var(--default-duration); background-color: ${props => props.isMuted ? 'var(--call-buttons-background-disabled-color)' : props.isFullScreen ? 'var(--call-buttons-action-background-color)' : 'var(--call-buttons-background-color)'}; color: ${props => props.isMuted ? 'var(--call-buttons-icon-disabled-color)' : props.isFullScreen ? 'var(--call-buttons-action-icon-color)' : 'var(--call-buttons-icon-color)'}; ${props => props.isFullScreen && 'opacity: 0.4;'} &:hover { background-color: ${props => props.isFullScreen ? 'var(--call-buttons-action-background-hover-color)' : 'var(--call-buttons-background-hover-color)'}; color: ${props => props.isFullScreen ? 'var(--call-buttons-action-icon-color)' : 'var(--call-buttons-icon-color)'}; ${props => props.isFullScreen && 'opacity: 1;'} } `; const StyledContainer = styled(StyledRoundedButton)` width: 60px; height: 60px; margin: 10px; `; const StyledMainIcon = styled.div` padding: 20px; `; const StyledArrowIcon = styled(StyledRoundedButton)` width: 35%; height: 35%; position: relative; top: -35%; right: -65%; background-color: var(--call-buttons-background-color); color: var(--call-buttons-dropdown-color); box-shadow: var(--call-buttons-dropdown-shadow); &:hover { background-color: var(--call-buttons-background-hover-color); } `; const CameraIcon = ( ); const SpeakerIcon = ( ); const MicrophoneIcon = ( ); export const DropDownAndToggleButton = (props: SProps) => { const { iconType, isFullScreen = false, onArrowClick, onMainButtonClick, isMuted } = props; const arrowClickHandler = (e: React.MouseEvent) => { e.stopPropagation(); onArrowClick(e); }; const mainButtonClickHandler = (e: React.MouseEvent) => { e.stopPropagation(); contextMenu.hideAll(); onMainButtonClick(e); }; const iconToRender = iconType === 'microphone' ? MicrophoneIcon : iconType === 'camera' ? CameraIcon : SpeakerIcon; return ( {iconToRender} {!isFullScreen && ( )} ); };