@azure/communication-react 1.3.2-alpha-202208110020.0 → 1.3.3-alpha-202208120013.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 (61) hide show
  1. package/CHANGELOG.md +10 -5
  2. package/dist/communication-react.d.ts +16 -2
  3. package/dist/dist-cjs/communication-react/index.js +184 -68
  4. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  6. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts +1 -1
  7. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts.map +1 -1
  8. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +2 -3
  9. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  10. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +2 -2
  12. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  13. package/dist/dist-esm/communication-react/src/index.js +1 -1
  14. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  15. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +3 -1
  16. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts.map +1 -1
  17. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +7 -5
  18. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts.map +1 -1
  20. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +1 -1
  21. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/theming/icons.js +2 -2
  23. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  24. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -1
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts.map +1 -1
  26. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +8 -0
  27. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  28. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +7 -1
  29. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts.map +1 -1
  30. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts.map +1 -1
  31. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +17 -0
  32. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  33. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.d.ts.map +1 -1
  34. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +4 -0
  35. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  36. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts.map +1 -1
  37. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +22 -5
  38. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  39. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +2 -1
  40. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +8 -0
  42. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  43. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +7 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts.map +1 -1
  45. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +2 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +4 -0
  48. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js +5 -5
  50. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.d.ts +1 -1
  52. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.js +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.d.ts +16 -0
  54. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.d.ts.map +1 -0
  55. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js +36 -0
  56. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js.map +1 -0
  57. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.d.ts +11 -0
  58. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.d.ts.map +1 -0
  59. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.js +38 -0
  60. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.js.map +1 -0
  61. package/package.json +8 -8
package/CHANGELOG.md CHANGED
@@ -1,12 +1,17 @@
1
1
  # Change Log - @azure/communication-react
2
2
 
