@azure/communication-react 1.3.3-alpha-202208280018.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 (66) hide show
  1. package/dist/communication-react.d.ts +25 -5
  2. package/dist/dist-cjs/communication-react/index.js +139 -80
  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/Dialpad/Dialpad.d.ts +2 -0
  10. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +4 -4
  11. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  12. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.js +1 -1
  13. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.js.map +1 -1
  14. package/dist/dist-esm/react-components/src/components/index.d.ts +2 -0
  15. package/dist/dist-esm/react-components/src/components/index.js +1 -0
  16. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  17. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js +3 -0
  18. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/utils/useLongPress.d.ts +1 -1
  20. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js +8 -1
  21. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js.map +1 -1
  22. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +4 -0
  23. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  24. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  26. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +21 -18
  27. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  28. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.d.ts +2 -1
  29. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js +3 -1
  30. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js.map +1 -1
  31. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js +3 -6
  32. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js.map +1 -1
  33. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.js +8 -5
  34. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.js.map +1 -1
  35. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +10 -0
  36. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +31 -4
  37. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  38. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +15 -5
  39. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +7 -4
  40. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +6 -5
  43. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.d.ts +2 -0
  45. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js +3 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/PreparedMoreDrawer.d.ts +1 -1
  48. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/PreparedMoreDrawer.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +4 -0
  50. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js +10 -5
  52. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.d.ts +1 -0
  54. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js +17 -6
  55. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js.map +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js +1 -1
  57. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js.map +1 -1
  58. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.js +0 -1
  59. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.js.map +1 -1
  60. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js +7 -3
  61. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js.map +1 -1
  62. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.d.ts +2 -0
  63. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.js +2 -2
  64. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.js.map +1 -1
  65. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +7 -5
  66. package/package.json +8 -8
@@ -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-202208280018.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
  };
@@ -7824,7 +7827,7 @@ const formatPhoneNumber = (phoneNumber) => {
7824
7827
  /**
7825
7828
  * @private
7826
7829
  */
7827
- function useLongPress(onClick, onLongPress) {
7830
+ function useLongPress(onClick, onLongPress, isMobile) {
7828
7831
  const timerRef = React.useRef();
7829
7832
  const [isLongPress, setIsLongPress] = React.useState(false);
7830
7833
  const [action, setAction] = React.useState(false);
@@ -7835,6 +7838,10 @@ function useLongPress(onClick, onLongPress) {
7835
7838
  }, 500);
7836
7839
  }
7837
7840
  function handleOnClick() {
7841
+ // when it's mobile use ontouchstart and ontouchend to fire onclick and onlongpress event
7842
+ if (isMobile) {
7843
+ return;
7844
+ }
7838
7845
  onClick();
7839
7846
  if (isLongPress) {
7840
7847
  onLongPress();
@@ -7861,6 +7868,9 @@ function useLongPress(onClick, onLongPress) {
7861
7868
  startPressTimer();
7862
7869
  }
7863
7870
  function handleOnTouchEnd() {
7871
+ if (isMobile) {
7872
+ isLongPress ? onLongPress() : onClick();
7873
+ }
7864
7874
  timerRef.current && clearTimeout(timerRef.current);
7865
7875
  }
7866
7876
  return {
@@ -7918,14 +7928,14 @@ const DtmfTones = [
7918
7928
  const DialpadButton = (props) => {
7919
7929
  var _a, _b, _c, _d;
7920
7930
  const theme = react.useTheme();
7921
- const { digit, index, onClick, onLongPress } = props;
7931
+ const { digit, index, onClick, onLongPress, isMobile = false } = props;
7922
7932
  const clickFunction = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
7923
7933
  onClick(digit, index);
7924
7934
  }), [digit, index, onClick]);
7925
7935
  const longPressFunction = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
7926
7936
  onLongPress(digit, index);
7927
7937
  }), [digit, index, onLongPress]);
