@azure/communication-react 1.3.3-alpha-202208310017.0 → 1.3.3-alpha-202209010016.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/communication-react.d.ts +23 -5
  2. package/dist/dist-cjs/communication-react/index.js +99 -58
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/react-components/src/components/Announcer.d.ts +2 -2
  7. package/dist/dist-esm/react-components/src/components/Announcer.js +1 -1
  8. package/dist/dist-esm/react-components/src/components/Announcer.js.map +1 -1
  9. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.js +1 -1
  10. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.js.map +1 -1
  11. package/dist/dist-esm/react-components/src/components/index.d.ts +2 -0
  12. package/dist/dist-esm/react-components/src/components/index.js +1 -0
  13. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  14. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js +3 -0
  15. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js.map +1 -1
  16. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +4 -0
  17. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  18. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  19. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  20. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +3 -7
  21. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  22. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.d.ts +2 -1
  23. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js +3 -1
  24. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js.map +1 -1
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js +3 -6
  26. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js.map +1 -1
  27. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.js +8 -5
  28. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.js.map +1 -1
  29. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +10 -0
  30. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +31 -4
  31. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  32. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +15 -5
  33. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +3 -2
  34. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  35. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +6 -5
  36. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  37. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.d.ts +2 -0
  38. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js +3 -1
  39. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js.map +1 -1
  40. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +4 -0
  41. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js +9 -5
  43. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.d.ts +1 -0
  45. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js +17 -6
  46. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.d.ts +2 -0
  48. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.js +2 -2
  49. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.js.map +1 -1
  50. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +7 -5
  51. package/package.json +8 -8
@@ -1265,6 +1265,10 @@ export declare interface CallCompositeStrings {
1265
1265
  * Label for the button to open dtmf dialpad
1266
1266
  */
1267
1267
  openDtmfDialpadLabel: string;
1268
+ /**
1269
+ * aria label for when the invite link has been actioned
1270
+ */
1271
+ copyInviteLinkActionedAriaLabel: string;
1268
1272
  }
1269
1273
 
1270
1274
  /**
@@ -2262,6 +2266,10 @@ export declare interface CallWithChatCompositeStrings {
2262
2266
  * Label for the button to open dtmf dialpad
2263
2267
  */
2264
2268
  openDtmfDialpadLabel: string;
2269
+ /**
2270
+ * aria label for when the invite link has been actioned
2271
+ */
2272
+ copyInviteLinkActionedAriaLabel: string;
2265
2273
  }
2266
2274
 
2267
2275
  /**
@@ -2284,12 +2292,16 @@ export declare interface CallWithChatControlOptions {
2284
2292
  * Show or Hide Microphone button during a call.
2285
2293
  * @defaultValue true
2286
2294
  */
2287
- microphoneButton?: boolean;
2295
+ microphoneButton?: boolean | /* @conditional-compile-remove(PSTN-calls) */ {
2296
+ disabled: boolean;
2297
+ };
2288
2298
  /**
2289
2299
  * Show or Hide Camera Button during a call
2290
2300
  * @defaultValue true
2291
2301
  */
2292
- cameraButton?: boolean;
2302
+ cameraButton?: boolean | /* @conditional-compile-remove(PSTN-calls) */ {
2303
+ disabled: boolean;
2304
+ };
2293
2305
  /**
2294
2306
  * Show, Hide or Disable the screen share button during a call.
2295
2307
  * @defaultValue true
@@ -2306,12 +2318,16 @@ export declare interface CallWithChatControlOptions {
2306
2318
  * Show or hide the chat button in the call-with-chat composite control bar.
2307
2319
  * @defaultValue true
2308
2320
  */
2309
- chatButton?: boolean;
2321
+ chatButton?: boolean | /* @conditional-compile-remove(PSTN-calls) */ {
2322
+ disabled: boolean;
2323
+ };
2310
2324
  /**
2311
2325
  * Show or hide the people button in the call-with-chat composite control bar.
2312
2326
  * @defaultValue true
2313
2327
  */
2314
- peopleButton?: boolean;
2328
+ peopleButton?: boolean | /* @conditional-compile-remove(PSTN-calls) */ {
2329
+ disabled: boolean;
2330
+ };
2315
2331
  /**
2316
2332
  * Inject custom buttons in the call controls.
2317
2333
  *
@@ -2325,7 +2341,9 @@ export declare interface CallWithChatControlOptions {
2325
2341
  /**
2326
2342
  * Show or hide the hold button in the bottom sheet drawer
2327
2343
  */
2328
- holdButton?: boolean;
2344
+ holdButton?: boolean | {
2345
+ disabled: boolean;
2346
+ };
2329
2347
  }
2330
2348
 
2331
2349
  /**
@@ -192,7 +192,7 @@ const fromFlatCommunicationIdentifier = (id) => {
192
192
  // Copyright (c) Microsoft Corporation.
193
193
  // Licensed under the MIT license.
194
194
  // GENERATED FILE. DO NOT EDIT MANUALLY.
195
- var telemetryVersion = '1.3.3-alpha-202208310017.0';
195
+ var telemetryVersion = '1.3.3-alpha-202209010016.0';
196
196
 
197
197
  // Copyright (c) Microsoft Corporation.
198
198
  /**
@@ -2189,7 +2189,7 @@ const VoiceOverButton = (props) => {
2189
2189
 
2190
2190
  // Copyright (c) Microsoft Corporation.
2191
2191
  /**
2192
- * @private
2192
+ * @internal
2193
2193
  * Announcer component to maker aria announcements on actions
2194
2194
  */