3
- This log was last generated on Wed, 29 Jun 2022 17:31:05 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 10 Aug 2022 18:29:31 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [1.3.1](https://github.com/azure/communication-ui-library/tree/1.3.1)
8
+
9
+ This is a patch release for issue [#2186](https://github.com/Azure/communication-ui-library/issues/2186):
10
+ - Fix infinite spinner bug during screenshare. ([PR #2191](https://github.com/Azure/communication-ui-library/pull/2191) by jiangnanhello@live.com).
11
+
7
12
  ## [1.3.1-beta.1](https://github.com/azure/communication-ui-library/tree/@azure/communication-react_v1.3.1-beta.1)
8
13
 
9
- Wed, 29 Jun 2022 17:31:05 GMT
14
+ Wed, 29 Jun 2022 17:31:05 GMT
10
15
  [Compare changes](https://github.com/azure/communication-ui-library/compare/1.3.0...1.3.1-beta.1)
11
16
 
12
17
  ### Features
@@ -20,7 +25,7 @@ Wed, 29 Jun 2022 17:31:05 GMT
20
25
  - Update microphone and camera button to be disabled when there are no cameras or microphones present ([PR #1993](https://github.com/azure/communication-ui-library/pull/1993) by 2684369+JamesBurnside@users.noreply.github.com)
21
26
  - Add autofocus to rejoin call button on call end page ([PR #2008](https://github.com/azure/communication-ui-library/pull/2008) by 82062616+prprabhu-ms@users.noreply.github.com)
22
27
  - Add new prop onChange to dialpad to grab textfield values and modified onClickDialpadButton type to (buttonValue: string, buttonIndex: number) => void so we can grab info regarding which button is clicked ([PR #1989](https://github.com/azure/communication-ui-library/pull/1989) by carolinecao@microsoft.com)
23
-
28
+
24
29
 
25
30
  ### Bug Fixes
26
31
 
@@ -57,7 +62,7 @@ A lot of bug fixes in this stable release are related to accessibility. Fixes in
57
62
 
58
63
  Also included are updates to the video streams with new features like a loading spinner in the remote stream when the remote participants connection is loading. Available in the components now and coming soon to the composites.
59
64
 
60
- Mon, 13 Jun 2022 18:29:25 GMT
65
+ Mon, 13 Jun 2022 18:29:25 GMT
61
66
  [Compare changes](https://github.com/azure/communication-ui-library/compare/@azure/communication-react_v1.2.2-beta.1...@azure/communication-react_v1.3.0)
62
67
 
63
68
  ### Minor changes
@@ -115,7 +120,7 @@ Mon, 13 Jun 2022 18:29:25 GMT
115
120
 
116
121
  ## [1.2.2-beta.1](https://github.com/azure/communication-ui-library/tree/@azure/communication-react_v1.2.2-beta.1)
117
122
 
118
- Tue, 19 Apr 2022 20:46:13 GMT
123
+ Tue, 19 Apr 2022 20:46:13 GMT
119
124
  [Compare changes](https://github.com/azure/communication-ui-library/compare/1.2.0...1.2.2-beta.1)
120
125
 
121
126
  ### Features
@@ -481,6 +481,12 @@ export declare interface CallAdapterCallManagement {
481
481
  * @beta
482
482
  */
483
483
  addParticipant(participant: CommunicationIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
484
+ /**
485
+ * send dtmf tone to another participant in a 1:1 PSTN call
486
+ *
487
+ * @beta
488
+ */
489
+ sendDtmfTone(dtmfTone: DtmfTone_2): Promise<void>;
484
490
  }
485
491
 
486
492
  /**
@@ -1392,7 +1398,7 @@ export declare type CallingHandlers = {
1392
1398
  onRemoveParticipant: (userId: string) => Promise<void>;
1393
1399
  onDisposeRemoteStreamView: (userId: string) => Promise<void>;
1394
1400
  onDisposeLocalStreamView: () => Promise<void>;
1395
- onSendDtmfTone?: (dtmfTone: DtmfTone_2) => Promise<void>;
1401
+ onSendDtmfTone: (dtmfTone: DtmfTone_2) => Promise<void>;
1396
1402
  };
1397
1403
 
1398
1404
  /**
@@ -1822,6 +1828,12 @@ export declare interface CallWithChatAdapterManagement {
1822
1828
  * @beta
1823
1829
  */
1824
1830
  addParticipant: (participant: CommunicationIdentifier, options?: AddPhoneNumberOptions) => Promise<void>;
1831
+ /**
1832
+ * send dtmf tone to another participant in the call in 1:1 calls
1833
+ *
1834
+ * @beta
1835
+ */
1836
+ sendDtmfTone: (dtmfTone: DtmfTone_2) => Promise<void>;
1825
1837
  }
1826
1838
 
1827
1839
  /**
@@ -4159,6 +4171,8 @@ export declare interface DialpadProps {
4159
4171
  onDisplayDialpadInput?: (input: string) => string;
4160
4172
  /** on change function for text field */
4161
4173
  onChange?: (input: string) => void;
4174
+ /** boolean input to determine when to show/hide delete button, default true */
4175
+ showDeleteButton?: boolean;
4162
4176
  styles?: DialpadStyles;
4163
4177
  }
4164
4178
 
@@ -4169,7 +4183,7 @@ export declare interface DialpadProps {
4169
4183
  */
4170
4184
  export declare interface DialpadStrings {
4171
4185
  placeholderText: string;
4172
- deleteButtonAriaLabel: string;
4186
+ deleteButtonAriaLabel?: string;
4173
4187
  }
4174
4188
 
4175
4189
  /**
@@ -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.2-alpha-202208110020.0';
195
+ var telemetryVersion = '1.3.3-alpha-202208120013.0';
196
196
 
197
197
  // Copyright (c) Microsoft Corporation.
198
198
  /**
@@ -759,7 +759,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
759
759
  yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant));
760
760
  }
761
761
  });
762
- /* @conditional-compile-remove(dialpad) */
762
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
763
763
  const onSendDtmfTone = (dtmfTone) => __awaiter$t(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
764
764
  return {
765
765
  onHangUp,
@@ -782,8 +782,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
782
782
  onStartLocalVideo,
783
783
  onDisposeRemoteStreamView,
784
784
  onDisposeLocalStreamView,
785
- /* @conditional-compile-remove(dialpad) */
786
- onSendDtmfTone
785
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ onSendDtmfTone
787
786
  };
788
787
  });
789
788
  /**
@@ -1945,7 +1944,7 @@ const DEFAULT_COMPONENT_ICONS = {
1945
1944
  SendBoxSend: React__default['default'].createElement(reactIcons.Send20Regular, null),
1946
1945
  SendBoxSendHovered: React__default['default'].createElement(reactIcons.Send20Filled, null),
1947
1946
  VideoTileMicOff: React__default['default'].createElement(reactIcons.MicOff16Filled, null),
1948
- /* @conditional-compile-remove(dialpad) */
1947
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
1949
1948
  BackSpace: React__default['default'].createElement(reactIcons.Backspace20Regular, null)
1950
1949
  };
1951
1950
 
@@ -4437,7 +4436,7 @@ const ParticipantItem = (props) => {
4437
4436
  avatar,
4438
4437
  me && React__default['default'].createElement(react.Text, { className: meTextStyle }, strings.isMeText),
4439
4438
  React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(infoContainerStyle) }, onRenderIcon && onRenderIcon(props))),
4440
- !me && participantStateString ? (React__default['default'].createElement(react.Text, { className: react.mergeStyles(participantStateStringStyles) }, participantStateString)) : (React__default['default'].createElement("div", null, menuItems && menuItems.length > 0 && (React__default['default'].createElement(React__default['default'].Fragment, null,
4439
+ !me && participantStateString ? (React__default['default'].createElement(react.Text, { "data-ui-id": "participant-item-state-string", className: react.mergeStyles(participantStateStringStyles) }, participantStateString)) : (React__default['default'].createElement("div", null, menuItems && menuItems.length > 0 && (React__default['default'].createElement(React__default['default'].Fragment, null,
4441
4440
  menuButton,
4442
4441
  React__default['default'].createElement(react.ContextualMenu, { items: menuItems, hidden: menuHidden, target: containerRef, onItemClick: onDismissMenu, onDismiss: onDismissMenu, directionalHint: react.DirectionalHint.bottomRightEdge, className: contextualMenuStyle, calloutProps: {
4443
4442
  preventDismissOnEvent: _preventDismissOnEvent
@@ -7821,7 +7820,7 @@ const DialpadContainer = (props) => {
7821
7820
  var _a, _b;
7822
7821
  const theme = react.useTheme();
7823
7822
  const [textValue, setTextValue] = React.useState('');
7824
- const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput, onChange } = props;
7823
+ const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput, onChange, showDeleteButton } = props;
7825
7824
  const sanitizeInput = (input) => {
7826
7825
  // remove non-valid characters from input: letters,special characters excluding +, *,#
7827
7826
  return input.replace(/[^\d*#+]/g, '');
@@ -7868,7 +7867,7 @@ const DialpadContainer = (props) => {
7868
7867
  }
7869
7868
  }, placeholder: props.strings.placeholderText, "data-test-id": "dialpad-input", onRenderSuffix: () => {
7870
7869
  var _a;
7871
- return (React__default['default'].createElement(React__default['default'].Fragment, null, textValue.length !== 0 && (React__default['default'].createElement(react.IconButton, { ariaLabel: props.strings.deleteButtonAriaLabel, onClick: deleteNumbers, styles: react.concatStyleSets(iconButtonStyles(theme), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.deleteIcon), iconProps: { iconName: 'BackSpace' } }))));
7870
+ return (React__default['default'].createElement(React__default['default'].Fragment, null, showDeleteButton && textValue.length !== 0 && (React__default['default'].createElement(react.IconButton, { ariaLabel: props.strings.deleteButtonAriaLabel, onClick: deleteNumbers, styles: react.concatStyleSets(iconButtonStyles(theme), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.deleteIcon), iconProps: { iconName: 'BackSpace' } }))));
7872
7871
  } }),
7873
7872
  React__default['default'].createElement(react.FocusZone, null, dialPadButtonsDefault.map((rows, rowIndex) => {
7874
7873
  return (React__default['default'].createElement(react.Stack, { horizontal: true, key: `row_${rowIndex}`, horizontalAlign: "stretch" }, rows.map((button, columnIndex) => (React__default['default'].createElement(DialpadButton, { key: `button_${columnIndex}`,
@@ -7899,14 +7898,16 @@ const DialpadContainer = (props) => {
7899
7898
  * @beta
7900
7899
  */
7901
7900
  const Dialpad = (props) => {
7902
- /* @conditional-compile-remove(dialpad) */
7901
+ var _a;
7902
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
7903
7903
  const localeStrings = useLocale$1().strings.dialpad;
7904
7904
  const dialpadLocaleStringsTrampoline = () => {
7905
- /* @conditional-compile-remove(dialpad) */
7905
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
7906
7906
  return localeStrings;
7907
7907
  };
7908
7908
  const strings = Object.assign(Object.assign({}, dialpadLocaleStringsTrampoline()), props.strings);
7909
- return React__default['default'].createElement(DialpadContainer, Object.assign({ strings: strings }, props));
7909
+ const showDeleteButton = (_a = props.showDeleteButton) !== null && _a !== void 0 ? _a : true;
7910
+ return React__default['default'].createElement(DialpadContainer, Object.assign({ strings: strings }, props, { showDeleteButton: showDeleteButton }));
7910
7911
  };
7911
7912
 
7912
7913
  // Copyright (c) Microsoft Corporation.
@@ -8335,7 +8336,7 @@ const getSelector$1 = (component) => {
8335
8336
  return findSelector$1(component);
8336
8337
  };
8337
8338
  const findSelector$1 = (component) => {
8338
- /* @conditional-compile-remove(dialpad) */
8339
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
8339
8340
  // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector
8340
8341
  if (component === Dialpad) {
8341
8342
  return emptySelector;
@@ -14463,6 +14464,10 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
14463
14464
  onAddParticipant: (participant, options) => __awaiter$9(void 0, void 0, void 0, function* () {
14464
14465
  return yield adapter.addParticipant(participant, options);
14465
14466
  }),
14467
+ /* @conditional-compile-remove(PSTN-calls) */
14468
+ onSendDtmfTone: (dtmfTone) => __awaiter$9(void 0, void 0, void 0, function* () {
14469
+ yield adapter.sendDtmfTone(dtmfTone);
14470
+ }),
14466
14471
  onRemoveParticipant: (userId) => __awaiter$9(void 0, void 0, void 0, function* () {
14467
14472
  yield adapter.removeParticipant(userId);
14468
14473
  }),
@@ -14833,6 +14838,113 @@ const People = (props) => {
14833
14838
  return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { "data-ui-id": "call-composite-participants-button", strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon$2, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon$2, onClick: onClick, styles: styles })));
14834
14839
  };
14835
14840
 
14841
+ // Copyright (c) Microsoft Corporation.
14842
+ // Licensed under the MIT license.
14843
+ /**
14844
+ * @private
14845
+ */
14846
+ const themeddialpadModalStyle$1 = (theme) => ({
14847
+ main: {
14848
+ borderRadius: theme.effects.roundedCorner6,
14849
+ padding: '1rem'
14850
+ }
14851
+ });
14852
+ /**
14853
+ * @private
14854
+ */
14855
+ const themedDialpadStyle$1 = (isMobile, theme) => ({
14856
+ root: {
14857
+ padding: 0,
14858
+ marginLeft: 0,
14859
+ marginRight: 0,
14860
+ maxWidth: '100%'
14861
+ },
14862
+ textField: {
14863
+ root: {
14864
+ borderBottom: `1px solid ${theme.palette.neutralTertiaryAlt}`
14865
+ },
14866
+ field: {
14867
+ backgroundColor: theme.palette.white,
14868
+ fontSize: theme.fonts.large.fontSize,
14869
+ padding: '1.063rem 0.5rem',
14870
+ textAlign: 'center',
14871
+ paddingTop: 0
14872
+ }
14873
+ },
14874
+ primaryContent: {
14875
+ color: theme.palette.themeDarkAlt
14876
+ }
14877
+ });
14878
+
14879
+ // Copyright (c) Microsoft Corporation.
14880
+ // Licensed under the MIT license.
14881
+ /**
14882
+ * @private
14883
+ */
14884
+ const compositeOuterContainerStyles = {
14885
+ root: {
14886
+ width: '100%',
14887
+ // Create a new stacking context so that DrawerMenu can be positioned absolutely.
14888
+ position: 'relative'
14889
+ }
14890
+ };
14891
+ /** @private */
14892
+ const callCompositeContainerStyles = {
14893
+ root: {
14894
+ // Start a new stacking context so that any `position:absolute` elements
14895
+ // inside the call composite do not compete with its siblings.
14896
+ position: 'relative'
14897
+ }
14898
+ };
14899
+ /** @private */
14900
+ const controlBarContainerStyles$1 = {
14901
+ root: {
14902
+ // Start a new stacking context so that any `position:absolute` elements
14903
+ // inside the control bar do not compete with its siblings.
14904
+ position: 'relative'
14905
+ }
14906
+ };
14907
+ /** @private */
14908
+ const drawerContainerStyles$1 = {
14909
+ root: {
14910
+ position: 'absolute',
14911
+ top: 0,
14912
+ left: 0,
14913
+ width: '100%',
14914
+ height: '100%',
14915
+ // Any zIndex > 0 will work because this is the only absolutely
14916
+ // positioned element in the container.
14917
+ zIndex: 1
14918
+ }
14919
+ };
14920
+
14921
+ // Copyright (c) Microsoft Corporation.
14922
+ /** @private */
14923
+ const SendDtmfDialpad = (props) => {
14924
+ const dialpadProps = usePropsFor$1(Dialpad);
14925
+ const { strings, isMobile, showDialpad, onDismissDialpad } = props;
14926
+ const theme = react.useTheme();
14927
+ const onDismissTriggered = () => {
14928
+ onDismissDialpad();
14929
+ };
14930
+ const dialpadModalStyle = React.useMemo(() => themeddialpadModalStyle$1(theme), [theme]);
14931
+ const dialpadStyle = React.useMemo(() => themedDialpadStyle$1(isMobile, theme), [theme, isMobile]);
14932
+ const dialpadStrings = {
14933
+ placeholderText: ''
14934
+ };
14935
+ if (isMobile) {
14936
+ return (React__default['default'].createElement(react.Stack, null, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
14937
+ React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
14938
+ React__default['default'].createElement(react.Stack, { style: { padding: '1rem' } },
14939
+ React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false }))))))));
14940
+ }
14941
+ 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 },
14942
+ React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "end", verticalAlign: "center" },
14943
+ React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: theme.palette.black } })),
14944
+ React__default['default'].createElement(react.Stack, null,
14945
+ React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false, strings: dialpadStrings }))))));
14946
+ };
14947
+
14836
14948
  // Copyright (c) Microsoft Corporation.
14837
14949
  // Enforce a background color on control bar to ensure it matches the composite background color.
14838
14950
  const controlBarStyles = react.memoizeFunction((background) => ({ root: { background: background } }));
@@ -14849,6 +14961,13 @@ const CallControls = (props) => {
14849
14961
  tooltipOffContent: localeStrings.strings.callWithChat.peopleButtonTooltipOpen,
14850
14962
  tooltipOnContent: localeStrings.strings.callWithChat.peopleButtonTooltipClose
14851
14963
  }), [localeStrings]);
14964
+ /* @conditional-compile-remove(PSTN-calls) */
14965
+ const dialpadStrings = React.useMemo(() => ({
14966
+ dialpadModalAriaLabel: localeStrings.strings.call.dialpadModalAriaLabel,
14967
+ dialpadCloseModalButtonAriaLabel: localeStrings.strings.call.dialpadCloseModalButtonAriaLabel
14968
+ }), [localeStrings]);
14969
+ /* @conditional-compile-remove(PSTN-calls) */
14970
+ const [showDialpad, setShowDialpad] = React.useState(false);
14852
14971
  const theme = react.useTheme();
14853
14972
  /* @conditional-compile-remove(control-bar-button-injection) */
14854
14973
  const customButtons = React.useMemo(() => generateCustomControlBarButtons(onFetchCustomButtonPropsTrampoline$1(options), options === null || options === void 0 ? void 0 : options.displayType), [options]);
@@ -14856,7 +14975,13 @@ const CallControls = (props) => {
14856
14975
  if (props.options === false) {
14857
14976
  return React__default['default'].createElement(React__default['default'].Fragment, null);
14858
14977
  }
14978
+ /* @conditional-compile-remove(PSTN-calls) */
14979
+ const onDismissDialpad = () => {
14980
+ setShowDialpad(false);
14981
+ };
14859
14982
  return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
14983
+ /* @conditional-compile-remove(PSTN-calls) */
14984
+ React__default['default'].createElement(SendDtmfDialpad, { isMobile: !!props.isMobile, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
14860
14985
  React__default['default'].createElement(react.Stack.Item, null,
14861
14986
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: controlBarStyles(theme.semanticColors.bodyBackground) },
14862
14987
  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 }),
@@ -14892,7 +15017,7 @@ const callStatusSelector = reselect.createSelector([getCallStatus, getIsScreenSh
14892
15017
  // Copyright (c) Microsoft Corporation.
14893
15018
  // Licensed under the MIT license.
14894
15019
  /** @private */
14895
- const controlBarContainerStyles$1 = {
15020
+ const controlBarContainerStyles = {
14896
15021
  paddingTop: '0.25rem',
14897
15022
  paddingBottom: '0.25rem',
14898
15023
  // @TODO: this should be exposed through a custom CallComposite Theme API that extends the fluent theme with semantic values
@@ -14911,7 +15036,7 @@ const NOTIFICATION_CONTAINER_Z_INDEX = Math.max(CONTROL_BAR_Z_INDEX, VIDEO_GALLE
14911
15036
  /**
14912
15037
  * @private
14913
15038
  */
14914
- const callControlsContainerStyles = react.mergeStyles(controlBarContainerStyles$1, {
15039
+ const callControlsContainerStyles = react.mergeStyles(controlBarContainerStyles, {
14915
15040
  zIndex: CONTROL_BAR_Z_INDEX
14916
15041
  });
14917
15042
  const containerStyle$2 = {
@@ -15336,7 +15461,7 @@ const iconStyles = {
15336
15461
  /**
15337
15462
  * @private
15338
15463
  */
15339
- const themedDialpadModelStyle = (theme) => ({
15464
+ const themeddialpadModalStyle = (theme) => ({
15340
15465
  main: {
15341
15466
  borderRadius: theme.effects.roundedCorner6,
15342
15467
  padding: '1rem'
@@ -15385,48 +15510,6 @@ const themedCallButtonStyle = (theme) => ({
15385
15510
  }
15386
15511
  });
15387
15512
 
15388
- // Copyright (c) Microsoft Corporation.
15389
- // Licensed under the MIT license.
15390
- /**
15391
- * @private
15392
- */
15393
- const compositeOuterContainerStyles = {
15394
- root: {
15395
- width: '100%',
15396
- // Create a new stacking context so that DrawerMenu can be positioned absolutely.
15397
- position: 'relative'
15398
- }
15399
- };
15400
- /** @private */
15401
- const callCompositeContainerStyles = {
15402
- root: {
15403
- // Start a new stacking context so that any `position:absolute` elements
15404
- // inside the call composite do not compete with its siblings.
15405
- position: 'relative'
15406
- }
15407
- };
15408
- /** @private */
15409
- const controlBarContainerStyles = {
15410
- root: {
15411
- // Start a new stacking context so that any `position:absolute` elements
15412
- // inside the control bar do not compete with its siblings.
15413
- position: 'relative'
15414
- }
15415
- };
15416
- /** @private */
15417
- const drawerContainerStyles$1 = {
15418
- root: {
15419
- position: 'absolute',
15420
- top: 0,
15421
- left: 0,
15422
- width: '100%',
15423
- height: '100%',
15424
- // Any zIndex > 0 will work because this is the only absolutely
15425
- // positioned element in the container.
15426
- zIndex: 1
15427
- }
15428
- };
15429
-
15430
15513
  // Copyright (c) Microsoft Corporation.
15431
15514
  /** @private */
15432
15515
  const CallingDialpad = (props) => {
@@ -15448,7 +15531,7 @@ const CallingDialpad = (props) => {
15448
15531
  onDismissTriggered();
15449
15532
  }
15450
15533
  };
15451
- const dialpadModelStyle = React.useMemo(() => themedDialpadModelStyle(theme), [theme]);
15534
+ const dialpadModalStyle = React.useMemo(() => themeddialpadModalStyle(theme), [theme]);
15452
15535
  const dialpadStyle = React.useMemo(() => themedDialpadStyle(isMobile, theme), [theme, isMobile]);
15453
15536
  const callButtonStyle = React.useMemo(() => themedCallButtonStyle(theme), [theme]);
15454
15537
  const dialpadComponent = () => {
@@ -15459,12 +15542,12 @@ const CallingDialpad = (props) => {
15459
15542
  if (isMobile) {
15460
15543
  return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-with-chat-composite-dialpad" }, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
15461
15544
  React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
15462
- React__default['default'].createElement(react.Stack, { style: { padding: '16px' } }, dialpadComponent()))))));
15545
+ React__default['default'].createElement(react.Stack, { style: { padding: '1rem' } }, dialpadComponent()))))));
15463
15546
  }
15464
- 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: dialpadModelStyle, "data-ui-id": "call-with-chat-composite-dialpad" },
15547
+ 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, "data-ui-id": "call-with-chat-composite-dialpad" },
15465
15548
  React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center" },
15466
15549
  React__default['default'].createElement(react.Text, null, strings.dialpadModalTitle),
15467
- React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: 'black' } })),
15550
+ React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: theme.palette.black } })),
15468
15551
  React__default['default'].createElement(react.Stack, null, dialpadComponent()))));
15469
15552
  };
