@microsoft/omnichannel-chat-components 0.1.0-main.d40108a → 0.1.0-main.d5e0dfe

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 (72) hide show
  1. package/lib/cjs/common/utils.js +21 -2
  2. package/lib/cjs/components/callingcontainer/subcomponents/IncomingCall/IncomingCall.js +14 -1
  3. package/lib/cjs/components/chatbutton/ChatButton.js +1 -1
  4. package/lib/cjs/components/chatbutton/common/defaultProps/defaultChatButtonControlProps.js +1 -1
  5. package/lib/cjs/components/chatbutton/common/defaultStyles/defaultChatButtonSubTitleStyles.js +1 -0
  6. package/lib/cjs/components/chatbutton/common/defaultStyles/defaultChatButtonTitleStyles.js +1 -0
  7. package/lib/cjs/components/common/commandbutton/CommandButton.js +23 -15
  8. package/lib/cjs/components/confirmationpane/ConfirmationPane.js +7 -0
  9. package/lib/cjs/components/confirmationpane/common/defaultStyles/defaultConfirmationPaneButtonGroupStyles.js +5 -1
  10. package/lib/cjs/components/confirmationpane/common/defaultStyles/defaultConfirmationPaneGeneralStyles.js +7 -4
  11. package/lib/cjs/components/footer/Footer.js +1 -1
  12. package/lib/cjs/components/footer/common/defaultProps/defaultFooterControlProps.js +1 -0
  13. package/lib/cjs/components/footer/common/defaultStyles/defaultFooterStyleProps.js +12 -6
  14. package/lib/cjs/components/footer/subcomponents/AudioNotificationButton.js +19 -16
  15. package/lib/cjs/components/inputvalidationpane/InputValidationPane.js +28 -28
  16. package/lib/cjs/components/inputvalidationpane/common/default/defaultStyles/defaultInputValidationPaneCancelButtonStyles.js +2 -1
  17. package/lib/cjs/components/inputvalidationpane/common/default/defaultStyles/defaultInputValidationPaneInvalidInputErrorMessageStyles.js +1 -1
  18. package/lib/cjs/components/inputvalidationpane/common/default/defaultStyles/defaultInputValidationPaneSendButtonStyles.js +2 -1
  19. package/lib/cjs/components/outofofficehourspane/OOOHPane.js +13 -6
  20. package/lib/cjs/components/outofofficehourspane/common/defaultProps/defaultOOOHPaneControlProps.js +2 -1
  21. package/lib/cjs/components/outofofficehourspane/common/presetFourProps/presetFourOOOHPaneControlProps.js +15 -0
  22. package/lib/cjs/components/outofofficehourspane/common/presetFourProps/presetFourOOOHPaneProps.js +16 -0
  23. package/lib/cjs/components/postchatsurveypane/PostChatSurveyPane.js +2 -1
  24. package/lib/cjs/components/prechatsurveypane/PreChatSurveyPane.js +21 -8
  25. package/lib/cjs/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneButtonStyles.js +3 -1
  26. package/lib/cjs/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneMultilineTextInputStyles.js +10 -0
  27. package/lib/cjs/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneStyles.js +7 -1
  28. package/lib/cjs/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneTextInputStyles.js +10 -0
  29. package/lib/cjs/components/prechatsurveypane/interfaces/IPreChatSurveyPaneElementStyles.js +1 -0
  30. package/lib/cjs/services/BroadcastService.js +5 -1
  31. package/lib/esm/common/utils.js +16 -0
  32. package/lib/esm/components/callingcontainer/subcomponents/IncomingCall/IncomingCall.js +14 -1
  33. package/lib/esm/components/chatbutton/ChatButton.js +1 -1
  34. package/lib/esm/components/chatbutton/common/defaultProps/defaultChatButtonControlProps.js +1 -1
  35. package/lib/esm/components/chatbutton/common/defaultStyles/defaultChatButtonSubTitleStyles.js +1 -0
  36. package/lib/esm/components/chatbutton/common/defaultStyles/defaultChatButtonTitleStyles.js +1 -0
  37. package/lib/esm/components/common/commandbutton/CommandButton.js +23 -15
  38. package/lib/esm/components/confirmationpane/ConfirmationPane.js +8 -1
  39. package/lib/esm/components/confirmationpane/common/defaultStyles/defaultConfirmationPaneButtonGroupStyles.js +5 -1
  40. package/lib/esm/components/confirmationpane/common/defaultStyles/defaultConfirmationPaneGeneralStyles.js +7 -4
  41. package/lib/esm/components/footer/Footer.js +1 -1
  42. package/lib/esm/components/footer/common/defaultProps/defaultFooterControlProps.js +1 -0
  43. package/lib/esm/components/footer/common/defaultStyles/defaultFooterStyleProps.js +12 -6
  44. package/lib/esm/components/footer/subcomponents/AudioNotificationButton.js +19 -16
  45. package/lib/esm/components/inputvalidationpane/InputValidationPane.js +29 -29
  46. package/lib/esm/components/inputvalidationpane/common/default/defaultStyles/defaultInputValidationPaneCancelButtonStyles.js +2 -1
  47. package/lib/esm/components/inputvalidationpane/common/default/defaultStyles/defaultInputValidationPaneInvalidInputErrorMessageStyles.js +1 -1
  48. package/lib/esm/components/inputvalidationpane/common/default/defaultStyles/defaultInputValidationPaneSendButtonStyles.js +2 -1
  49. package/lib/esm/components/outofofficehourspane/OOOHPane.js +13 -7
  50. package/lib/esm/components/outofofficehourspane/common/defaultProps/defaultOOOHPaneControlProps.js +2 -1
  51. package/lib/esm/components/outofofficehourspane/common/presetFourProps/presetFourOOOHPaneControlProps.js +6 -0
  52. package/lib/esm/components/outofofficehourspane/common/presetFourProps/presetFourOOOHPaneProps.js +6 -0
  53. package/lib/esm/components/postchatsurveypane/PostChatSurveyPane.js +2 -1
  54. package/lib/esm/components/prechatsurveypane/PreChatSurveyPane.js +21 -8
  55. package/lib/esm/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneButtonStyles.js +3 -1
  56. package/lib/esm/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneMultilineTextInputStyles.js +3 -0
  57. package/lib/esm/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneStyles.js +5 -1
  58. package/lib/esm/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneTextInputStyles.js +3 -0
  59. package/lib/esm/components/prechatsurveypane/interfaces/IPreChatSurveyPaneElementStyles.js +1 -0
  60. package/lib/esm/services/BroadcastService.js +5 -1
  61. package/lib/types/common/utils.d.ts +1 -0
  62. package/lib/types/components/confirmationpane/interfaces/IConfirmationPaneControlProps.d.ts +0 -1
  63. package/lib/types/components/inputvalidationpane/interfaces/IInputValidationPaneControlProps.d.ts +0 -1
  64. package/lib/types/components/outofofficehourspane/common/presetFourProps/presetFourOOOHPaneControlProps.d.ts +2 -0
  65. package/lib/types/components/outofofficehourspane/common/presetFourProps/presetFourOOOHPaneProps.d.ts +2 -0
  66. package/lib/types/components/outofofficehourspane/interfaces/IOOOHPaneControlProps.d.ts +1 -0
  67. package/lib/types/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneMultilineTextInputStyles.d.ts +2 -0
  68. package/lib/types/components/prechatsurveypane/common/defaultProps/defaultStyles/defaultPreChatSurveyPaneTextInputStyles.d.ts +2 -0
  69. package/lib/types/components/prechatsurveypane/interfaces/IPreChatSurveyPaneButtonStyles.d.ts +2 -0
  70. package/lib/types/components/prechatsurveypane/interfaces/IPreChatSurveyPaneElementStyles.d.ts +5 -0
  71. package/lib/types/components/prechatsurveypane/interfaces/IPreChatSurveyPaneStyleProps.d.ts +5 -0
  72. package/package.json +1 -1
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.uuidv4 = exports.processCustomComponents = exports.getValidatedURL = exports.getSeconds = exports.getMinutes = exports.getInputValuesFromAdaptiveCard = exports.getHours = exports.generateEventName = exports.broadcastError = exports.addNoreferrerNoopenerTag = void 0;
6
+ exports.uuidv4 = exports.replaceURLWithAnchor = exports.processCustomComponents = exports.getValidatedURL = exports.getSeconds = exports.getMinutes = exports.getInputValuesFromAdaptiveCard = exports.getHours = exports.generateEventName = exports.broadcastError = exports.addNoreferrerNoopenerTag = void 0;
7
7
 