7928
- const { handlers } = useLongPress(clickFunction, longPressFunction);
7938
+ const { handlers } = useLongPress(clickFunction, longPressFunction, isMobile);
7929
7939
  return (React__default['default'].createElement(react.DefaultButton, Object.assign({ "data-test-id": `dialpad-button-${props.index}`, styles: react.concatStyleSets(buttonStyles(), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.button) }, handlers),
7930
7940
  React__default['default'].createElement(react.Stack, null,
7931
7941
  React__default['default'].createElement(react.Text, { className: react.mergeStyles(digitStyles(theme), (_b = props.styles) === null || _b === void 0 ? void 0 : _b.digit) }, props.digit),
@@ -7934,7 +7944,7 @@ const DialpadButton = (props) => {
7934
7944
  const DialpadContainer = (props) => {
7935
7945
  var _a, _b;
7936
7946
  const theme = react.useTheme();
7937
- const { onSendDtmfTone, onClickDialpadButton, textFieldValue, onChange, showDeleteButton = true } = props;
7947
+ const { onSendDtmfTone, onClickDialpadButton, textFieldValue, onChange, showDeleteButton = true, isMobile = false } = props;
7938
7948
  const [plainTextValue, setPlainTextValue] = React.useState(textFieldValue !== null && textFieldValue !== void 0 ? textFieldValue : '');
7939
7949
  React.useEffect(() => {
7940
7950
  if (onChange) {
@@ -8005,7 +8015,7 @@ const DialpadContainer = (props) => {
8005
8015
  then use this index to locate the corresponding dtmf tones
8006
8016
  DtmfTones[index]
8007
8017
  */
8008
- index: columnIndex + rowIndex * rows.length, digit: button.digit, letter: button.letter, styles: props.styles, onClick: onClickDialpad, onLongPress: onLongPressDialpad })))));
8018
+ index: columnIndex + rowIndex * rows.length, digit: button.digit, letter: button.letter, styles: props.styles, onClick: onClickDialpad, onLongPress: onLongPressDialpad, isMobile: isMobile })))));
8009
8019
  }))));
8010
8020
  };
8011
8021
  /**
@@ -12784,7 +12794,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
12784
12794
  */
12785
12795
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
12786
12796
 
12787
- 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};
12788
12798
 
12789
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};
12790
12800
 
@@ -14447,7 +14457,8 @@ const END_CALL_PAGES = [
14447
14457
 
14448
14458
  // Copyright (c) Microsoft Corporation.
14449
14459
  const ACCESS_DENIED_TEAMS_MEETING_SUB_CODE = 5854;
14450
- 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];
14451
14462
  /**
14452
14463
  * @private
14453
14464
  */
@@ -14492,11 +14503,23 @@ var CallEndReasons;
14492
14503
  CallEndReasons[CallEndReasons["REMOVED_FROM_CALL"] = 2] = "REMOVED_FROM_CALL";
14493
14504
  })(CallEndReasons || (CallEndReasons = {}));
14494
14505
  const getCallEndReason = (call) => {
14495
- var _a, _b;
14496
- 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) {
14497
14520
  return CallEndReasons.ACCESS_DENIED;
14498
14521
  }
14499
- 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)) {
14500
14523
  return CallEndReasons.REMOVED_FROM_CALL;
14501
14524
  }
14502
14525
  if (call.callEndReason) {
@@ -14603,6 +14626,19 @@ const disableCallControls = (callControlOptions, disabledControls) => {
14603
14626
  }
14604
14627
  return newOptions;
14605
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
+ };
14606
14642
 
14607
14643
  // Copyright (c) Microsoft Corporation.
14608
14644
  // Licensed under the MIT license.
@@ -14971,9 +15007,9 @@ const Participants = (props) => {
14971
15007
  var _a;
14972
15008
  return concatButtonBaseStyles(props.increaseFlyoutItemSize ? participantButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
14973
15009
  }, [props.increaseFlyoutItemSize, props.styles]);
14974
- 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 })));
14975
15011
  };
14976
- const isDisabled$2 = (option) => {
15012
+ const isDisabled$1 = (option) => {
14977
15013
  if (option === undefined || option === true || option === false) {
14978
15014
  return false;
14979
15015
  }
@@ -14987,11 +15023,11 @@ const ScreenShare = (props) => {
14987
15023
  const styles = React.useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);
14988
15024
  const screenShareButtonDisabled = () => {
14989
15025
  /* @conditional-compile-remove(PSTN-calls) */
14990
- 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);
14991
15027
  };
14992
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 })));
14993
15029
  };