15470
15553
  function DialpadStartCallIconTrampoline() {
@@ -17295,6 +17378,8 @@ class AzureCommunicationCallAdapter {
17295
17378
  this.holdCall.bind(this);
17296
17379
  /* @conditional-compile-remove(PSTN-calls) */
17297
17380
  this.resumeCall.bind(this);
17381
+ /* @conditional-compile-remove(PSTN-calls) */
17382
+ this.sendDtmfTone.bind(this);
17298
17383
  }
17299
17384
  dispose() {
17300
17385
  this.resetDiagnosticsForwarder();
@@ -17554,6 +17639,12 @@ class AzureCommunicationCallAdapter {
17554
17639
  }
17555
17640
  });
17556
17641
  }
17642
+ /* @conditional-compile-remove(PSTN-calls) */
17643
+ sendDtmfTone(dtmfTone) {
17644
+ return __awaiter$4(this, void 0, void 0, function* () {
17645
+ this.handlers.onSendDtmfTone(dtmfTone);
17646
+ });
17647
+ }
17557
17648
  getState() {
17558
17649
  return this.context.getState();
17559
17650
  }
@@ -18037,7 +18128,7 @@ const inferCallWithChatControlOptions$1 = (mobileView, callWithChatControls) =>
18037
18128
  * @private