2195
2195
  const Announcer = (props) => {
@@ -7299,7 +7299,7 @@ const DrawerMenuItem = (props) => {
7299
7299
  const onClick = (ev) => props.onItemClick && props.onItemClick(ev, props.itemKey);
7300
7300
  const onKeyPress = (ev) => onClick && submitWithKeyboard(ev, onClick);
7301
7301
  const secondaryIcon = props.secondaryIconProps ? (React__default['default'].createElement(MenuItemIcon, Object.assign({}, props.secondaryIconProps))) : props.subMenuProps ? (React__default['default'].createElement(MenuItemIcon, { iconName: "ChevronRight" })) : undefined;
7302
- return (React__default['default'].createElement(react.Stack, { tabIndex: 0, role: "menuitem", horizontal: true, className: react.mergeStyles(drawerMenuItemRootStyles(theme.palette.neutralLight, theme.fonts.small), props.disabled ? disabledDrawerMenuItemRootStyles(theme.palette.neutralQuaternaryAlt) : undefined, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root), onKeyPress: onKeyPress, onClick: onClick, tokens: menuItemChildrenGap },
7302
+ return (React__default['default'].createElement(react.Stack, { tabIndex: 0, role: "menuitem", horizontal: true, className: react.mergeStyles(drawerMenuItemRootStyles(theme.palette.neutralLight, theme.fonts.small), props.disabled ? disabledDrawerMenuItemRootStyles(theme.palette.neutralQuaternaryAlt) : undefined, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root), onKeyPress: props.disabled ? undefined : onKeyPress, onClick: props.disabled ? undefined : onClick, tokens: menuItemChildrenGap },
7303
7303
  props.iconProps && (React__default['default'].createElement(react.Stack.Item, { role: "presentation", styles: props.disabled ? { root: { color: theme.palette.neutralTertiaryAlt } } : undefined },
7304
7304
  React__default['default'].createElement(MenuItemIcon, Object.assign({}, props.iconProps)))),
7305
7305
  React__default['default'].createElement(react.Stack.Item, { styles: drawerMenuItemTextStyles, grow: true },
@@ -7774,6 +7774,9 @@ const iconButtonStyles = (theme) => {
7774
7774
  return {
7775
7775
  root: {
7776
7776
  color: `${theme.palette.black}`
7777
+ },
7778
+ icon: {
7779
+ height: 'auto'
7777
7780
  }
7778
7781
  };
7779
7782
  };
@@ -12791,7 +12794,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
12791
12794
  */
12792
12795
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
12793
12796
 
12794
- var call$d={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",peopleButtonLabel:"People",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",soundLabel:"Sound",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close Dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show Dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close Dialpad",openDtmfDialpadLabel:"Show Dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12797
+ var call$d={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",peopleButtonLabel:"People",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",soundLabel:"Sound",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12795
12798
 
12796
12799
  var call$c={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",defaultPlaceHolder:"Select an option",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",soundLabel:"Sound",startCallButtonLabel:"Start call",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby."};var chat$c={chatListHeader:"In this chat"};var callWithChat$c={peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipOpen:"Show chat",chatButtonTooltipClose:"Hide chat",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"New Message",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",copyInviteLinkButtonLabel:"Copy invite link",dismissSidePaneButton:"Close",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back"};var en_GB = {call:call$c,chat:chat$c,callWithChat:callWithChat$c};
12797
12800
 
@@ -14454,7 +14457,8 @@ const END_CALL_PAGES = [
14454
14457
 
14455
14458
  // Copyright (c) Microsoft Corporation.
14456
14459
  const ACCESS_DENIED_TEAMS_MEETING_SUB_CODE = 5854;
14457
- const REMOVED_FROM_CALL_SUB_CODES = [5000, 5300];
14460
+ const REMOTE_PSTN_USER_HUNG_UP = 560000;
14461
+ const REMOVED_FROM_CALL_SUB_CODES = [5000, 5300, REMOTE_PSTN_USER_HUNG_UP];
14458
14462
  /**
14459
14463
  * @private
14460
14464
  */
@@ -14499,11 +14503,23 @@ var CallEndReasons;
14499
14503
  CallEndReasons[CallEndReasons["REMOVED_FROM_CALL"] = 2] = "REMOVED_FROM_CALL";
14500
14504
  })(CallEndReasons || (CallEndReasons = {}));
14501
14505
  const getCallEndReason = (call) => {
14502
- var _a, _b;
14503
- if (((_a = call.callEndReason) === null || _a === void 0 ? void 0 : _a.subCode) && call.callEndReason.subCode === ACCESS_DENIED_TEAMS_MEETING_SUB_CODE) {
14506
+ var _a, _b, _c;
14507
+ const remoteParticipantsEndedArray = Array.from(Object.values(call.remoteParticipantsEnded));
14508
+ /**
14509
+ * Handle the special case in a PSTN call where removing the last user kicks the caller out of the call.
14510
+ * The code and subcode is the same as when a user is removed from a teams interop call.
14511
+ * Hence, we look at the last remote participant removed to determine if the last participant removed was a phone number.
14512
+ * If yes, the caller was kicked out of the call, but we need to show them that they left the call.
14513
+ */
14514
+ if (remoteParticipantsEndedArray.length === 1 &&
14515
+ communicationCommon.isPhoneNumberIdentifier(remoteParticipantsEndedArray[0].identifier) &&
14516
+ ((_a = call.callEndReason) === null || _a === void 0 ? void 0 : _a.subCode) !== REMOTE_PSTN_USER_HUNG_UP) {
14517
+ return CallEndReasons.LEFT_CALL;
14518
+ }
14519
+ if (((_b = call.callEndReason) === null || _b === void 0 ? void 0 : _b.subCode) && call.callEndReason.subCode === ACCESS_DENIED_TEAMS_MEETING_SUB_CODE) {
14504
14520
  return CallEndReasons.ACCESS_DENIED;
14505
14521
  }
14506
- if (((_b = call.callEndReason) === null || _b === void 0 ? void 0 : _b.subCode) && REMOVED_FROM_CALL_SUB_CODES.includes(call.callEndReason.subCode)) {
14522
+ if (((_c = call.callEndReason) === null || _c === void 0 ? void 0 : _c.subCode) && REMOVED_FROM_CALL_SUB_CODES.includes(call.callEndReason.subCode)) {
14507
14523
  return CallEndReasons.REMOVED_FROM_CALL;
14508
14524
  }
14509
14525
  if (call.callEndReason) {
@@ -14610,6 +14626,19 @@ const disableCallControls = (callControlOptions, disabledControls) => {
14610
14626
  }
14611
14627
  return newOptions;
14612
14628
  };
14629
+ /**
14630
+ * Check if a disabled object is provided for a button and returns if the button is disabled.
14631
+ *
14632
+ * @param option
14633
+ * @returns whether a button is disabled
14634
+ * @private
14635
+ */
14636
+ const isDisabled$2 = (option) => {
14637
+ if (typeof option !== 'boolean') {
14638
+ return !!(option === null || option === void 0 ? void 0 : option.disabled);
14639
+ }
14640
+ return option;
14641
+ };
14613
14642
 
14614
14643
  // Copyright (c) Microsoft Corporation.
14615
14644
  // Licensed under the MIT license.
@@ -14978,9 +15007,9 @@ const Participants = (props) => {
14978
15007
  var _a;
14979
15008
  return concatButtonBaseStyles(props.increaseFlyoutItemSize ? participantButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
14980
15009
  }, [props.increaseFlyoutItemSize, props.styles]);
14981
- return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$2(props.option) || props.disabled, styles: participantsButtonStyles, showParticipantOverflowTooltip: !props.isMobile })));
15010
+ return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$1(props.option) || props.disabled, styles: participantsButtonStyles, showParticipantOverflowTooltip: !props.isMobile })));
14982
15011
  };
14983
- const isDisabled$2 = (option) => {
15012
+ const isDisabled$1 = (option) => {
14984
15013
  if (option === undefined || option === true || option === false) {
14985
15014
  return false;
14986
15015
  }
@@ -14994,11 +15023,11 @@ const ScreenShare = (props) => {
14994
15023
  const styles = React.useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);
14995
15024
  const screenShareButtonDisabled = () => {
14996
15025
  /* @conditional-compile-remove(PSTN-calls) */
14997
- return (screenShareButtonProps === null || screenShareButtonProps === void 0 ? void 0 : screenShareButtonProps.disabled) ? screenShareButtonProps.disabled : isDisabled$1(props.option);
15026
+ return (screenShareButtonProps === null || screenShareButtonProps === void 0 ? void 0 : screenShareButtonProps.disabled) ? screenShareButtonProps.disabled : isDisabled(props.option);
14998
15027
  };
14999
15028
  return (React__default['default'].createElement(ScreenShareButton, Object.assign({ "data-ui-id": "call-composite-screenshare-button" }, screenShareButtonProps, { showLabel: props.displayType !== 'compact', disabled: screenShareButtonDisabled() || props.disabled, styles: styles })));
15000
15029
  };
15001
- const isDisabled$1 = (option) => {
15030
+ const isDisabled = (option) => {
15002
15031
  if (option === undefined || option === true || option === false) {
15003
15032
  return false;
15004
15033
  }
@@ -15179,7 +15208,7 @@ const CallControls = (props) => {
15179
15208
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15180
15209
  const moreButtonContextualMenuItems = () => {
15181
15210
  const items = [];
15182
- if (props.isMobile && props.onPeopleButtonClicked) {
15211
+ if (props.isMobile && props.onPeopleButtonClicked && isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton)) {
15183
15212
  items.push({
15184
15213
  key: 'peopleButtonKey',
15185
15214
  text: localeStrings.component.strings.participantsButton.label,
@@ -15192,6 +15221,7 @@ const CallControls = (props) => {
15192
15221
  itemProps: {
15193
15222
  styles: buttonFlyoutIncreasedSizeStyles
15194
15223
  },
15224
+ disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton),
15195
15225
  ['data-ui-id']: 'call-composite-more-menu-people-button'
15196
15226
  });
15197
15227
  }
@@ -15205,7 +15235,7 @@ const CallControls = (props) => {
15205
15235
  itemProps: {
15206
15236
  styles: buttonFlyoutIncreasedSizeStyles
15207
15237
  },
15208
- disabled: isDisabled(options === null || options === void 0 ? void 0 : options.holdButton),
15238
+ disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.holdButton),
15209
15239
  ['data-ui-id']: 'hold-button'
15210
15240
  });
15211
15241
  /* @conditional-compile-remove(PSTN-calls) */
@@ -15243,27 +15273,21 @@ const CallControls = (props) => {
15243
15273
  React__default['default'].createElement(SendDtmfDialpad, { isMobile: !!props.isMobile, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
15244
15274
  React__default['default'].createElement(react.Stack.Item, null,
15245
15275
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: controlBarStyles(theme.semanticColors.bodyBackground) },
15246
- isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.microphoneButton) })),
15247
- isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.cameraButton) })),
15248
- isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.screenShareButton) })),
15276
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) })),
15277
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) })),
15278
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) })),
15249
15279
  isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) &&