14994
- const isDisabled$1 = (option) => {
15030
+ const isDisabled = (option) => {
14995
15031
  if (option === undefined || option === true || option === false) {
14996
15032
  return false;
14997
15033
  }
@@ -15119,19 +15155,23 @@ const SendDtmfDialpad = (props) => {
15119
15155
  const onDismissTriggered = () => {
15120
15156
  onDismissDialpad();
15121
15157
  };
15158
+ const [textFieldValue, setTextFieldValue] = React.useState();
15159
+ const onChange = (input) => {
15160
+ setTextFieldValue(input);
15161
+ };
15122
15162
  const dialpadModalStyle = React.useMemo(() => themeddialpadModalStyle$1(theme), [theme]);
15123
15163
  const dialpadStyle = React.useMemo(() => themedDialpadStyle$1(isMobile, theme), [theme, isMobile]);
15124
15164
  if (isMobile) {
15125
15165
  return (React__default['default'].createElement(react.Stack, null, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
15126
15166
  React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
15127
15167
  React__default['default'].createElement(react.Stack, { style: { padding: '1rem' } },
15128
- React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false, strings: strings }))))))));
15168
+ React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false, textFieldValue: textFieldValue, onChange: onChange, strings: strings, isMobile: isMobile }))))))));
15129
15169
  }
15130
15170
  return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Modal, { titleAriaId: strings.dialpadModalAriaLabel, isOpen: showDialpad, onDismiss: onDismissTriggered, isBlocking: true, styles: dialpadModalStyle },
15131
15171
  React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "end", verticalAlign: "center" },
15132
15172
  React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: theme.palette.black } })),
15133
15173
  React__default['default'].createElement(react.Stack, { style: { overflow: 'hidden' } },
15134
- React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false, strings: strings }))))));
15174
+ React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { textFieldValue: textFieldValue, onChange: onChange, showDeleteButton: false, strings: strings, isMobile: isMobile }))))));
15135
15175
  };
15136
15176
 
15137
15177
  // Copyright (c) Microsoft Corporation.
@@ -15163,10 +15203,12 @@ const CallControls = (props) => {
15163
15203
  }), [localeStrings]);
15164
15204
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
15165
15205
  const holdButtonProps = usePropsFor$1(HoldButton);
15206
+ /* @conditional-compile-remove(PSTN-calls) */
15207
+ const alternateCallerId = useAdapter().getState().alternateCallerId;
15166
15208
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15167
15209
  const moreButtonContextualMenuItems = () => {
15168
15210
  const items = [];
15169
- if (props.isMobile && props.onPeopleButtonClicked) {
15211
+ if (props.isMobile && props.onPeopleButtonClicked && isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton)) {
15170
15212
  items.push({
15171
15213
  key: 'peopleButtonKey',
15172
15214
  text: localeStrings.component.strings.participantsButton.label,
@@ -15179,6 +15221,7 @@ const CallControls = (props) => {
15179
15221
  itemProps: {
15180
15222
  styles: buttonFlyoutIncreasedSizeStyles
15181
15223
  },
15224
+ disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton),
15182
15225
  ['data-ui-id']: 'call-composite-more-menu-people-button'
15183
15226
  });
15184
15227
  }
@@ -15192,21 +15235,24 @@ const CallControls = (props) => {
15192
15235
  itemProps: {
15193
15236
  styles: buttonFlyoutIncreasedSizeStyles
15194
15237
  },
15195
- disabled: isDisabled(options === null || options === void 0 ? void 0 : options.holdButton),
15238
+ disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.holdButton),
15196
15239
  ['data-ui-id']: 'hold-button'
15197
15240
  });
15198
15241
  /* @conditional-compile-remove(PSTN-calls) */