18038
18129
  */
18039
18130
  const CallWithChatControlBar = (props) => {
18040
- var _a, _b;
18131
+ var _a, _b, _c;
18041
18132
  const theme = react.useTheme();
18042
18133
  const callWithChatStrings = useCallWithChatCompositeStrings();
18043
18134
  const options = inferCallWithChatControlOptions$1(props.mobileView, props.callControls);
@@ -18069,14 +18160,27 @@ const CallWithChatControlBar = (props) => {
18069
18160
  const endCallButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined), [props.mobileView, theme]);
18070
18161
  /* @conditional-compile-remove(control-bar-button-injection) */
18071
18162
  const customButtons = React.useMemo(() => generateCustomCallWithChatControlBarButton(onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined), options !== false ? options === null || options === void 0 ? void 0 : options.displayType : undefined), [options]);
18163
+ /* @conditional-compile-remove(PSTN-calls) */
18164
+ const dialpadStrings = React.useMemo(() => ({
18165
+ dialpadModalAriaLabel: callWithChatStrings.dialpadModalAriaLabel,
18166
+ dialpadCloseModalButtonAriaLabel: callWithChatStrings.dialpadCloseModalButtonAriaLabel
18167
+ }), [callWithChatStrings]);
18168
+ /* @conditional-compile-remove(PSTN-calls) */
18169
+ const [showDialpad, setShowDialpad] = React.useState(false);
18072
18170
  // when options is false then we want to hide the whole control bar.