15250
15280
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15251
- !props.isMobile && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.participantsButton) })) && (
15281
+ !props.isMobile && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) })) && (
15252
15282
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15253
- React__default['default'].createElement(People, { checked: props.peopleButtonChecked, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-composite-people-button", strings: peopleButtonStrings, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.participantsButton) })),
15254
- isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.devicesButton) })),
15283
+ React__default['default'].createElement(People, { checked: props.peopleButtonChecked, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-composite-people-button", strings: peopleButtonStrings, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) })),
15284
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) })),
15255
15285
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15256
15286
  isEnabled$2(options === null || options === void 0 ? void 0 : options.moreButton) && (React__default['default'].createElement(MoreButton, { strings: moreButtonStrings, menuIconProps: { hidden: true }, menuProps: { items: moreButtonContextualMenuItems() }, showLabel: !props.isMobile })),
15257
15287
  customButtons['primary'],
15258
15288
  isEnabled$2(options === null || options === void 0 ? void 0 : options.endCallButton) && React__default['default'].createElement(EndCall, { displayType: options === null || options === void 0 ? void 0 : options.displayType })))));
15259
15289
  };
15260
15290
  const isEnabled$2 = (option) => option !== false;
15261
- const isDisabled = (option) => {
15262
- if (typeof option !== 'boolean') {
15263
- return !!(option === null || option === void 0 ? void 0 : option.disabled);
15264
- }
15265
- return option;
15266
- };
15267
15291
 