15199
- items.push({
15200
- key: 'showDialpadKey',
15201
- text: localeStrings.strings.call.openDtmfDialpadLabel,
15202
- onClick: () => {
15203
- setShowDialpad(true);
15204
- },
15205
- iconProps: { iconName: 'PeoplePaneOpenDialpad', styles: { root: { lineHeight: 0 } } },
15206
- itemProps: {
15207
- styles: buttonFlyoutIncreasedSizeStyles
15208
- }
15209
- });
15242
+ // dtmf tone sending only works for 1:1 PSTN call
15243
+ if (alternateCallerId) {
15244
+ items.push({
15245
+ key: 'showDialpadKey',
15246
+ text: localeStrings.strings.call.openDtmfDialpadLabel,
15247
+ onClick: () => {
15248
+ setShowDialpad(true);
15249
+ },
15250
+ iconProps: { iconName: 'PeoplePaneOpenDialpad', styles: { root: { lineHeight: 0 } } },
15251
+ itemProps: {
15252
+ styles: buttonFlyoutIncreasedSizeStyles
15253
+ }
15254
+ });
15255
+ }
15210
15256
  return items;
15211
15257
  };
15212
15258
  /* @conditional-compile-remove(PSTN-calls) */
@@ -15227,27 +15273,21 @@ const CallControls = (props) => {
15227
15273
  React__default['default'].createElement(SendDtmfDialpad, { isMobile: !!props.isMobile, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
15228
15274
  React__default['default'].createElement(react.Stack.Item, null,
15229
15275
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: controlBarStyles(theme.semanticColors.bodyBackground) },
15230
- 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) })),
15231
- 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) })),
15232
- 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) })),
15233
15279
  isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) &&
15234
15280
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15235
- !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) })) && (
15236
15282
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15237
- 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) })),
15238
- 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) })),
15239
15285
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15240
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 })),
15241
15287
  customButtons['primary'],
15242
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 })))));
15243
15289
  };
15244
15290
  const isEnabled$2 = (option) => option !== false;
15245
- const isDisabled = (option) => {
15246
- if (typeof option !== 'boolean') {
15247
- return !!(option === null || option === void 0 ? void 0 : option.disabled);
15248
- }
15249
- return option;
15250
- };
15251
15291
 
15252
15292
  // Copyright (c) Microsoft Corporation.