18073
18171
  if (options === false) {
18074
18172
  return React__default['default'].createElement(React__default['default'].Fragment, null);
18075
18173
  }
18076
18174
  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 }));
18077
- return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles$1) },
18175
+ /* @conditional-compile-remove(PSTN-calls) */
18176
+ const onDismissDialpad = () => {
18177
+ setShowDialpad(false);
18178
+ };
18179
+ return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles) },
18078
18180
  React__default['default'].createElement(react.Stack.Item, { grow: true },
18079
18181
  React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
18182
+ /* @conditional-compile-remove(PSTN-calls) */
18183
+ React__default['default'].createElement(SendDtmfDialpad, { isMobile: (_a = props.mobileView) !== null && _a !== void 0 ? _a : false, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
18080
18184
  React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
18081
18185
  React__default['default'].createElement(react.Stack.Item, null,
18082
18186
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: centerContainerStyles },
@@ -18085,8 +18189,8 @@ const CallWithChatControlBar = (props) => {
18085
18189
  props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
18086
18190
  isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles })),
18087
18191
  /* @conditional-compile-remove(control-bar-button-injection) */
18088
- (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :
18089
- _a.props.children.slice(0, props.mobileView
18192
+ (_b = customButtons['primary']) === null || _b === void 0 ? void 0 :
18193
+ _b.props.children.slice(0, props.mobileView
18090
18194
  ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
18091
18195
  : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18092
18196
  return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.strings.label, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
@@ -18095,8 +18199,8 @@ const CallWithChatControlBar = (props) => {
18095
18199
  React__default['default'].createElement(EndCall, { displayType: "compact", styles: endCallButtonStyles })))))),