15268
15292
  // Copyright (c) Microsoft Corporation.
15269
15293
  /**
@@ -15854,6 +15878,7 @@ const AddPeopleDropdown = (props) => {
15854
15878
  const theme = react.useTheme();
15855
15879
  const { inviteLink, strings, mobileView, onAddParticipant, alternateCallerId } = props;
15856
15880
  const [showDialpad, setShowDialpad] = React.useState(false);
15881
+ const [announcerStrings, setAnnouncerStrings] = React.useState();
15857
15882
  const menuStyleThemed = React.useMemo(() => themedMenuStyle(theme), [theme]);
15858
15883
  const copyLinkButtonStylesThemed = React.useMemo(() => themedCopyLinkButtonStyles(theme, mobileView), [mobileView, theme]);
15859
15884
  const defaultMenuProps = React.useMemo(() => {
@@ -15863,6 +15888,10 @@ const AddPeopleDropdown = (props) => {
15863
15888
  useTargetWidth: true,
15864
15889
  calloutProps: {
15865
15890
  preventDismissOnEvent: _preventDismissOnEvent
15891
+ },
15892
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15893
+ onMenuOpened(contextualMenu) {
15894
+ setAnnouncerStrings(undefined);
15866
15895
  }
15867
15896
  };
15868
15897
  if (inviteLink) {
@@ -15871,7 +15900,10 @@ const AddPeopleDropdown = (props) => {
15871
15900
  text: strings.copyInviteLinkButtonLabel,
15872
15901
  itemProps: { styles: copyLinkButtonStylesThemed },
15873
15902
  iconProps: { iconName: 'Link', style: iconStyles },
15874
- onClick: () => copy__default['default'](inviteLink)
15903
+ onClick: () => {
15904
+ setAnnouncerStrings(strings.copyInviteLinkActionedAriaLabel);
15905
+ copy__default['default'](inviteLink);
15906
+ }
15875
15907
  });
15876
15908
  }
15877
15909
  // only show the dialpad option when alternateCallerId is set
@@ -15887,12 +15919,13 @@ const AddPeopleDropdown = (props) => {
15887
15919
  }
15888
15920
  return menuProps;
15889
15921
  }, [
15922
+ menuStyleThemed,
15923
+ inviteLink,
15924
+ alternateCallerId,
15890
15925
  strings.copyInviteLinkButtonLabel,
15926
+ strings.copyInviteLinkActionedAriaLabel,
15891
15927
  strings.openDialpadButtonLabel,
15892
- copyLinkButtonStylesThemed,
15893
- inviteLink,
15894
- menuStyleThemed,
15895
- alternateCallerId
15928
+ copyLinkButtonStylesThemed
15896
15929
  ]);
15897
15930
  const onDismissDialpad = () => {
15898
15931
  setShowDialpad(false);
@@ -15906,6 +15939,7 @@ const AddPeopleDropdown = (props) => {
15906
15939
  }, [defaultMenuProps, setAddPeopleDrawerMenuItems]);
15907
15940
  if (mobileView) {
15908
15941
  return (React__default['default'].createElement(react.Stack, null,
15942
+ React__default['default'].createElement(Announcer, { ariaLive: 'assertive', announcementString: announcerStrings }),
15909
15943
  React__default['default'].createElement(react.Stack.Item, { styles: copyLinkButtonContainerStyles },
15910
15944
  React__default['default'].createElement(react.PrimaryButton, { onClick: setDrawerMenuItemsForAddPeople, styles: copyLinkButtonStylesThemed, onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, "data-ui-id": "call-add-people-button" })),
15911
15945
  addPeopleDrawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles, "data-ui-id": "call-add-people-dropdown" },
@@ -15913,6 +15947,7 @@ const AddPeopleDropdown = (props) => {
15913
15947
  alternateCallerId && (React__default['default'].createElement(CallingDialpad, { isMobile: true, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad, onAddParticipant: onAddParticipant, alternateCallerId: alternateCallerId }))));
15914
15948
  }
15915
15949
  return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Stack, null,
15950
+ React__default['default'].createElement(Announcer, { ariaLive: 'assertive', announcementString: announcerStrings }),
15916
15951
  alternateCallerId && (React__default['default'].createElement(CallingDialpad, { isMobile: false, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad, onAddParticipant: onAddParticipant, alternateCallerId: alternateCallerId })),
15917
15952
  React__default['default'].createElement(react.Stack, { styles: copyLinkButtonStackStyles },
15918
15953
  React__default['default'].createElement(react.DefaultButton, { onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, menuProps: defaultMenuProps, styles: copyLinkButtonStylesThemed, "data-ui-id": "call-add-people-button" })))));
@@ -16151,8 +16186,8 @@ const TabHeader = (props) => {
16151
16186
  }, [theme, haveMultipleTabs]);
16152
16187
  return (React__default['default'].createElement(react.Stack, { horizontal: true, grow: true, styles: mobilePaneControlBarStyle },
16153
16188
  React__default['default'].createElement(react.DefaultButton, { ariaLabel: strings.returnToCallButtonAriaLabel, ariaDescription: strings.returnToCallButtonAriaDescription, onClick: onClose, styles: mobilePaneBackButtonStyles, onRenderIcon: () => React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: "ChevronLeft" }), autoFocus: true }),
16154
- React__default['default'].createElement(react.Stack.Item, { grow: true }, onChatButtonClicked && (React__default['default'].createElement(react.DefaultButton, { onClick: onChatButtonClicked, styles: mobilePaneButtonStylesThemed, checked: activeTab === 'chat', role: 'tab' }, strings.chatButtonLabel))),
16155
- React__default['default'].createElement(react.Stack.Item, { grow: true }, onPeopleButtonClicked && (React__default['default'].createElement(react.DefaultButton, { onClick: onPeopleButtonClicked, styles: mobilePaneButtonStylesThemed, checked: activeTab === 'people', role: 'tab' }, strings.peopleButtonLabel))),
16189
+ React__default['default'].createElement(react.Stack.Item, { grow: true }, onChatButtonClicked && (React__default['default'].createElement(react.DefaultButton, { onClick: onChatButtonClicked, styles: mobilePaneButtonStylesThemed, checked: activeTab === 'chat', role: 'tab', disabled: props.disableChatButton }, strings.chatButtonLabel))),
16190
+ React__default['default'].createElement(react.Stack.Item, { grow: true }, onPeopleButtonClicked && (React__default['default'].createElement(react.DefaultButton, { onClick: onPeopleButtonClicked, styles: mobilePaneButtonStylesThemed, checked: activeTab === 'people', role: 'tab', disabled: props.disablePeopleButton }, strings.peopleButtonLabel))),
16156
16191
  React__default['default'].createElement(react.DefaultButton, { styles: mobilePaneHiddenIconStyles, onRenderIcon: () => React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: "ChevronLeft" }) })));
16157
16192
  };
16158
16193
 
@@ -16199,6 +16234,7 @@ var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments,
16199
16234
  */