15253
15293
  /**
@@ -15731,7 +15771,6 @@ const themedDialpadStyle = (isMobile, theme) => ({
15731
15771
  backgroundColor: theme.palette.white,
15732
15772
  fontSize: theme.fonts.large.fontSize,
15733
15773
  padding: '0 0.5rem',
15734
- direction: 'rtl',
15735
15774
  textAlign: isMobile ? 'center' : 'left',
15736
15775
  ':active': {
15737
15776
  padding: '0 0.5rem'
@@ -15785,7 +15824,7 @@ const CallingDialpad = (props) => {
15785
15824
  const callButtonStyle = React.useMemo(() => themedCallButtonStyle(theme), [theme]);
15786
15825
  const dialpadComponent = () => {
15787
15826
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
15788
- React__default['default'].createElement(Dialpad, { styles: dialpadStyle, onChange: setTextFieldInput }),
15827
+ React__default['default'].createElement(Dialpad, { styles: dialpadStyle, onChange: setTextFieldInput, isMobile: isMobile }),
15789
15828
  React__default['default'].createElement(react.PrimaryButton, { text: strings.dialpadStartCallButtonLabel, onRenderIcon: () => DialpadStartCallIconTrampoline(), onClick: onClickCall, styles: callButtonStyle, disabled: textFieldInput === '' })));
15790
15829
  };
15791
15830
  if (isMobile) {
@@ -15839,6 +15878,7 @@ const AddPeopleDropdown = (props) => {
15839
15878
  const theme = react.useTheme();
15840
15879
  const { inviteLink, strings, mobileView, onAddParticipant, alternateCallerId } = props;
15841
15880
  const [showDialpad, setShowDialpad] = React.useState(false);
15881
+ const [announcerStrings, setAnnouncerStrings] = React.useState();
15842
15882
  const menuStyleThemed = React.useMemo(() => themedMenuStyle(theme), [theme]);
15843
15883
  const copyLinkButtonStylesThemed = React.useMemo(() => themedCopyLinkButtonStyles(theme, mobileView), [mobileView, theme]);
15844
15884
  const defaultMenuProps = React.useMemo(() => {
@@ -15848,6 +15888,10 @@ const AddPeopleDropdown = (props) => {
15848
15888
  useTargetWidth: true,
15849
15889
  calloutProps: {
15850
15890
  preventDismissOnEvent: _preventDismissOnEvent
15891
+ },
15892
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15893
+ onMenuOpened(contextualMenu) {
15894
+ setAnnouncerStrings(undefined);
15851
15895
  }
15852
15896
  };
15853
15897
  if (inviteLink) {
@@ -15856,7 +15900,10 @@ const AddPeopleDropdown = (props) => {
15856
15900
  text: strings.copyInviteLinkButtonLabel,
15857
15901
  itemProps: { styles: copyLinkButtonStylesThemed },
15858
15902
  iconProps: { iconName: 'Link', style: iconStyles },
15859
- onClick: () => copy__default['default'](inviteLink)
15903
+ onClick: () => {
15904
+ setAnnouncerStrings(strings.copyInviteLinkActionedAriaLabel);
15905
+ copy__default['default'](inviteLink);
15906
+ }
15860
15907
  });
15861
15908
  }
15862
15909
  // only show the dialpad option when alternateCallerId is set
@@ -15872,12 +15919,13 @@ const AddPeopleDropdown = (props) => {
15872
15919
  }
15873
15920
  return menuProps;
15874
15921
  }, [
15922
+ menuStyleThemed,
15923
+ inviteLink,
15924
+ alternateCallerId,
15875
15925
  strings.copyInviteLinkButtonLabel,
15926
+ strings.copyInviteLinkActionedAriaLabel,
15876
15927
  strings.openDialpadButtonLabel,
15877
- copyLinkButtonStylesThemed,
15878
- inviteLink,
15879
- menuStyleThemed,
15880
- alternateCallerId
15928
+ copyLinkButtonStylesThemed
15881
15929
  ]);
15882
15930
  const onDismissDialpad = () => {
15883
15931
  setShowDialpad(false);
@@ -15891,6 +15939,7 @@ const AddPeopleDropdown = (props) => {
15891
15939
  }, [defaultMenuProps, setAddPeopleDrawerMenuItems]);
15892
15940
  if (mobileView) {
15893
15941
  return (React__default['default'].createElement(react.Stack, null,
15942
+ React__default['default'].createElement(Announcer, { ariaLive: 'assertive', announcementString: announcerStrings }),
15894
15943
  React__default['default'].createElement(react.Stack.Item, { styles: copyLinkButtonContainerStyles },
15895
15944
  React__default['default'].createElement(react.PrimaryButton, { onClick: setDrawerMenuItemsForAddPeople, styles: copyLinkButtonStylesThemed, onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, "data-ui-id": "call-add-people-button" })),
15896
15945
  addPeopleDrawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles, "data-ui-id": "call-add-people-dropdown" },
@@ -15898,6 +15947,7 @@ const AddPeopleDropdown = (props) => {
15898
15947
  alternateCallerId && (React__default['default'].createElement(CallingDialpad, { isMobile: true, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad, onAddParticipant: onAddParticipant, alternateCallerId: alternateCallerId }))));
15899
15948
  }
15900
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 }),
15901
15951
  alternateCallerId && (React__default['default'].createElement(CallingDialpad, { isMobile: false, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad, onAddParticipant: onAddParticipant, alternateCallerId: alternateCallerId })),
15902
15952
  React__default['default'].createElement(react.Stack, { styles: copyLinkButtonStackStyles },
15903
15953
  React__default['default'].createElement(react.DefaultButton, { onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, menuProps: defaultMenuProps, styles: copyLinkButtonStylesThemed, "data-ui-id": "call-add-people-button" })))));
@@ -16136,8 +16186,8 @@ const TabHeader = (props) => {
16136
16186
  }, [theme, haveMultipleTabs]);
16137
16187
  return (React__default['default'].createElement(react.Stack, { horizontal: true, grow: true, styles: mobilePaneControlBarStyle },
16138
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 }),
16139
- 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))),
16140
- 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))),
16141
16191
  React__default['default'].createElement(react.DefaultButton, { styles: mobilePaneHiddenIconStyles, onRenderIcon: () => React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: "ChevronLeft" }) })));
16142
16192
  };
16143
16193
 
@@ -16184,6 +16234,7 @@ var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments,
16184
16234
  */
16185
16235
  /** @beta */