8
8
  var _Constants = require("./Constants");
9
9
 
@@ -133,4 +133,23 @@ const addNoreferrerNoopenerTag = htmlNode => {
133
133
  }
134
134
  };
135
135
 
136
- exports.addNoreferrerNoopenerTag = addNoreferrerNoopenerTag;
136
+ exports.addNoreferrerNoopenerTag = addNoreferrerNoopenerTag;
137
+
138
+ const replaceURLWithAnchor = (text, openInNewTab) => {
139
+ if (text) {
140
+ const modifiedText = text.replace(_Constants.Regex.URLRegex, function (url) {
141
+ if (openInNewTab) {
142
+ // eslint-disable-next-line quotes
143
+ return '<a href="' + url + '" rel="noreferrer noopener" target="_blank">' + url + '</a>';
144
+ } // eslint-disable-next-line quotes
145
+
146
+
147
+ return '<a href="' + url + '">' + url + '</a>';
148
+ });
149
+ return modifiedText;
150
+ }
151
+
152
+ return text;
153
+ };
154
+
155
+ exports.replaceURLWithAnchor = replaceURLWithAnchor;
@@ -132,12 +132,25 @@ function IncomingCall(props) {
132
132
  window.removeEventListener("keydown", ignoreDefault);
133
133
  };
134
134
  }, []);
