///
import { IContextualMenuStyles, IContextualMenuItemStyles } from '@fluentui/react';
import { ParticipantListProps, ParticipantListStyles, ParticipantMenuItemsCallback } from './ParticipantList';
import { ControlBarButtonProps, ControlBarButtonStyles } from './ControlBarButton';
import { CommunicationParticipant } from '../types/CommunicationParticipant';
import { OnRenderAvatarCallback } from '../types/OnRender';
import { ParticipantListParticipant } from '../types';
/**
* Styles for the {@link ParticipantsButton} menu.
*
* @public
*/
export interface ParticipantsButtonContextualMenuStyles extends IContextualMenuStyles {
/** Styles for the {@link ParticipantsButton} menu items. */
menuItemStyles?: IContextualMenuItemStyles;
/** Styles for the {@link ParticipantList} menu item inside the {@link ParticipantsButton} menu. */
participantListStyles?: ParticipantListStyles;
}
/**
* Styles Props for {@link ParticipantsButton}.
*
* @public
*/
export interface ParticipantsButtonStyles extends ControlBarButtonStyles {
/** Styles of the {@link ParticipantsButton} menu flyout */
menuStyles?: Partial;
}
/**
* Strings of {@link ParticipantsButton} that can be overridden.
*
* @public
*/
export interface ParticipantsButtonStrings {
/**
* Label of button
*/
label: string;
/**
* Button tooltip content.
*/
tooltipContent?: string;
/**
* Aria label for button accessibility announcement
*/
ariaLabel?: string;
/**
* Header of menu pop up
*/
menuHeader: string;
/**
* Label of menu button to show list of participants. Placeholders: [numParticipants]
*/
participantsListButtonLabel: string;
/**
* Label of menu button to copy invite link
*/
copyInviteLinkButtonLabel: string;
/**
* Label of menu button to mute all participants
*/
muteAllButtonLabel: string;
/**
* Narrator announcement for when the invite link has been copied by the user to the clipboard
*/
copyInviteLinkActionedAriaLabel: string;
}
/**
* Props for {@link ParticipantsButton}.
*
* @public
*/
export interface ParticipantsButtonProps extends ControlBarButtonProps {
/**
* Participants in user call or chat
*/
participants: ParticipantListParticipant[];
/**
* User ID of user
*/
myUserId?: string;
/**
* If set to `true`, excludes the local participant from the participant list with use of `myUserId` props (required in this case).
*
* @defaultValue `false`
*/
excludeMe?: boolean;
/**
* Callback to render each participant. If no callback is provided, each participant will be rendered with `ParticipantItem`
*/
onRenderParticipant?: (participant: CommunicationParticipant) => JSX.Element | null;
/**
* Callback to render the avatar for each participant. This property will have no effect if `onRenderParticipant` is assigned.
*/
onRenderAvatar?: OnRenderAvatarCallback;
/**
* Callback to render the context menu for each participant
*/
onRemoveParticipant?: (userId: string) => void;
/**
* Callback to render custom menu items for each participant.
*/
onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;
/**
* Optional callback to render a custom participant list.
*/
onRenderParticipantList?: (props: ParticipantListProps) => JSX.Element | null;
/**
* Allows users to pass an object containing custom CSS styles.
* @Example
* ```
*
* ```
*/
styles?: ParticipantsButtonStyles;
/**
* URL to invite new participants to the current call
*/
callInvitationURL?: string;
/**
* CallBack to mute all remote participants
*/
onMuteAll?: () => void;
/**
* Optional strings to override in component
*/
strings?: Partial;
/** Optional value to determine if the tooltip should be shown for participants or not */
showParticipantOverflowTooltip?: boolean;
}
/**
* A button to show a menu with calling or chat participants.
*
* Can be used with {@link ControlBar}.
*
* This button contains dropdown menu items defined through its property `menuProps`. By default, it can display the number of remote participants with the full list
* as sub-menu and an option to mute all participants, as well as a copy-to-clipboard button to copy the call invitation URL.
* This `menuProps` can be fully redefined and its property is of type [IContextualMenuProps](https://developer.microsoft.com/fluentui#/controls/web/contextualmenu#IContextualMenuProps).
*
* @public
*/
export declare const ParticipantsButton: (props: ParticipantsButtonProps) => JSX.Element;
//# sourceMappingURL=ParticipantsButton.d.ts.map