16186
16236
  const CallPane = (props) => {
16237
+ var _a;
16187
16238
  const [drawerMenuItems, setDrawerMenuItems] = React.useState([]);
16188
16239
  const hidden = props.activePane === 'none';
16189
16240
  const paneStyles = hidden ? hiddenStyles : props.mobileView ? availableSpaceStyles : sidePaneStyles;
@@ -16195,7 +16246,7 @@ const CallPane = (props) => {
16195
16246
  };
16196
16247
  const strings = getStrings();
16197
16248
  const theme = useTheme();
16198
- 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 : '' })));
16199
16250
  /**
16200
16251
  * In a Call Composite when a participant is removed, we must remove them from the call.
16201
16252
  */
@@ -16321,7 +16372,7 @@ const CallArrangement = (props) => {
16321
16372
  const callPaneContent = React.useCallback(() => {
16322
16373
  var _a;
16323
16374
  if (adapter && _isInCall(callStatus) && activePane === 'people') {
16324
- 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 }));
16325
16376
  }
16326
16377
  return React__default['default'].createElement(React__default['default'].Fragment, null);
16327
16378
  }, [
@@ -17265,11 +17316,12 @@ const resumeButtonStyles = {
17265
17316
  */
17266
17317
  const holdPaneLabelStyles = {
17267
17318
  root: {
17268
- color: '#FFFFFF',
17319
+ color: 'inherit',
17269
17320
  fontWeight: 600,
17270
17321
  fontHeight: _pxToRem(22),
17271
17322
  fontSize: _pxToRem(16),
17272
- margin: '1rem auto 0.5rem'
17323
+ marginTop: '0.5rem',
17324
+ marginBottom: '1.5rem'
17273
17325
  }
17274
17326
  };
17275
17327
  /**
@@ -17279,7 +17331,7 @@ const holdPaneLabelStyles = {
17279
17331
  */
17280
17332
  const holdPaneTimerStyles = {
17281
17333
  root: {
17282
- color: '#FFFFFF',
17334
+ color: 'inherit',
17283
17335
  fontWeight: 600,
17284
17336
  fontSize: _pxToRem(20),
17285
17337
  lineHeight: _pxToRem(28),
@@ -17295,7 +17347,7 @@ const paneStyles = {
17295
17347
  root: {
17296
17348
  width: '100%',
17297
17349
  height: '100%',
17298
- background: 'rgba(0, 0, 0, 0.5)'
17350
+ background: 'inherit'
17299
17351
  }
17300
17352
  };
17301
17353
  /**
@@ -17308,7 +17360,9 @@ const holdPaneContentStyles = {
17308
17360
  display: 'flex',
17309
17361
  margin: 'auto',
17310
17362
  flexDirection: 'column',
17311
- justifyContent: 'center'
17363
+ justifyContent: 'center',
17364
+ alignContent: 'center',
17365
+ alignItems: 'center'
17312
17366
  }
17313
17367
  };
17314
17368
 
@@ -17345,14 +17399,11 @@ const HoldPane = () => {
17345
17399
  clearInterval(interval);
17346
17400
  };
17347
17401
  }, [startTime]);
17348
- const resumeSpinner = () => {
17349
- return React__default['default'].createElement(react.Spinner, { label: strings.resumingCallButtonLabel, labelPosition: 'right' });
17350
- };
17351
17402
  return (React__default['default'].createElement(react.Stack, { styles: paneStyles },
17352
17403
  React__default['default'].createElement(react.Stack, { horizontal: true, styles: holdPaneContentStyles },
17353
17404
  React__default['default'].createElement(react.Text, { styles: holdPaneTimerStyles }, elapsedTime),
17354
17405
  React__default['default'].createElement(react.Text, { styles: holdPaneLabelStyles }, strings.holdScreenLabel),
17355
- 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* () {
17356
17407
  setResumingCall(true);
17357
17408
  try {
17358
17409
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
@@ -17362,7 +17413,7 @@ const HoldPane = () => {
17362
17413
  setResumingCall(false);
17363
17414
  throw e;
17364
17415
  }
17365
- }), "data-ui-id": "hold-page-resume-call-button" }, resumingCall && resumeSpinner()))));
17416
+ }), "data-ui-id": "hold-page-resume-call-button" }))));
17366
17417
  };
17367
17418
  const getMinutes = (time) => {
17368
17419
  return Math.floor(getSeconds(time) / 60);
@@ -18618,7 +18669,7 @@ const CallWithChatControlBar = (props) => {
18618
18669
  if (options === false) {
18619
18670
  return React__default['default'].createElement(React__default['default'].Fragment, null);
18620
18671
  }
18621
- 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 }));
18622
18673
  return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles) },
18623
18674
  React__default['default'].createElement(react.Stack.Item, { grow: true },
18624
18675
  React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
@@ -18627,14 +18678,14 @@ const CallWithChatControlBar = (props) => {
18627
18678
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: centerContainerStyles },
18628
18679
  isEnabled$1(options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
18629
18680
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18630
- disabled: props.disableButtonsForHoldScreen })),
18681
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.microphoneButton) })),
18631
18682
  isEnabled$1(options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
18632
18683
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18633
- disabled: props.disableButtonsForHoldScreen })),
18684
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.cameraButton) })),
18634
18685
  props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
18635
18686
  isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
18636
18687
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18637
- disabled: props.disableButtonsForHoldScreen })),
18688
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.screenShareButton) })),
18638
18689
  /* @conditional-compile-remove(control-bar-button-injection) */
18639
18690
  (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :
18640
18691
  _a.props.children.slice(0, props.mobileView
@@ -18653,7 +18704,7 @@ const CallWithChatControlBar = (props) => {
18653
18704
  _b.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18654
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' })));
18655
18706
  }),
18656
- 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 })),
18657
18708
  isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton))));