16200
16235
  /** @beta */
16201
16236
  const CallPane = (props) => {
16237
+ var _a;
16202
16238
  const [drawerMenuItems, setDrawerMenuItems] = React.useState([]);
16203
16239
  const hidden = props.activePane === 'none';
16204
16240
  const paneStyles = hidden ? hiddenStyles : props.mobileView ? availableSpaceStyles : sidePaneStyles;
@@ -16210,7 +16246,7 @@ const CallPane = (props) => {
16210
16246
  };
16211
16247
  const strings = getStrings();
16212
16248
  const theme = useTheme();
16213
- const header = props.activePane === 'none' ? null : props.mobileView ? (React__default['default'].createElement(TabHeader, Object.assign({}, props, { strings: strings, activeTab: props.activePane }))) : (React__default['default'].createElement(SidePaneHeader, Object.assign({}, props, { strings: strings, headingText: props.activePane === 'people' ? strings.peoplePaneTitle : '' })));
16249
+ const header = props.activePane === 'none' ? null : props.mobileView ? (React__default['default'].createElement(TabHeader, Object.assign({}, props, { strings: strings, activeTab: props.activePane, disablePeopleButton: isDisabled$2((_a = props.callControls) === null || _a === void 0 ? void 0 : _a.participantsButton) }))) : (React__default['default'].createElement(SidePaneHeader, Object.assign({}, props, { strings: strings, headingText: props.activePane === 'people' ? strings.peoplePaneTitle : '' })));
16214
16250
  /**
16215
16251
  * In a Call Composite when a participant is removed, we must remove them from the call.
16216
16252
  */
@@ -16336,7 +16372,7 @@ const CallArrangement = (props) => {
16336
16372
  const callPaneContent = React.useCallback(() => {
16337
16373
  var _a;
16338
16374
  if (adapter && _isInCall(callStatus) && activePane === 'people') {
16339
- return (React__default['default'].createElement(CallPane, { callAdapter: adapter, onClose: closePane, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: (_a = props.callControlProps) === null || _a === void 0 ? void 0 : _a.onFetchParticipantMenuItems, onPeopleButtonClicked: showShowPeopleTabHeaderButton$1(props.callControlProps.options) ? selectPeople : undefined, modalLayerHostId: props.modalLayerHostId, activePane: activePane, mobileView: props.mobileView, inviteLink: props.callControlProps.callInvitationURL }));
16375
+ return (React__default['default'].createElement(CallPane, { callAdapter: adapter, onClose: closePane, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: (_a = props.callControlProps) === null || _a === void 0 ? void 0 : _a.onFetchParticipantMenuItems, onPeopleButtonClicked: showShowPeopleTabHeaderButton$1(props.callControlProps.options) ? selectPeople : undefined, callControls: typeof props.callControlProps.options !== 'boolean' ? props.callControlProps.options : undefined, modalLayerHostId: props.modalLayerHostId, activePane: activePane, mobileView: props.mobileView, inviteLink: props.callControlProps.callInvitationURL }));
16340
16376
  }
16341
16377
  return React__default['default'].createElement(React__default['default'].Fragment, null);
16342
16378
  }, [
@@ -17280,11 +17316,12 @@ const resumeButtonStyles = {
17280
17316
  */
17281
17317
  const holdPaneLabelStyles = {
17282
17318
  root: {
17283
- color: '#FFFFFF',
17319
+ color: 'inherit',
17284
17320
  fontWeight: 600,
17285
17321
  fontHeight: _pxToRem(22),
17286
17322
  fontSize: _pxToRem(16),
17287
- margin: '1rem auto 0.5rem'
17323
+ marginTop: '0.5rem',
17324
+ marginBottom: '1.5rem'
17288
17325
  }
17289
17326
  };
17290
17327
  /**
@@ -17294,7 +17331,7 @@ const holdPaneLabelStyles = {
17294
17331
  */
17295
17332
  const holdPaneTimerStyles = {
17296
17333
  root: {
17297
- color: '#FFFFFF',
17334
+ color: 'inherit',
17298
17335
  fontWeight: 600,
17299
17336
  fontSize: _pxToRem(20),
17300
17337
  lineHeight: _pxToRem(28),
@@ -17310,7 +17347,7 @@ const paneStyles = {
17310
17347
  root: {
17311
17348
  width: '100%',
17312
17349
  height: '100%',
17313
- background: 'rgba(0, 0, 0, 0.5)'
17350
+ background: 'inherit'
17314
17351
  }
17315
17352
  };
17316
17353
  /**
@@ -17323,7 +17360,9 @@ const holdPaneContentStyles = {
17323
17360
  display: 'flex',
17324
17361
  margin: 'auto',
17325
17362
  flexDirection: 'column',
17326
- justifyContent: 'center'
17363
+ justifyContent: 'center',
17364
+ alignContent: 'center',
17365
+ alignItems: 'center'
17327
17366
  }
17328
17367
  };
17329
17368
 
@@ -17360,14 +17399,11 @@ const HoldPane = () => {
17360
17399
  clearInterval(interval);
17361
17400
  };
17362
17401
  }, [startTime]);
17363
- const resumeSpinner = () => {
17364
- return React__default['default'].createElement(react.Spinner, { label: strings.resumingCallButtonLabel, labelPosition: 'right' });
17365
- };
17366
17402
  return (React__default['default'].createElement(react.Stack, { styles: paneStyles },
17367
17403
  React__default['default'].createElement(react.Stack, { horizontal: true, styles: holdPaneContentStyles },
17368
17404
  React__default['default'].createElement(react.Text, { styles: holdPaneTimerStyles }, elapsedTime),
17369
17405
  React__default['default'].createElement(react.Text, { styles: holdPaneLabelStyles }, strings.holdScreenLabel),
17370
- React__default['default'].createElement(react.PrimaryButton, { text: !resumingCall ? strings.resumeCallButtonLabel : undefined, ariaLabel: !resumingCall ? strings.resumeCallButtonAriaLabel : strings.resumingCallButtonAriaLabel, styles: resumeButtonStyles, disabled: resumingCall, onClick: () => __awaiter$6(void 0, void 0, void 0, function* () {
17406
+ React__default['default'].createElement(react.PrimaryButton, { text: !resumingCall ? strings.resumeCallButtonLabel : strings.resumingCallButtonLabel, ariaLabel: !resumingCall ? strings.resumeCallButtonAriaLabel : strings.resumingCallButtonAriaLabel, styles: resumeButtonStyles, disabled: resumingCall, onClick: () => __awaiter$6(void 0, void 0, void 0, function* () {
17371
17407
  setResumingCall(true);
17372
17408
  try {
17373
17409
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
@@ -17377,7 +17413,7 @@ const HoldPane = () => {
17377
17413
  setResumingCall(false);
17378
17414
  throw e;
17379
17415
  }
17380
- }), "data-ui-id": "hold-page-resume-call-button" }, resumingCall && resumeSpinner()))));
17416
+ }), "data-ui-id": "hold-page-resume-call-button" }))));
17381
17417
  };
17382
17418
  const getMinutes = (time) => {
17383
17419
  return Math.floor(getSeconds(time) / 60);
@@ -18633,7 +18669,7 @@ const CallWithChatControlBar = (props) => {
18633
18669
  if (options === false) {
18634
18670
  return React__default['default'].createElement(React__default['default'].Fragment, null);
18635
18671
  }
18636
- const chatButton = (React__default['default'].createElement(ChatButtonWithUnreadMessagesBadge, { chatAdapter: props.chatAdapter, checked: props.chatButtonChecked, showLabel: options.displayType !== 'compact', isChatPaneVisible: props.chatButtonChecked, onClick: props.onChatButtonClicked, disabled: props.disableButtonsForLobbyPage, strings: chatButtonStrings, styles: commonButtonStyles, newMessageLabel: callWithChatStrings.chatButtonNewMessageNotificationLabel }));
18672
+ const chatButton = (React__default['default'].createElement(ChatButtonWithUnreadMessagesBadge, { chatAdapter: props.chatAdapter, checked: props.chatButtonChecked, showLabel: options.displayType !== 'compact', isChatPaneVisible: props.chatButtonChecked, onClick: props.onChatButtonClicked, disabled: props.disableButtonsForLobbyPage || isDisabled$2(options.chatButton), strings: chatButtonStrings, styles: commonButtonStyles, newMessageLabel: callWithChatStrings.chatButtonNewMessageNotificationLabel }));
18637
18673
  return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles) },
18638
18674
  React__default['default'].createElement(react.Stack.Item, { grow: true },
18639
18675
  React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
@@ -18642,14 +18678,14 @@ const CallWithChatControlBar = (props) => {
18642
18678
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: centerContainerStyles },
18643
18679
  isEnabled$1(options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
18644
18680
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18645
- disabled: props.disableButtonsForHoldScreen })),
18681
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.microphoneButton) })),
18646
18682
  isEnabled$1(options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
18647
18683
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18648
- disabled: props.disableButtonsForHoldScreen })),
18684
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.cameraButton) })),
18649
18685
  props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
18650
18686
  isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
18651
18687
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18652
- disabled: props.disableButtonsForHoldScreen })),
18688
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.screenShareButton) })),
18653
18689
  /* @conditional-compile-remove(control-bar-button-injection) */
18654
18690
  (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :
18655
18691
  _a.props.children.slice(0, props.mobileView
@@ -18668,7 +18704,7 @@ const CallWithChatControlBar = (props) => {
18668
18704
  _b.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18669
18705
  return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.key, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
18670
18706
  }),
18671
- isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage, strings: peopleButtonStrings, styles: commonButtonStyles })),
18707
+ isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage || isDisabled$2(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles })),
18672
18708
  isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton))));