18096
18200
  !props.mobileView && (React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
18097
18201
  /* @conditional-compile-remove(control-bar-button-injection) */
18098
- (_b = customButtons['secondary']) === null || _b === void 0 ? void 0 :
18099
- _b.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18202
+ (_c = customButtons['secondary']) === null || _c === void 0 ? void 0 :
18203
+ _c.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18100
18204
  return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.key, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
18101
18205
  }),
18102
18206
  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 })),
@@ -18270,6 +18374,10 @@ class CallWithChatBackedCallAdapter {
18270
18374
  this.addParticipant = (participant, options) => __awaiter$3(this, void 0, void 0, function* () {
18271
18375
  yield this.callWithChatAdapter.addParticipant(participant, options);
18272
18376
  });
18377
+ /* @conditional-compile-remove(PSTN-calls) */
18378
+ this.sendDtmfTone = (dtmfTone) => __awaiter$3(this, void 0, void 0, function* () {
18379
+ yield this.callWithChatAdapter.sendDtmfTone(dtmfTone);
18380
+ });
18273
18381
  this.callWithChatAdapter = callWithChatAdapter;
18274
18382
  }
18275
18383
  }
@@ -18713,7 +18821,7 @@ const CallWithChatScreen = (props) => {
18713
18821
  /* @conditional-compile-remove(file-sharing) */
18714
18822
  fileSharing: props.fileSharing, rtl: props.rtl }))),