135
+ (0, React.useEffect)(() => {
136
+ // Setting focus to decline call button when incoming call alert appears
137
+ if (declineCallButtonId) {
138
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
139
+ const declineCallButton = document.getElementById(declineCallButtonId);
140
+
141
+ if (declineCallButton) {
142
+ declineCallButton.focus();
143
+ }
144
+ }
145
+ }, []);
135
146
  return /*#__PURE__*/React.createElement(_react2.Stack, {
136
147
  horizontal: true,
137
148
  className: (_props$styleProps10 = props.styleProps) === null || _props$styleProps10 === void 0 ? void 0 : _props$styleProps10.className,
138
149
  horizontalAlign: "space-between",
139
150
  styles: stackStyles,
140
- dir: ((_props$controlProps18 = props.controlProps) === null || _props$controlProps18 === void 0 ? void 0 : _props$controlProps18.dir) ?? ((_defaultIncomingCallP27 = _defaultIncomingCallProps.defaultIncomingCallProps.controlProps) === null || _defaultIncomingCallP27 === void 0 ? void 0 : _defaultIncomingCallP27.dir)
151
+ dir: ((_props$controlProps18 = props.controlProps) === null || _props$controlProps18 === void 0 ? void 0 : _props$controlProps18.dir) ?? ((_defaultIncomingCallP27 = _defaultIncomingCallProps.defaultIncomingCallProps.controlProps) === null || _defaultIncomingCallP27 === void 0 ? void 0 : _defaultIncomingCallP27.dir),
152
+ role: "alert",
153
+ "aria-label": incomingCallTitleProps === null || incomingCallTitleProps === void 0 ? void 0 : incomingCallTitleProps.text
141
154
  }, /*#__PURE__*/React.createElement(_react2.Stack, {
142
155
  horizontal: true,
143
156
  id: "incomingCallLeftGroup",
@@ -112,7 +112,7 @@ function ChatButton(props) {
112
112
  var _props$controlProps12, _props$controlProps13, _props$controlProps14, _props$controlProps15, _props$controlProps16, _props$controlProps17, _props$controlProps18, _props$controlProps19, _props$styleProps11;
113
113
 
114
114
  const elementId = ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.id) ?? "lcw-components-chat-button";
115
- const defaultAriaLabel = ((_props$controlProps13 = props.controlProps) === null || _props$controlProps13 === void 0 ? void 0 : _props$controlProps13.ariaLabel) ?? "live chat button";
115
+ const defaultAriaLabel = ((_props$controlProps13 = props.controlProps) === null || _props$controlProps13 === void 0 ? void 0 : _props$controlProps13.ariaLabel) ?? _defaultChatButtonControlProps.defaultChatButtonControlProps.ariaLabel;
116
116
  const defaultRole = ((_props$controlProps14 = props.controlProps) === null || _props$controlProps14 === void 0 ? void 0 : _props$controlProps14.role) ?? (_defaultChatButtonControlProps.defaultChatButtonControlProps === null || _defaultChatButtonControlProps.defaultChatButtonControlProps === void 0 ? void 0 : _defaultChatButtonControlProps.defaultChatButtonControlProps.role);
117
117
  const containersDir = ((_props$controlProps15 = props.controlProps) === null || _props$controlProps15 === void 0 ? void 0 : _props$controlProps15.dir) ?? (_defaultChatButtonControlProps.defaultChatButtonControlProps === null || _defaultChatButtonControlProps.defaultChatButtonControlProps === void 0 ? void 0 : _defaultChatButtonControlProps.defaultChatButtonControlProps.dir);
118
118
  const hideChatButton = ((_props$controlProps16 = props.controlProps) === null || _props$controlProps16 === void 0 ? void 0 : _props$controlProps16.hideChatButton) ?? (_defaultChatButtonControlProps.defaultChatButtonControlProps === null || _defaultChatButtonControlProps.defaultChatButtonControlProps === void 0 ? void 0 : _defaultChatButtonControlProps.defaultChatButtonControlProps.hideChatButton);
@@ -8,7 +8,7 @@ const defaultChatButtonControlProps = {
8
8
  id: "lcw-components-chat-button",
9
9
  dir: "ltr",
10
10
  role: "button",
11
- ariaLabel: "live chat button",
11
+ ariaLabel: "Let's chat We are online",
12
12
  unreadMessageCount: "0",
13
13
  titleText: "Let's Chat!",
14
14
  subtitleText: "We're online.",
@@ -14,6 +14,7 @@ const defaultChatButtonSubTitleStyles = {
14
14
  fontWeight: "200",
15
15
  margin: "0px 14px 0px 14px",
16
16
  overflow: "hidden",
17
+ padding: "0px",
17
18
  textOverflow: "ellipsis !important",
18
19
  width: "max-content"
19
20
  };
@@ -15,6 +15,7 @@ const defaultChatButtonTitleStyles = {
15
15
  height: "22px",
16
16
  margin: "0px 14px 0px 14px",
17
17
  overflow: "hidden",
18
+ padding: "0px",
18
19
  textOverflow: "ellipsis !important",
19
20
  whiteSpace: "nowrap",
20
21
  width: "90px"
@@ -18,7 +18,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
 
20
20
  function CommandButton(props) {
21
- var _props$styles, _props$styles2, _props$styles3, _props$hoverStyles, _props$focusStyles;
21
+ var _props$hoverStyles, _props$hoverStyles2, _props$focusStyles;
22
22
 
23
23
  //imageIconProps > iconName
24
24
  const iconProp = props.imageIconProps ? {
@@ -26,25 +26,33 @@ function CommandButton(props) {
26
26
  } : {
27
27
  iconName: props.iconName
28
28
  };
29
+ let iconStyles = {};
30
+
31
+ if (props.type === "icon") {
32
+ var _props$styles;
33
+
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
+ iconStyles = { ...(props === null || props === void 0 ? void 0 : (_props$styles = props.styles) === null || _props$styles === void 0 ? void 0 : _props$styles.icon)
36
+ };
37
+ }
38
+
29
39
  const buttonStyles = {
30
- icon: props.styles,
40
+ icon: { ...iconStyles
41
+ },
31
42
  root: {
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- width: props === null || props === void 0 ? void 0 : (_props$styles = props.styles) === null || _props$styles === void 0 ? void 0 : _props$styles.width,
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- height: props === null || props === void 0 ? void 0 : (_props$styles2 = props.styles) === null || _props$styles2 === void 0 ? void 0 : _props$styles2.height,
36
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
- backgroundColor: props === null || props === void 0 ? void 0 : (_props$styles3 = props.styles) === null || _props$styles3 === void 0 ? void 0 : _props$styles3.backgroundColor,
38
43
  selectors: {
39
- ":hover .ms-Button-icon": {
40
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
- color: props === null || props === void 0 ? void 0 : (_props$hoverStyles = props.hoverStyles) === null || _props$hoverStyles === void 0 ? void 0 : _props$hoverStyles.color
44
+ ":hover .ms-Button-icon": { // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
+ ...(props === null || props === void 0 ? void 0 : (_props$hoverStyles = props.hoverStyles) === null || _props$hoverStyles === void 0 ? void 0 : _props$hoverStyles.icon)
42
46
  },
43
- ":active .ms-Button-icon": {
44
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
- color: props === null || props === void 0 ? void 0 : (_props$focusStyles = props.focusStyles) === null || _props$focusStyles === void 0 ? void 0 : _props$focusStyles.color
47
+ ":active .ms-Button-icon": { // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ ...(props === null || props === void 0 ? void 0 : (_props$hoverStyles2 = props.hoverStyles) === null || _props$hoverStyles2 === void 0 ? void 0 : _props$hoverStyles2.icon)
49
+ },
50
+ ":focus .ms-Button-icon": { // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
+ ...(props === null || props === void 0 ? void 0 : (_props$focusStyles = props.focusStyles) === null || _props$focusStyles === void 0 ? void 0 : _props$focusStyles.icon)
46
52
  }
47
- }
53
+ },
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ ...(props === null || props === void 0 ? void 0 : props.styles)
48
56
  },
49
57
  rootHovered: props.hoverStyles,
50
58
  rootFocused: props.focusStyles,
@@ -80,6 +80,12 @@ function ConfirmationPane(props) {
80
80
 
81
81
  (_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.onCancel();
82
82
  }
83
+ }, []); // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
+
85
+ const handleEscKeyDown = (0, _react2.useCallback)(e => {
86
+ if (e.code === _Constants.KeyCodes.ESCAPE) {
87
+ handleCancelClick();
88
+ }
83
89
  }, []);
84
90
  const containerStyles = {
85
91
  root: Object.assign({}, _defaultConfirmationPaneGeneralStyles.defaultConfirmationPaneGeneralStyles, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps)
@@ -107,6 +113,7 @@ function ConfirmationPane(props) {
107
113
  };
108
114
  return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, !((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.hideConfirmationPane) && /*#__PURE__*/_react2.default.createElement(_react.Stack, {
109
115
  id: elementId,
116
+ onKeyDown: handleEscKeyDown,
110
117
  tabIndex: -1,
111
118
  dir: ((_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.dir) || _defaultConfirmationPaneControlProps.defaultConfirmationPaneControlProps.dir,
112
119
  styles: containerStyles,
@@ -6,9 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.defaultConfirmationPaneButtonGroupStyles = void 0;
7
7
  const defaultConfirmationPaneButtonGroupStyles = {
8
8
  display: "flex",
9
+ width: "auto",
10
+ height: "auto",
11
+ boxSizing: "border-box",
9
12
  flexFlow: "row",
10
13
  justifyContent: "center",
11
14
  alignItems: "center",
12
- gap: "10px"
15
+ gap: "10px",
16
+ marginBottom: "10px"
13
17
  };
14
18
  exports.defaultConfirmationPaneButtonGroupStyles = defaultConfirmationPaneButtonGroupStyles;
@@ -5,19 +5,22 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.defaultConfirmationPaneGeneralStyles = void 0;
7
7
  const defaultConfirmationPaneGeneralStyles = {
8
+ display: "flex",
9
+ minHeight: "160px",
10
+ maxHeight: "300px",
11
+ boxSizing: "border-box",
8
12
  backgroundColor: "white",
9
13
  borderRadius: "2px",
10
14
  color: "black",
11
15
  fontFamily: "Segoe UI, Arial, sans-serif",
12
16
  fontSize: "14px",
13
- height: "160px",
14
17
  padding: "10px 20px",
15
- width: "262px",
16
18
  position: "absolute",
17
19
  justifyContent: "center",
18
20
  alignItems: "center",
19
- display: "flex",
20
21
  flexFlow: "column",
21
- zIndex: "9999"
22
+ zIndex: "9999",
23
+ left: "26px",
24
+ right: "26px"
22
25
  };
23
26
  exports.defaultConfirmationPaneGeneralStyles = defaultConfirmationPaneGeneralStyles;
@@ -87,7 +87,7 @@ function Footer(props) {
87
87
  verticalAlign: "start"
88
88
  }, /*#__PURE__*/React.createElement(_react2.Stack, {
89
89
  horizontal: true,
90
- verticalAlign: "start"
90
+ verticalAlign: "center"
91
91
  }, (0, _utils.processCustomComponents)((_props$controlProps14 = props.controlProps) === null || _props$controlProps14 === void 0 ? void 0 : (_props$controlProps15 = _props$controlProps14.rightGroup) === null || _props$controlProps15 === void 0 ? void 0 : _props$controlProps15.children), !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.hideAudioNotificationButton) && ((0, _decodeComponentString.decodeComponentString)((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.AudioNotificationButton) || /*#__PURE__*/React.createElement(_AudioNotificationButton.default, _extends({}, audioNotificationButtonProps, {
92
92
  onClick: (_props$controlProps17 = props.controlProps) === null || _props$controlProps17 === void 0 ? void 0 : _props$controlProps17.onAudioNotificationClick,
93
93
  styles: audioNotificationButtonStyles,
@@ -41,6 +41,7 @@ const defaultFooterControlProps = {
41
41
  },
42
42
  audioNotificationButtonProps: {
43
43
  id: "oc-lcw-footer-audionotification-button",
44
+ type: "icon",
44
45
  ariaLabel: "Turn sound off",
45
46
  toggleAriaLabel: "Turn sound on",
46
47
  iconName: "Volume3",
@@ -14,8 +14,10 @@ const defaultFooterStyleProps = {
14
14
  padding: "0 10px 5px 10px"
15
15
  },
16
16
  downloadTranscriptButtonStyleProps: {
17
- color: "blue",
18
- fontSize: 16,
17
+ icon: {
18
+ color: "blue",
19
+ fontSize: 16
20
+ },
19
21
  height: "25px",
20
22
  lineHeight: "25px",
21
23
  width: "25px"
@@ -25,8 +27,10 @@ const defaultFooterStyleProps = {
25
27
  backgroundColor: "#C8C8C8"
26
28
  },
27
29
  emailTranscriptButtonStyleProps: {
28
- color: "blue",
29
- fontSize: 16,
30
+ icon: {
31
+ color: "blue",
32
+ fontSize: 16
33
+ },
30
34
  height: "25px",
31
35
  lineHeight: "25px",
32
36
  width: "25px"
@@ -36,8 +40,10 @@ const defaultFooterStyleProps = {
36
40
  backgroundColor: "#C8C8C8"
37
41
  },
38
42
  audioNotificationButtonStyleProps: {
39
- color: "blue",
40
- fontSize: 16,
43
+ icon: {
44
+ color: "blue",
45
+ fontSize: 16
46
+ },
41
47
  height: "25px",
42
48
  lineHeight: "25px",
43
49
  width: "25px"
@@ -18,31 +18,34 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
 
20
20
  function AudioNotificationButton(props) {
21
- var _props$styles, _props$styles2, _props$styles3, _props$hoverStyles, _props$focusStyles;
22
-
23
21
  const {
24
22
  disabled
25
23
  } = props;
26
24
  const [muted, setMuted] = (0, _react2.useState)(props.isAudioMuted);
25
+ let iconStyles = {};
26
+
27
+ if (props.type === "icon") {
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ iconStyles = { ...(props === null || props === void 0 ? void 0 : props.styles).icon
30
+ };
31
+ }
32
+
27
33
  const iconButtonStyles = {
28
- icon: props.styles,
34
+ icon: iconStyles,
29
35
  root: {
30
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
- width: props === null || props === void 0 ? void 0 : (_props$styles = props.styles) === null || _props$styles === void 0 ? void 0 : _props$styles.width,
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- height: props === null || props === void 0 ? void 0 : (_props$styles2 = props.styles) === null || _props$styles2 === void 0 ? void 0 : _props$styles2.height,
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- backgroundColor: props === null || props === void 0 ? void 0 : (_props$styles3 = props.styles) === null || _props$styles3 === void 0 ? void 0 : _props$styles3.backgroundColor,
36
36
  selectors: {
37
- ":hover .ms-Button-icon": {
38
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
- color: props === null || props === void 0 ? void 0 : (_props$hoverStyles = props.hoverStyles) === null || _props$hoverStyles === void 0 ? void 0 : _props$hoverStyles.color
37
+ ":hover .ms-Button-icon": { // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ ...(props === null || props === void 0 ? void 0 : props.hoverStyles).icon
40
39
  },
41
- ":active .ms-Button-icon": {
42
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
- color: props === null || props === void 0 ? void 0 : (_props$focusStyles = props.focusStyles) === null || _props$focusStyles === void 0 ? void 0 : _props$focusStyles.color
40
+ ":active .ms-Button-icon": { // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ ...(props === null || props === void 0 ? void 0 : props.hoverStyles).icon
42
+ },
43
+ ":focus .ms-Button-icon": { // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ ...(props === null || props === void 0 ? void 0 : props.focusStyles).icon
44
45
  }
45
- }
46
+ },
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ ...(props === null || props === void 0 ? void 0 : props.styles)
46
49
  },
47
50
  rootHovered: props.hoverStyles,
48
51
  rootFocused: props.focusStyles,
@@ -55,23 +55,28 @@ function InputValidationPane(props) {
55
55
  const [isInitialRendering, setIsInitialRendering] = (0, _react2.useState)(true);
56
56
  const [isInvalidInput, setIsInvalidInput] = (0, _react2.useState)(false);
57
57
  const [isSendButtonEnabled, setIsSendButtonEnabled] = (0, _react2.useState)(false);
58
-
59
- const isValidInput = () => {
58
+ const isValidInput = (0, _react2.useCallback)(() => {
60
59
  var _props$controlProps2, _props$controlProps3;
61
60
 
62
- return (_props$controlProps2 = props.controlProps) !== null && _props$controlProps2 !== void 0 && _props$controlProps2.checkInput ? inputValue && ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.checkInput(inputValue)) : true;
63
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
+ if (!((_props$controlProps2 = props.controlProps) !== null && _props$controlProps2 !== void 0 && _props$controlProps2.checkInput)) {
62
+ return true;
63
+ }
64
+
65
+ if (!inputValue) {
66
+ return false;
67
+ }
64
68
 
69
+ return (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.checkInput(inputValue);
70
+ }, [inputValue]); // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
71
 
66
- const handleInputChange = e => {
72
+ const handleInputChange = (0, _react2.useCallback)(e => {
67
73
  var _props$controlProps4, _props$controlProps5;
68
74
 
69
75
  setInputValue(e.target.value);
70
76
  e.target.value ? setIsSendButtonEnabled(((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.enableSendButton) || e.target.value !== "") : setIsSendButtonEnabled(((_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.enableSendButton) ?? false);
71
77
  setIsInvalidInput(false);
72
- };
73
-
74
- const send = (controlId, suffix) => {
78
+ }, []);
79
+ const send = (0, _react2.useCallback)((controlId, suffix) => {
75
80
  var _props$controlProps6;
76
81
 
77
82
  if ((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.onSend) {
@@ -90,20 +95,17 @@ function InputValidationPane(props) {
90
95
  setIsInvalidInput(true);
91
96
  }
92
97
  }
93
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
+ }, [inputValue]); // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
99
 
95
-
96
- const handleInputKeyDown = e => {
100
+ const handleInputKeyUp = (0, _react2.useCallback)(e => {
97
101
  if (e.code === _Constants.KeyCodes.ENTER) {
98
- send(elementId + "-textField", "KeyDown");
102
+ send(elementId + "-textField", "KeyUp");
99
103
  }
100
- };
101
-
102
- const handleSendClick = () => {
104
+ }, [inputValue]);
105
+ const handleSendClick = (0, _react2.useCallback)(() => {
103
106
  send(elementId + "-sendbutton", "Click");
104
- };
105
-
106
- const cancel = (controlId, suffix) => {
107
+ }, [inputValue]);
108
+ const cancel = (0, _react2.useCallback)((controlId, suffix) => {
107
109
  var _props$controlProps8;
108
110
 
109
111
  if ((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.onCancel) {
@@ -121,19 +123,16 @@ function InputValidationPane(props) {
121
123
 
122
124
  (_props$controlProps10 = props.controlProps) === null || _props$controlProps10 === void 0 ? void 0 : _props$controlProps10.onCancel();
123
125
  }
124
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
125
-
126
+ }, []); // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
127
 
127
- const handleEscKeyDown = e => {
128
+ const handleEscKeyDown = (0, _react2.useCallback)(e => {
128
129
  if (e.code === _Constants.KeyCodes.ESCAPE) {
129
130
  cancel(elementId, "KeyDown");
130
131
  }
131
- };
132
-
133
- const handleCancelClick = () => {
132
+ }, []);
133
+ const handleCancelClick = (0, _react2.useCallback)(() => {
134
134
  cancel(elementId + "-cancelbutton", "Click");
135
- };
136
-
135
+ }, []);
137
136
  (0, _react2.useEffect)(() => {
138
137
  var _props$controlProps11, _props$controlProps12, _props$controlProps13;
139
138
 
@@ -160,7 +159,8 @@ function InputValidationPane(props) {
160
159
  const redBorderStyles = {
161
160
  borderColor: ((_props$controlProps14 = props.controlProps) === null || _props$controlProps14 === void 0 ? void 0 : _props$controlProps14.inputWithErrorMessageBorderColor) ?? _defaultInputValidationPaneControlProps.defaultInputValidationPaneControlProps.inputWithErrorMessageBorderColor,
162
161
  borderRadius: "1px",
163
- borderStyle: "solid"
162
+ borderStyle: "solid",
163
+ borderWidth: "1px"
164
164
  };
165
165
  const inputStyles = {
166
166
  root: Object.assign({}, _defaultInputValidationPaneInputStyles.defaultInputValidationPaneInputStyles, (_props$styleProps5 = props.styleProps) === null || _props$styleProps5 === void 0 ? void 0 : _props$styleProps5.inputStyleProps),
@@ -244,7 +244,7 @@ function InputValidationPane(props) {
244
244
  ariaLabel: ((_props$controlProps24 = props.controlProps) === null || _props$controlProps24 === void 0 ? void 0 : _props$controlProps24.inputAriaLabel) || _defaultInputValidationPaneControlProps.defaultInputValidationPaneControlProps.inputAriaLabel,
245
245
  borderless: isInvalidInput,
246
246
  onChange: handleInputChange,
247
- onKeyDown: handleInputKeyDown
247
+ onKeyUp: handleInputKeyUp
248
248
  })), isInvalidInput && ((0, _decodeComponentString.decodeComponentString)((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.invalidInputErrorMessage) || /*#__PURE__*/_react2.default.createElement(_react.Stack, {
249
249
  className: (_props$styleProps22 = props.styleProps) === null || _props$styleProps22 === void 0 ? void 0 : (_props$styleProps22$c = _props$styleProps22.classNames) === null || _props$styleProps22$c === void 0 ? void 0 : _props$styleProps22$c.invalidInputErrorMessageClassName,
250
250
  styles: invalidInputErrorMessageStyles,
@@ -16,6 +16,7 @@ const defaultInputValidationPaneCancelButtonStyles = {
16
16
  fontWeight: "500",
17
17
  lineHeight: "19px",
18
18
  textOverflow: "ellipsis",
19
- whiteSpace: "nowrap"
19
+ whiteSpace: "nowrap",
20
+ width: "80px"
20
21
  };
21
22
  exports.defaultInputValidationPaneCancelButtonStyles = defaultInputValidationPaneCancelButtonStyles;
@@ -8,7 +8,7 @@ const defaultInputValidationPaneInvalidInputErrorMessageStyles = {
8
8
  color: "#a4262c",
9
9
  fontFamily: "'Segoe UI', Arial, sans-serif",
10
10
  fontSize: "12px",
11
- height: "16px,",
11
+ height: "16px",
12
12
  lineHeight: "16px",
13
13
  marginTop: "4px"
14
14
  };
@@ -12,6 +12,7 @@ const defaultInputValidationPaneSendButtonStyles = {
12
12
  fontWeight: "500",
13
13
  lineHeight: "19px",
14
14
  textOverflow: "ellipsis",
15
- whiteSpace: "nowrap"
15
+ whiteSpace: "nowrap",
16
+ width: "80px"
16
17
  };
17
18
  exports.defaultInputValidationPaneSendButtonStyles = defaultInputValidationPaneSendButtonStyles;
@@ -17,10 +17,12 @@ var _defaultOOOHPaneGeneralStyles = require("./common/defaultProps/defaultStyles
17
17
 
18
18
  var _defaultOOOHPaneTitleStyles = require("./common/defaultProps/defaultStyles/defaultOOOHPaneTitleStyles");
19
19
 
20
+ var _utils = require("../../common/utils");
21
+
20
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
23
 
22
24
  function OOOHPane(props) {
23
- var _props$controlProps, _props$styleProps, _props$styleProps2, _props$controlProps2, _props$controlProps3, _props$styleProps3, _props$styleProps3$cl, _props$controlProps4, _props$controlProps5, _props$componentOverr, _props$styleProps4, _props$styleProps4$cl, _props$controlProps6;
25
+ var _props$controlProps, _props$styleProps, _props$styleProps2, _props$controlProps2, _props$controlProps3, _props$controlProps4, _props$controlProps5, _props$styleProps3, _props$styleProps3$cl, _props$controlProps6, _props$controlProps7, _props$componentOverr, _props$styleProps4, _props$styleProps4$cl;
24
26
 
25
27
  const elementId = ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.id) ?? _defaultOOOHPaneControlProps.defaultOOOHPaneControlProps.id;
26
28
  const containerStyles = {
@@ -29,19 +31,24 @@ function OOOHPane(props) {
29
31
  const titleStyles = {
30
32
  root: Object.assign({}, _defaultOOOHPaneTitleStyles.defaultOOOHPaneTitleStyles, (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.titleStyleProps)
31
33
  };
32
- return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, !((_props$controlProps2 = props.controlProps) !== null && _props$controlProps2 !== void 0 && _props$controlProps2.hideOOOHPane) && /*#__PURE__*/_react2.default.createElement(_react.Stack, {
34
+ const displayText = (0, _utils.replaceURLWithAnchor)(((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.titleText) ?? _defaultOOOHPaneControlProps.defaultOOOHPaneControlProps.titleText, ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.openLinkInNewTab) ?? _defaultOOOHPaneControlProps.defaultOOOHPaneControlProps.openLinkInNewTab) ?? "";
35
+ return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, !((_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.hideOOOHPane) && /*#__PURE__*/_react2.default.createElement(_react.Stack, {
33
36
  id: elementId,
34
37
  tabIndex: -1,
35
38
  styles: containerStyles,
36
- role: (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.role,
39
+ role: (_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.role,
37
40
  className: (_props$styleProps3 = props.styleProps) === null || _props$styleProps3 === void 0 ? void 0 : (_props$styleProps3$cl = _props$styleProps3.classNames) === null || _props$styleProps3$cl === void 0 ? void 0 : _props$styleProps3$cl.containerClassName,
38
- dir: ((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.dir) ?? _defaultOOOHPaneControlProps.defaultOOOHPaneControlProps.dir
39
- }, !((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.hideTitle) && ((0, _decodeComponentString.decodeComponentString)((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.title) || /*#__PURE__*/_react2.default.createElement(_react.Label, {
41
+ dir: ((_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.dir) ?? _defaultOOOHPaneControlProps.defaultOOOHPaneControlProps.dir
42
+ }, !((_props$controlProps7 = props.controlProps) !== null && _props$controlProps7 !== void 0 && _props$controlProps7.hideTitle) && ((0, _decodeComponentString.decodeComponentString)((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.title) || /*#__PURE__*/_react2.default.createElement(_react.Text, {
40
43
  className: (_props$styleProps4 = props.styleProps) === null || _props$styleProps4 === void 0 ? void 0 : (_props$styleProps4$cl = _props$styleProps4.classNames) === null || _props$styleProps4$cl === void 0 ? void 0 : _props$styleProps4$cl.titleClassName,
41
44
  styles: titleStyles,
42
45
  tabIndex: -1,
43
46
  id: elementId + "-title"
44
- }, ((_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.titleText) ?? _defaultOOOHPaneControlProps.defaultOOOHPaneControlProps.titleText))));
47
+ }, /*#__PURE__*/_react2.default.createElement("div", {
48
+ dangerouslySetInnerHTML: {
49
+ __html: displayText
50
+ }
51
+ })))));
45
52
  }
46
53
 
47
54
  var _default = OOOHPane;
@@ -9,6 +9,7 @@ const defaultOOOHPaneControlProps = {
9
9
  dir: "auto",
10
10
  hideOOOHPane: false,
11
11
  hideTitle: false,
12
- titleText: "Thanks for contacting us. You have reached us outside of our operating hours. An agent will respond when we open."
12
+ titleText: "Thanks for contacting us. You have reached us outside of our operating hours. An agent will respond when we open.",
13
+ openLinkInNewTab: false
13
14
  };
14
15
  exports.defaultOOOHPaneControlProps = defaultOOOHPaneControlProps;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.presetFourOOOHPaneControlProps = void 0;
7
+
8
+ var _defaultOOOHPaneControlProps = require("../defaultProps/defaultOOOHPaneControlProps");
9
+
10
+ const presetFourOOOHPaneControlProps = { ..._defaultOOOHPaneControlProps.defaultOOOHPaneControlProps,
11
+ id: "oc-lcw-outofofficehourspane-preset1",
12
+ titleText: "We are out of office. Please contact us here https://www.microsoft.com for further assisstance",
13
+ openLinkInNewTab: true
14
+ };
15
+ exports.presetFourOOOHPaneControlProps = presetFourOOOHPaneControlProps;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.presetFourOOOHPaneProps = void 0;
7
+
8
+ var _defaultOOOHPaneStyles = require("../defaultProps/defaultStyles/defaultOOOHPaneStyles");
9
+
10
+ var _presetFourOOOHPaneControlProps = require("./presetFourOOOHPaneControlProps");
11
+
12
+ const presetFourOOOHPaneProps = {
13
+ controlProps: _presetFourOOOHPaneControlProps.presetFourOOOHPaneControlProps,
14
+ styleProps: _defaultOOOHPaneStyles.defaultOOOHPaneStyles
15
+ };
16
+ exports.presetFourOOOHPaneProps = presetFourOOOHPaneProps;
@@ -28,7 +28,8 @@ function PostChatSurveyPane(props) {
28
28
  const iframeStyles = {
29
29
  height: "100vh",
30
30
  width: "100%",
31
- display: "block"
31
+ display: "block",
32
+ maxHeight: "100%"
32
33
  };
33
34
  return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement(_react.Stack, {
34
35
  id: elementId,