18673
18709
  };
18674
18710
  const desktopButtonContainerStyle = {
@@ -19057,7 +19093,8 @@ const MoreDrawer = (props) => {
19057
19093
  },
19058
19094
  text: mic.name,
19059
19095
  onItemClick: onMicrophoneItemClick,
19060
- secondaryIconProps: isDeviceSelected(mic, props.selectedMicrophone) ? { iconName: 'Accept' } : undefined
19096
+ secondaryIconProps: isDeviceSelected(mic, props.selectedMicrophone) ? { iconName: 'Accept' } : undefined,
19097
+ disabled: drawerSelectionOptions !== false ? isDisabled$2(drawerSelectionOptions.microphoneButton) : undefined
19061
19098
  })),
19062
19099
  secondaryText: (_b = props.selectedMicrophone) === null || _b === void 0 ? void 0 : _b.name
19063
19100
  });
@@ -19067,14 +19104,16 @@ const MoreDrawer = (props) => {
19067
19104
  itemKey: 'people',
19068
19105
  text: props.strings.peopleButtonLabel,
19069
19106
  iconProps: { iconName: 'MoreDrawerPeople' },
19070
- onItemClick: props.onPeopleButtonClicked
19107
+ onItemClick: props.onPeopleButtonClicked,
19108
+ disabled: drawerSelectionOptions !== false ? isDisabled$2(drawerSelectionOptions.peopleButton) : undefined
19071
19109
  });