18658
18709
  };
18659
18710
  const desktopButtonContainerStyle = {
@@ -19042,7 +19093,8 @@ const MoreDrawer = (props) => {
19042
19093
  },
19043
19094
  text: mic.name,
19044
19095
  onItemClick: onMicrophoneItemClick,
19045
- 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
19046
19098
  })),
19047
19099
  secondaryText: (_b = props.selectedMicrophone) === null || _b === void 0 ? void 0 : _b.name
19048
19100
  });
@@ -19052,14 +19104,16 @@ const MoreDrawer = (props) => {
19052
19104
  itemKey: 'people',
19053
19105
  text: props.strings.peopleButtonLabel,
19054
19106
  iconProps: { iconName: 'MoreDrawerPeople' },
19055
- onItemClick: props.onPeopleButtonClicked
19107
+ onItemClick: props.onPeopleButtonClicked,
19108
+ disabled: drawerSelectionOptions !== false ? isDisabled$2(drawerSelectionOptions.peopleButton) : undefined
19056
19109
  });
19057
19110
  }
19058
19111
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19059
- 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)) {
19060
19113
  drawerMenuItems.push({
19061
19114
  itemKey: 'holdButtonKey',
19062
- disabled: props.disableButtonsForHoldScreen,
19115
+ disabled: props.disableButtonsForHoldScreen ||
19116
+ (drawerSelectionOptions !== false ? isDisabled$2(drawerSelectionOptions.holdButton) : undefined),
19063
19117
  text: localeStrings.component.strings.holdButton.tooltipOffContent,
19064
19118
  onItemClick: () => {
19065
19119
  holdButtonProps.onToggleHold();
@@ -19068,7 +19122,8 @@ const MoreDrawer = (props) => {
19068
19122
  });
19069
19123
  }
19070
19124
  /*@conditional-compile-remove(PSTN-calls) */
19071
- if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.peopleButton) && props.onClickShowDialpad) {
19125
+ // dtmf tone sending only works for 1:1 PSTN call
19126
+ if (drawerSelectionOptions !== false && props.onClickShowDialpad) {
19072
19127
  drawerMenuItems.push({
19073
19128
  itemKey: 'showDialpadKey',
19074
19129
  disabled: props.disableButtonsForHoldScreen,
@@ -19140,6 +19195,7 @@ var __awaiter$1 = (window && window.__awaiter) || function (thisArg, _arguments,
19140
19195
  * @private
19141
19196
  */
19142
19197
  const CallWithChatPane = (props) => {
19198
+ var _a, _b;
19143
19199
  const [drawerMenuItems, setDrawerMenuItems] = React.useState([]);
19144
19200
  const hidden = props.activePane === 'none';
19145
19201
  const paneStyles = hidden ? hiddenStyles : props.mobileView ? availableSpaceStyles : sidePaneStyles;
@@ -19147,7 +19203,7 @@ const CallWithChatPane = (props) => {
19147
19203
  const theme = useTheme();
19148
19204
  /* @conditional-compile-remove(PSTN-calls) */
19149
19205
  const alternateCallerId = props.callAdapter.getState().alternateCallerId;
19150
- 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'
19151
19207
  ? callWithChatStrings.chatPaneTitle
19152
19208
  : props.activePane === 'people'
19153
19209
  ? callWithChatStrings.peoplePaneTitle
@@ -19310,6 +19366,8 @@ const CallWithChatScreen = (props) => {
19310
19366
  dialpadCloseModalButtonAriaLabel: callWithChatStrings.dialpadCloseModalButtonAriaLabel,
19311
19367
  placeholderText: callWithChatStrings.dtmfDialpadPlaceHolderText
19312
19368
  }), [callWithChatStrings]);
19369
+ /* @conditional-compile-remove(PSTN-calls) */
19370
+ const alternateCallerId = callAdapter.getState().alternateCallerId;
19313
19371
  return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles) },
19314
19372
  React__default['default'].createElement(react.Stack, { verticalFill: true, grow: true, styles: compositeOuterContainerStyles, id: compositeParentDivId },
19315
19373
  React__default['default'].createElement(react.Stack, { horizontal: true, grow: true },
@@ -19319,20 +19377,20 @@ const CallWithChatScreen = (props) => {
19319
19377
  React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: { callControls: false }, adapter: callAdapter, fluentTheme: fluentTheme }))),
19320
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,
19321
19379
  /* @conditional-compile-remove(file-sharing) */
19322
- fileSharing: props.fileSharing, rtl: props.rtl }))),
19380
+ fileSharing: props.fileSharing, rtl: props.rtl, callControls: typeof props.callControls !== 'boolean' ? props.callControls : undefined }))),
19323
19381
  showControlBar && !isMobileWithActivePane && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