18715
18823
  showControlBar && !isMobileWithActivePane && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
18716
- React__default['default'].createElement(react.Stack.Item, { styles: controlBarContainerStyles },
18824
+ React__default['default'].createElement(react.Stack.Item, { styles: controlBarContainerStyles$1 },
18717
18825
  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, callControls: props.callControls, containerHeight: containerHeight, containerWidth: containerWidth })))),
18718
18826
  showControlBar && showDrawer && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
18719
18827
  React__default['default'].createElement(CallAdapterProvider, { adapter: callAdapter },
@@ -18959,6 +19067,8 @@ class AzureCommunicationCallWithChatAdapter {
18959
19067
  this.resumeCall.bind(this);
18960
19068
  /* @conditional-compile-remove(PSTN-calls) */
18961
19069
  this.addParticipant.bind(this);
19070
+ /* @conditional-compile-remove(PSTN-calls) */
19071
+ this.sendDtmfTone.bind(this);
18962
19072
  }
18963
19073
  /** Join existing Call. */
18964
19074
  joinCall(microphoneOn) {
@@ -19155,6 +19265,12 @@ class AzureCommunicationCallWithChatAdapter {
19155
19265
  return yield this.callAdapter.addParticipant(participant, options);
19156
19266
  });
19157
19267
  }
19268
+ /* @conditional-compile-remove(PSTN-calls) */
19269
+ sendDtmfTone(dtmfTone) {
19270
+ return __awaiter(this, void 0, void 0, function* () {
19271
+ return yield this.callAdapter.sendDtmfTone(dtmfTone);
19272
+ });
19273
+ }
19158
19274
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19159
19275
  on(event, listener) {
19160
19276
  switch (event) {