19072
19110
  }
19073
19111
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19074
- if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.peopleButton)) {
19112
+ if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.holdButton)) {
19075
19113
  drawerMenuItems.push({
19076
19114
  itemKey: 'holdButtonKey',
19077
- disabled: props.disableButtonsForHoldScreen,
19115
+ disabled: props.disableButtonsForHoldScreen ||
19116
+ (drawerSelectionOptions !== false ? isDisabled$2(drawerSelectionOptions.holdButton) : undefined),
19078
19117
  text: localeStrings.component.strings.holdButton.tooltipOffContent,
19079
19118
  onItemClick: () => {
19080
19119
  holdButtonProps.onToggleHold();
@@ -19084,7 +19123,7 @@ const MoreDrawer = (props) => {
19084
19123
  }
19085
19124
  /*@conditional-compile-remove(PSTN-calls) */
19086
19125
  // dtmf tone sending only works for 1:1 PSTN call
19087
- if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.peopleButton) && props.onClickShowDialpad) {
19126
+ if (drawerSelectionOptions !== false && props.onClickShowDialpad) {
19088
19127
  drawerMenuItems.push({
19089
19128
  itemKey: 'showDialpadKey',
19090
19129
  disabled: props.disableButtonsForHoldScreen,
@@ -19156,6 +19195,7 @@ var __awaiter$1 = (window && window.__awaiter) || function (thisArg, _arguments,
19156
19195
  * @private
19157
19196
  */
19158
19197
  const CallWithChatPane = (props) => {
19198
+ var _a, _b;
19159
19199
  const [drawerMenuItems, setDrawerMenuItems] = React.useState([]);
19160
19200
  const hidden = props.activePane === 'none';
19161
19201
  const paneStyles = hidden ? hiddenStyles : props.mobileView ? availableSpaceStyles : sidePaneStyles;
@@ -19163,7 +19203,7 @@ const CallWithChatPane = (props) => {
19163
19203
  const theme = useTheme();
19164
19204
  /* @conditional-compile-remove(PSTN-calls) */
19165
19205
  const alternateCallerId = props.callAdapter.getState().alternateCallerId;
19166
- const header = props.activePane === 'none' ? null : props.mobileView ? (React__default['default'].createElement(TabHeader, Object.assign({}, props, { strings: callWithChatStrings, activeTab: props.activePane }))) : (React__default['default'].createElement(SidePaneHeader, Object.assign({}, props, { strings: callWithChatStrings, headingText: props.activePane === 'chat'
19206
+ const header = props.activePane === 'none' ? null : props.mobileView ? (React__default['default'].createElement(TabHeader, Object.assign({}, props, { strings: callWithChatStrings, activeTab: props.activePane, disableChatButton: isDisabled$2((_a = props.callControls) === null || _a === void 0 ? void 0 : _a.chatButton), disablePeopleButton: isDisabled$2((_b = props.callControls) === null || _b === void 0 ? void 0 : _b.peopleButton) }))) : (React__default['default'].createElement(SidePaneHeader, Object.assign({}, props, { strings: callWithChatStrings, headingText: props.activePane === 'chat'
19167
19207
  ? callWithChatStrings.chatPaneTitle
19168
19208
  : props.activePane === 'people'
19169
19209
  ? callWithChatStrings.peoplePaneTitle
@@ -19337,7 +19377,7 @@ const CallWithChatScreen = (props) => {
19337
19377
  React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: { callControls: false }, adapter: callAdapter, fluentTheme: fluentTheme }))),
19338
19378
  chatProps.adapter && callAdapter && hasJoinedCall && (React__default['default'].createElement(CallWithChatPane, { chatCompositeProps: chatProps, inviteLink: props.joinInvitationURL, onClose: closePane, chatAdapter: chatProps.adapter, callAdapter: callAdapter, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, onChatButtonClicked: showShowChatTabHeaderButton(props.callControls) ? selectChat : undefined, onPeopleButtonClicked: showShowPeopleTabHeaderButton(props.callControls) ? selectPeople : undefined, modalLayerHostId: modalLayerHostId, mobileView: mobileView, activePane: activePane,
19339
19379
  /* @conditional-compile-remove(file-sharing) */
19340
- fileSharing: props.fileSharing, rtl: props.rtl }))),
19380
+ fileSharing: props.fileSharing, rtl: props.rtl, callControls: typeof props.callControls !== 'boolean' ? props.callControls : undefined }))),
19341
19381
  showControlBar && !isMobileWithActivePane && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
19342
19382
  React__default['default'].createElement(react.Stack.Item, { styles: controlBarContainerStyles$1 },
19343
19383
  React__default['default'].createElement(CallWithChatControlBar, { callAdapter: callAdapter, chatAdapter: chatProps.adapter, chatButtonChecked: activePane === 'chat', onChatButtonClicked: toggleChat, peopleButtonChecked: activePane === 'people', onPeopleButtonClicked: togglePeople, onMoreButtonClicked: onMoreButtonClicked, mobileView: mobileView, disableButtonsForLobbyPage: isInLobbyOrConnecting,
@@ -19377,7 +19417,8 @@ const CallWithChatComposite = (props) => {
19377
19417
  };
19378
19418
  const hasJoinedCallFn = (page, callStatus) => {
19379
19419
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(one-to-n-calling) */
19380
- return (page === 'call' && callStatus === 'Connected') || (page === 'hold' && callStatus === 'LocalHold');
19420
+ return ((page === 'call' && (callStatus === 'Connected' || callStatus === 'RemoteHold')) ||
19421
+ (page === 'hold' && callStatus === 'LocalHold'));
19381
19422
  };
19382
19423
  const showShowChatTabHeaderButton = (callControls) => {
19383
19424
  if (callControls === undefined || callControls === true) {