19324
19382
  React__default['default'].createElement(react.Stack.Item, { styles: controlBarContainerStyles$1 },
19325
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,
19326
19384
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19327
19385
  disableButtonsForHoldScreen: isInLocalHold, callControls: props.callControls, containerHeight: containerHeight, containerWidth: containerWidth,
19328
19386
  /* @conditional-compile-remove(PSTN-calls) */
19329
- onClickShowDialpad: onClickShowDialpad })))),
19387
+ onClickShowDialpad: alternateCallerId ? onClickShowDialpad : undefined })))),
19330
19388
  showControlBar && showDrawer && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
19331
19389
  React__default['default'].createElement(CallAdapterProvider, { adapter: callAdapter },
19332
19390
  React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
19333
19391
  React__default['default'].createElement(PreparedMoreDrawer, { callControls: props.callControls, onLightDismiss: closeDrawer, onPeopleButtonClicked: onMoreDrawerPeopleClicked,
19334
19392
  /* @conditional-compile-remove(PSTN-calls) */
19335
- onClickShowDialpad: onClickShowDialpad,
19393
+ onClickShowDialpad: alternateCallerId ? onClickShowDialpad : undefined,
19336
19394
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
19337
19395
  disableButtonsForHoldScreen: isInLocalHold }))))),
19338
19396
  /* @conditional-compile-remove(PSTN-calls) */
@@ -19359,7 +19417,8 @@ const CallWithChatComposite = (props) => {
19359
19417
  };
19360
19418
  const hasJoinedCallFn = (page, callStatus) => {
19361
19419
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(one-to-n-calling) */
19362
- return (page === 'call' && callStatus === 'Connected') || (page === 'hold' && callStatus === 'LocalHold');
19420
+ return ((page === 'call' && (callStatus === 'Connected' || callStatus === 'RemoteHold')) ||
19421
+ (page === 'hold' && callStatus === 'LocalHold'));
19363
19422
  };
19364
19423
  const showShowChatTabHeaderButton = (callControls) => {
19365
19424
  if (callControls === undefined || callControls === true) {