@zohoim/chat-components 0.0.15 → 0.0.17

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 (144) hide show
  1. package/es/ActionIcon/ActionIcon.js +2 -0
  2. package/es/ActionIconWrapper/ActionIconWrapper.js +6 -2
  3. package/es/ActionIconWrapper/props/propTypes.js +1 -0
  4. package/es/AttachmentBubble/AttachmentBubble.js +24 -8
  5. package/es/AttachmentBubble/css/AttachmentBubble.module.css +15 -1
  6. package/es/AttachmentBubble/css/cssJSLogic.js +15 -0
  7. package/es/AttachmentBubble/props/propTypes.js +2 -1
  8. package/es/AttachmentBubbleInfo/AttachmentBubbleInfo.js +13 -2
  9. package/es/AttachmentBubbleInfo/css/AttachmentBubbleInfo.module.css +9 -0
  10. package/es/AttachmentBubbleInfo/css/cssJSLogic.js +13 -0
  11. package/es/AttachmentBubbleInfo/props/propTypes.js +2 -1
  12. package/es/AttachmentIcon/AttachmentIcon.js +3 -1
  13. package/es/AttachmentIcon/css/AttachmentIcon.module.css +2 -2
  14. package/es/AttachmentIcon/props/propTypes.js +6 -0
  15. package/es/AttachmentIcon/utils/getAttachmentIconComponent.js +4 -3
  16. package/es/AudioBubble/AudioBubble.js +5 -2
  17. package/es/AudioBubble/props/propTypes.js +2 -1
  18. package/es/ImageBubble/ImageBubble.js +13 -2
  19. package/es/ImageBubble/css/ImageBubble.module.css +8 -2
  20. package/es/ImageBubble/css/cssJSLogic.js +13 -0
  21. package/es/ImageBubble/props/propTypes.js +2 -1
  22. package/es/LocationBubble/LocationBubble.js +13 -2
  23. package/es/LocationBubble/css/LocationBubble.module.css +14 -1
  24. package/es/LocationBubble/css/cssJSLogic.js +13 -0
  25. package/es/LocationBubble/props/propTypes.js +2 -1
  26. package/es/MediaBubbleWrapper/MediaBubbleWrapper.js +5 -2
  27. package/es/MediaBubbleWrapper/props/propTypes.js +2 -1
  28. package/es/Message/Message.js +4 -2
  29. package/es/MessageAction/MessageAction.js +3 -0
  30. package/es/MessageAction/props/propTypes.js +1 -0
  31. package/es/MessageActions/MessageActions.js +14 -2
  32. package/es/MessageActions/props/propTypes.js +1 -0
  33. package/es/MessageBox/MessageBox.js +2 -2
  34. package/es/MessageBubble/MessageBubble.js +25 -19
  35. package/es/MessageBubble/css/MessageBubble.module.css +12 -2
  36. package/es/MessageBubble/css/cssJSLogic.js +4 -2
  37. package/es/MessageStatus/css/MessageStatus.module.css +0 -3
  38. package/es/MoreActionItem/MoreActionItem.js +8 -0
  39. package/es/MoreActionItem/props/propTypes.js +1 -0
  40. package/es/ReplyBubble/ReplyBubble.js +32 -13
  41. package/es/ReplyBubble/css/ReplyBubble.module.css +1 -1
  42. package/es/ReplyBubble/props/propTypes.js +8 -2
  43. package/es/ReplyBubbleContent/ReplyBubbleContent.js +11 -2
  44. package/es/ReplyBubbleContent/css/ReplyBubbleContent.module.css +21 -3
  45. package/es/ReplyBubbleContent/css/cssJSLogic.js +13 -0
  46. package/es/ReplyBubbleContent/props/propTypes.js +2 -1
  47. package/es/ReplyBubbleHeader/ReplyBubbleHeader.js +20 -5
  48. package/es/ReplyBubbleHeader/css/ReplyBubbleHeader.module.css +12 -0
  49. package/es/ReplyBubbleHeader/css/cssJSLogic.js +12 -0
  50. package/es/ReplyBubbleHeader/props/defaultProps.js +2 -1
  51. package/es/ReplyBubbleHeader/props/propTypes.js +6 -2
  52. package/es/TextBubble/TextBubble.js +15 -3
  53. package/es/TextBubble/css/TextBubble.module.css +13 -0
  54. package/es/TextBubble/css/cssJSLogic.js +18 -0
  55. package/es/TextBubble/props/propTypes.js +2 -1
  56. package/es/Theme/themeVariables/commonThemeColorVariable.js +1 -2
  57. package/es/Theme/themeVariables/dark/blueTheme.js +97 -40
  58. package/es/Theme/themeVariables/dark/commonColorVariable.js +7 -1
  59. package/es/Theme/themeVariables/dark/greenTheme.js +95 -38
  60. package/es/Theme/themeVariables/dark/orangeTheme.js +94 -37
  61. package/es/Theme/themeVariables/dark/redTheme.js +94 -46
  62. package/es/Theme/themeVariables/dark/yellowTheme.js +94 -37
  63. package/es/Theme/themeVariables/light/blueTheme.js +96 -36
  64. package/es/Theme/themeVariables/light/commonColorVariable.js +12 -1
  65. package/es/Theme/themeVariables/light/greenTheme.js +96 -36
  66. package/es/Theme/themeVariables/light/orangeTheme.js +96 -34
  67. package/es/Theme/themeVariables/light/redTheme.js +96 -34
  68. package/es/Theme/themeVariables/light/yellowTheme.js +96 -36
  69. package/es/Theme/themeVariables/pureDark/blueTheme.js +93 -37
  70. package/es/Theme/themeVariables/pureDark/commonColorVariable.js +7 -1
  71. package/es/Theme/themeVariables/pureDark/greenTheme.js +94 -37
  72. package/es/Theme/themeVariables/pureDark/orangeTheme.js +94 -37
  73. package/es/Theme/themeVariables/pureDark/redTheme.js +94 -37
  74. package/es/Theme/themeVariables/pureDark/yellowTheme.js +94 -37
  75. package/es/VideoBubble/VideoBubble.js +5 -2
  76. package/es/VideoBubble/props/propTypes.js +2 -1
  77. package/es/icons/iconSrc/attachments/Text.js +47 -0
  78. package/es/icons/iconSrc/attachments/index.js +1 -1
  79. package/es/im/ArticleBubble/ArticleBubble.js +16 -3
  80. package/es/im/ArticleBubble/css/ArticleBubble.module.css +25 -7
  81. package/es/im/ArticleBubble/css/cssJSLogic.js +12 -0
  82. package/es/im/ArticleBubble/props/propTypes.js +2 -1
  83. package/es/im/IMAutoMessageInfo/css/IMAutoMessageInfo.module.css +1 -0
  84. package/es/im/IMIntegrationIcon/css/IMIntegrationIcon.module.css +1 -6
  85. package/es/im/IMMessage/IMMessage.js +28 -4
  86. package/es/im/IMMessage/props/propTypes.js +25 -1
  87. package/es/im/IMMessageContent/IMMessageContent.js +39 -42
  88. package/es/im/IMMessageContent/css/IMMessageContent.module.css +6 -2
  89. package/es/im/IMMessageContent/props/propTypes.js +7 -2
  90. package/es/im/IMMessageMeta/IMMessageMeta.js +8 -8
  91. package/es/im/IMMessageMeta/css/IMMessageMeta.module.css +1 -1
  92. package/es/im/IMMessageMeta/props/defaultProps.js +1 -1
  93. package/es/im/IMPermaLink/css/IMPermaLink.module.css +1 -1
  94. package/es/im/IMReplyBubble/IMReplyBubble.js +10 -5
  95. package/es/im/IMReplyBubble/props/propTypes.js +7 -2
  96. package/es/im/IMTextBubble/IMTextBubble.js +5 -2
  97. package/es/im/IMTextBubble/props/propTypes.js +2 -1
  98. package/es/im/css/common.module.css +2 -2
  99. package/es/im/index.js +0 -1
  100. package/es/index.js +0 -1
  101. package/package.json +4 -21
  102. package/es/InfoBubble/InfoBubble.js +0 -34
  103. package/es/InfoBubble/css/InfoBubble.module.css +0 -0
  104. package/es/InfoBubble/css/cssJSLogic.js +0 -10
  105. package/es/InfoBubble/index.js +0 -1
  106. package/es/InfoBubble/props/defaultProps.js +0 -6
  107. package/es/InfoBubble/props/propTypes.js +0 -6
  108. package/es/Theme/crm/dark/blueFanTheme.js +0 -28
  109. package/es/Theme/crm/dark/blueTheme.js +0 -28
  110. package/es/Theme/crm/dark/commonColorVariable.js +0 -11
  111. package/es/Theme/crm/dark/darkBlueTheme.js +0 -28
  112. package/es/Theme/crm/dark/darkGreyTheme.js +0 -28
  113. package/es/Theme/crm/dark/greenTheme.js +0 -28
  114. package/es/Theme/crm/dark/orangeTheme.js +0 -28
  115. package/es/Theme/crm/dark/pinkTheme.js +0 -28
  116. package/es/Theme/crm/dark/tealTheme.js +0 -28
  117. package/es/Theme/crm/dark/whiteTheme.js +0 -28
  118. package/es/Theme/crm/light/blueFanTheme.js +0 -28
  119. package/es/Theme/crm/light/blueTheme.js +0 -31
  120. package/es/Theme/crm/light/commonColorVariable.js +0 -9
  121. package/es/Theme/crm/light/darkBlueTheme.js +0 -28
  122. package/es/Theme/crm/light/darkGreyTheme.js +0 -28
  123. package/es/Theme/crm/light/greenTheme.js +0 -28
  124. package/es/Theme/crm/light/orangeTheme.js +0 -28
  125. package/es/Theme/crm/light/pinkTheme.js +0 -28
  126. package/es/Theme/crm/light/tealTheme.js +0 -28
  127. package/es/Theme/crm/light/whiteTheme.js +0 -28
  128. package/es/Theme/crm/pureDark/blueFanTheme.js +0 -28
  129. package/es/Theme/crm/pureDark/blueTheme.js +0 -28
  130. package/es/Theme/crm/pureDark/commonColorVariable.js +0 -9
  131. package/es/Theme/crm/pureDark/darkBlueTheme.js +0 -28
  132. package/es/Theme/crm/pureDark/darkGreyTheme.js +0 -28
  133. package/es/Theme/crm/pureDark/greenTheme.js +0 -28
  134. package/es/Theme/crm/pureDark/orangeTheme.js +0 -28
  135. package/es/Theme/crm/pureDark/pinkTheme.js +0 -28
  136. package/es/Theme/crm/pureDark/tealTheme.js +0 -28
  137. package/es/Theme/crm/pureDark/whiteTheme.js +0 -28
  138. package/es/im/IMInfoBubble/IMInfoBubble.js +0 -34
  139. package/es/im/IMInfoBubble/css/IMInfoBubble.module.css +0 -0
  140. package/es/im/IMInfoBubble/css/cssJSLogic.js +0 -10
  141. package/es/im/IMInfoBubble/index.js +0 -1
  142. package/es/im/IMInfoBubble/props/defaultProps.js +0 -6
  143. package/es/im/IMInfoBubble/props/propTypes.js +0 -6
  144. /package/es/icons/factory/attachments/{txt.svg → text.svg} +0 -0
@@ -0,0 +1,47 @@
1
+ /* eslint-disable */
2
+ import React from 'react';
3
+ import Icon from '@zohodesk/icon/es/Icon/Icon';
4
+ export default function IconComponent(props) {
5
+ return /*#__PURE__*/React.createElement(Icon, props, /*#__PURE__*/React.createElement("svg", {
6
+ id: "Layer_1",
7
+ "data-name": "Layer 1",
8
+ xmlns: "http://www.w3.org/2000/svg",
9
+ viewBox: "0 0 32.19 32.94"
10
+ }, " ", /*#__PURE__*/React.createElement("defs", null, " ", /*#__PURE__*/React.createElement("style", {
11
+ dangerouslySetInnerHTML: {
12
+ __html: `
13
+ .cls-1 {
14
+ fill: #c8cadb;
15
+ opacity: 0.5;
16
+ }
17
+
18
+ .cls-2 {
19
+ fill: #010101;
20
+ }
21
+ `
22
+ }
23
+ }), " "), " ", /*#__PURE__*/React.createElement("rect", {
24
+ className: "cls-1",
25
+ x: "5.35",
26
+ y: "6.1",
27
+ width: "26.84",
28
+ height: "26.84",
29
+ rx: "5"
30
+ }), " ", /*#__PURE__*/React.createElement("g", null, " ", /*#__PURE__*/React.createElement("path", {
31
+ className: "path-0",
32
+ d: "M21.67,20.88H14.39a1,1,0,1,0,0,2h7.28a1,1,0,0,0,0-2Z"
33
+ }), " ", /*#__PURE__*/React.createElement("path", {
34
+ className: "path-1",
35
+ d: "M9.15,20.31a1.57,1.57,0,1,0,1.57,1.57A1.57,1.57,0,0,0,9.15,20.31Z"
36
+ }), " ", /*#__PURE__*/React.createElement("path", {
37
+ className: "path-2",
38
+ d: "M21.67,13.54H14.39a1,1,0,0,0,0,2h7.28a1,1,0,0,0,0-2Z"
39
+ }), " ", /*#__PURE__*/React.createElement("path", {
40
+ className: "path-3",
41
+ d: "M9.15,13a1.57,1.57,0,1,0,1.57,1.57A1.57,1.57,0,0,0,9.15,13Z"
42
+ }), " ", /*#__PURE__*/React.createElement("path", {
43
+ className: "path-4",
44
+ d: "M29.75,10.13,21.12.34A1,1,0,0,0,20.37,0H4.11A4.11,4.11,0,0,0,0,4.11V25.88A4.12,4.12,0,0,0,4.11,30H25.89A4.12,4.12,0,0,0,30,25.88V10.79A1,1,0,0,0,29.75,10.13ZM25.89,28H4.11A2.12,2.12,0,0,1,2,25.88V4.11A2.12,2.12,0,0,1,4.11,2H19.77V7.94a3.5,3.5,0,0,0,3.5,3.5H28V25.88A2.12,2.12,0,0,1,25.89,28Z"
45
+ }), " "), " "));
46
+ }
47
+ IconComponent.propTypes = Icon.propTypes;
@@ -2,7 +2,7 @@ export { default as Audio } from './Audio';
2
2
  export { default as Code } from './Code';
3
3
  export { default as Image } from './Image';
4
4
  export { default as Pdf } from './Pdf';
5
- export { default as Txt } from './Txt';
5
+ export { default as Text } from './Text';
6
6
  export { default as Unknown } from './Unknown';
7
7
  export { default as Video } from './Video';
8
8
  export { default as Zip } from './Zip';
@@ -1,5 +1,5 @@
1
1
  /** ** Libraries *** */
2
- import React, { useMemo, Fragment } from 'react';
2
+ import React, { useMemo } from 'react';
3
3
  /** ** Hooks *** */
4
4
 
5
5
  import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
@@ -17,12 +17,16 @@ import style from './css/ArticleBubble.module.css';
17
17
  /** ** Icons *** */
18
18
 
19
19
  import ArticleIcon from '../../icons/iconSrc/common/Article';
20
+ /** ** Methods *** */
21
+
22
+ import cssJSLogic from './css/cssJSLogic';
20
23
  export default function ArticleBubble(props) {
21
24
  const {
22
25
  customStyle,
23
26
  info,
24
27
  articleDetails,
25
- onClick: propOnClick
28
+ onClick: propOnClick,
29
+ isFailed
26
30
  } = props;
27
31
  const {
28
32
  title,
@@ -41,7 +45,16 @@ export default function ArticleBubble(props) {
41
45
  const iconCustomStyle = useMemo(() => ({
42
46
  base: newStyle.articleIcon
43
47
  }), [newStyle.articleIcon]);
44
- return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Container, {
48
+ /* css classnames added based on logic */
49
+
50
+ const {
51
+ articleBubbleClass
52
+ } = cssJSLogic({
53
+ isFailed
54
+ }, newStyle);
55
+ return /*#__PURE__*/React.createElement(Box, {
56
+ className: articleBubbleClass
57
+ }, /*#__PURE__*/React.createElement(Container, {
45
58
  align: "vertical",
46
59
  alignBox: "row",
47
60
  isCover: false
@@ -1,22 +1,32 @@
1
1
  .articleWrapper {
2
2
  display: block;
3
- /* margin: 4px 0 2px; */
4
3
  padding: var(--zd_size8) var(--zd_size10) ;
5
4
  background-color: var(--imlib_chat_components_articleBubble_bg_color);
6
5
  border-radius: 3px;
7
6
  cursor: pointer;
8
7
  border: 1px solid var(--imlib_chat_components_articleBubble_border_color);
8
+ margin-top: var(--zd_size4) ;
9
+ }
10
+
11
+ .failedArticleBubbleClass .articleWrapper{
12
+ background-color: var(--imlib_chat_components_articleBubble_bg_color_failed);
13
+ border-color: var(--imlib_chat_components_articleBubble_border_color_failed);
9
14
  }
10
15
 
11
16
  .title {
12
- color: var(--imlib_chat_components_articleBubble_color);
17
+ color: var(--imlib_chat_components_articleBubble_title_color);
13
18
  font-size: var(--zd_font_size15) ;
14
19
  line-height: 1.5;
15
20
  composes: dotted from "../../css/common.module.css";
21
+ font-family: var(--zd_semibold);
22
+ }
23
+
24
+ .failedArticleBubbleClass .title{
25
+ color: var(--imlib_chat_components_articleBubble_title_color_failed);
16
26
  }
17
27
 
18
28
  .summary {
19
- color: var(--imlib_chat_components_articleBubble_color);
29
+ color: var(--imlib_chat_components_articleBubble_summary_color);
20
30
  font-size: var(--zd_font_size13) ;
21
31
  line-height: 1.5;
22
32
  max-height: var(--zd_size40) ;
@@ -27,6 +37,10 @@
27
37
  overflow: hidden;
28
38
  }
29
39
 
40
+ .failedArticleBubbleClass .summary{
41
+ color: var(--imlib_chat_components_articleBubble_summary_color_failed);
42
+ }
43
+
30
44
  .articleIcon {
31
45
  display: flex;
32
46
  flex-shrink: 0;
@@ -35,17 +49,17 @@
35
49
  }
36
50
 
37
51
  .articleIcon :global(.path-0) {
38
- /* fill: var(--imlib_chat_components_imIntegrationIcon_path0_color); */
39
- fill: rgba(200,203,220,0.7);
52
+ fill: var(--imlib_chat_components_imIntegrationIcon_path0_color);
40
53
  }
41
54
 
42
55
  .articleIcon :global(.path-1) {
43
- /* fill: var(--imlib_chat_components_imIntegrationIcon_path1_color); */
44
- fill: #000;
56
+ fill: var(--imlib_chat_components_imIntegrationIcon_path1_color);
45
57
  }
46
58
 
47
59
  .content{
48
60
  composes: dotted from "../../css/common.module.css";
61
+ font-size: var(--zd_font_size13) ;
62
+ color: var(--imlib_chat_components_articleBubble_title_color);
49
63
  }
50
64
 
51
65
  [dir=ltr] .content{
@@ -54,4 +68,8 @@
54
68
 
55
69
  [dir=rtl] .content{
56
70
  margin-right: var(--zd_size8);
71
+ }
72
+
73
+ .failedArticleBubbleClass .content{
74
+ color: var(--imlib_chat_components_articleBubble_title_color_failed);
57
75
  }
@@ -0,0 +1,12 @@
1
+ import { compileClassNames } from '@zohodesk/utils';
2
+ export default function cssJSLogic(props, style) {
3
+ const {
4
+ isFailed
5
+ } = props;
6
+ const articleBubbleClass = compileClassNames({
7
+ [style.failedArticleBubbleClass]: isFailed
8
+ });
9
+ return {
10
+ articleBubbleClass
11
+ };
12
+ }
@@ -8,6 +8,7 @@ const articleBubblePropTypes = {
8
8
  }).isRequired,
9
9
  customStyle: PropTypes.object,
10
10
  info: PropTypes.string,
11
- onClick: PropTypes.func
11
+ onClick: PropTypes.func,
12
+ isFailed: PropTypes.bool
12
13
  };
13
14
  export default articleBubblePropTypes;
@@ -9,4 +9,5 @@
9
9
  font-size: var(--imAutoMessageInfo-font_size);
10
10
  letter-spacing: var(--imAutoMessageInfo-letter_spacing);
11
11
  max-width: var(--imAutoMessageInfo-max_width);
12
+ color: var(--imlib_chat_components_imAutoMessageInfo_text_color);
12
13
  }
@@ -87,9 +87,4 @@
87
87
 
88
88
  .asapIcon {
89
89
  background-color: var(--imlib_chat_components_imIntegrationIcon_asap_color);
90
- }
91
- /* .twitterIcon {
92
- background-color: var(
93
- --imlib_chat_components_imIntegrationIcon_twitter_color
94
- );
95
- } */
90
+ }
@@ -20,6 +20,7 @@ import Message from '../../Message/Message';
20
20
  import IMMessageContent from '../IMMessageContent/IMMessageContent';
21
21
  import IMPermaLink from '../IMPermaLink/IMPermaLink';
22
22
  import IMIntegrationIcon from '../IMIntegrationIcon/IMIntegrationIcon';
23
+ import IMMessageMeta from '../IMMessageMeta/IMMessageMeta';
23
24
  /** ** Styles *** */
24
25
 
25
26
  import style from './css/IMMessage.module.css';
@@ -31,13 +32,17 @@ export default function IMMessage(props) {
31
32
  messageDisplayProps,
32
33
  actions,
33
34
  onSelectAction,
35
+ onMouseEnterAction,
34
36
  replyText,
35
37
  seeMoreText,
36
38
  deleteMessageText,
39
+ autoMessagesI18N,
40
+ autoMessagesTitleI18N,
37
41
  messageStatusI18N,
38
42
  onLoadFullMessage,
39
43
  onClickReply,
40
44
  onTicketClick,
45
+ onMessageContentClick,
41
46
  customStyle,
42
47
  customProps
43
48
  } = props;
@@ -45,7 +50,8 @@ export default function IMMessage(props) {
45
50
  messageProps = dummyObject,
46
51
  imMessageContentProps = dummyObject,
47
52
  imTicketLinkProps = dummyObject,
48
- imIntegrationIconProps = dummyObject
53
+ imIntegrationIconProps = dummyObject,
54
+ imMessageMetaProps = dummyObject
49
55
  } = customProps;
50
56
  const {
51
57
  isHighlightMessage,
@@ -65,9 +71,11 @@ export default function IMMessage(props) {
65
71
  // messageMetaType,
66
72
  // messageType,
67
73
  messageStatus,
74
+ isFailedMessage,
68
75
  isAgentMessage,
69
76
  messageStatusTitle,
70
- createdTime,
77
+ dateTimeDetails,
78
+ autoMessageType,
71
79
  // messageId,
72
80
  ticketId,
73
81
  ticketNumber,
@@ -80,18 +88,33 @@ export default function IMMessage(props) {
80
88
  });
81
89
  /** ** Render Footer *** */
82
90
 
83
- const handleRenderMessageBoxFooter = useCallback(() => isShowMessageTime ? /*#__PURE__*/React.createElement("div", null, createdTime) : null, [isShowMessageTime, createdTime]);
91
+ const handleRenderMessageBoxFooter = useCallback(() => {
92
+ const {
93
+ displayDateTime,
94
+ tooltip
95
+ } = dateTimeDetails || {};
96
+ return /*#__PURE__*/React.createElement(IMMessageMeta, _extends({
97
+ autoMessagesI18N: autoMessagesI18N,
98
+ autoMessagesTitleI18N: autoMessagesTitleI18N,
99
+ autoMessageType: autoMessageType,
100
+ direction: direction,
101
+ time: isShowMessageTime ? displayDateTime : '',
102
+ timeTooltip: tooltip
103
+ }, imMessageMetaProps));
104
+ }, [isShowMessageTime, dateTimeDetails, direction, autoMessageType, imMessageMetaProps, autoMessagesI18N, autoMessagesTitleI18N]);
84
105
  /** ** Render Message Content *** */
85
106
 
86
107
  const handleRenderMessage = useCallback(() => /*#__PURE__*/React.createElement(IMMessageContent, _extends({
87
108
  deleteMessageText: deleteMessageText,
109
+ isFailed: isFailedMessage,
88
110
  messageDetails: messageDetails,
111
+ onClick: onMessageContentClick,
89
112
  onClickReply: onClickReply,
90
113
  onLoadFullMessage: onLoadFullMessage,
91
114
  replyText: replyText,
92
115
  seeMoreText: seeMoreText,
93
116
  sessionDetails: sessionDetails
94
- }, imMessageContentProps)), [seeMoreText, replyText, deleteMessageText, messageDetails, sessionDetails, onLoadFullMessage, onClickReply, imMessageContentProps]);
117
+ }, imMessageContentProps)), [seeMoreText, replyText, deleteMessageText, messageDetails, sessionDetails, onMessageContentClick, onLoadFullMessage, onClickReply, isFailedMessage, imMessageContentProps]);
95
118
  /** ** Render Secondary Actions - TicketId *** */
96
119
 
97
120
  const handleRenderSecondaryActions = useCallback(() => {
@@ -143,6 +166,7 @@ export default function IMMessage(props) {
143
166
  isActive: isHighlightMessage,
144
167
  isShowSender: isShowSender,
145
168
  needSender: needSender,
169
+ onMouseEnterAction: onMouseEnterAction,
146
170
  onSelectAction: onSelectAction,
147
171
  ownerDetails: ownerDetails,
148
172
  renderContent: handleRenderMessage,
@@ -4,6 +4,13 @@ import PropTypes from 'prop-types';
4
4
 
5
5
  import { defaultMessageActions } from '@zohoim/chat-components-utils/es/constants/messageActionConstants';
6
6
  import messageStatusConstants from '@zohoim/chat-components-utils/es/constants/messageStatusConstants';
7
+ import autoMessageTypes from '@zohoim/chat-components-utils/es/imUtils/constants/autoMessageTypes';
8
+ const {
9
+ WELCOMEMSG,
10
+ WORKFLOW_MESSAGE,
11
+ WORKFLOW_NOTIFICATION,
12
+ UN_SUPPORTED_FILE
13
+ } = autoMessageTypes;
7
14
  const {
8
15
  SENT,
9
16
  SAVED,
@@ -26,7 +33,10 @@ const imMessagePropTypes = {
26
33
  }),
27
34
  attachment: PropTypes.string,
28
35
  contentType: PropTypes.string,
29
- createdTime: PropTypes.string,
36
+ dateTimeDetails: PropTypes.shape({
37
+ displayDateTime: PropTypes.string,
38
+ tooltip: PropTypes.string
39
+ }),
30
40
  direction: PropTypes.string,
31
41
  id: PropTypes.string,
32
42
  isCustomMessage: PropTypes.bool,
@@ -65,6 +75,18 @@ const imMessagePropTypes = {
65
75
  [SENT]: PropTypes.string,
66
76
  [UNSENT]: PropTypes.string
67
77
  }),
78
+ autoMessagesI18N: PropTypes.shape({
79
+ [UN_SUPPORTED_FILE]: PropTypes.string,
80
+ [WELCOMEMSG]: PropTypes.string,
81
+ [WORKFLOW_MESSAGE]: PropTypes.string,
82
+ [WORKFLOW_NOTIFICATION]: PropTypes.string
83
+ }),
84
+ autoMessagesTitleI18N: PropTypes.shape({
85
+ [UN_SUPPORTED_FILE]: PropTypes.string,
86
+ [WELCOMEMSG]: PropTypes.string,
87
+ [WORKFLOW_MESSAGE]: PropTypes.string,
88
+ [WORKFLOW_NOTIFICATION]: PropTypes.string
89
+ }),
68
90
  actions: PropTypes.arrayOf(PropTypes.shape({
69
91
  displayText: PropTypes.string.isRequired,
70
92
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf(Object.values(defaultMessageActions))]).isRequired,
@@ -73,12 +95,14 @@ const imMessagePropTypes = {
73
95
  renderFunction: PropTypes.func
74
96
  })),
75
97
  onSelectAction: PropTypes.func,
98
+ onMouseEnterAction: PropTypes.func,
76
99
  replyText: PropTypes.string,
77
100
  seeMoreText: PropTypes.string,
78
101
  deleteMessageText: PropTypes.string,
79
102
  onLoadFullMessage: PropTypes.func,
80
103
  onClickReply: PropTypes.func,
81
104
  onTicketClick: PropTypes.func,
105
+ onMessageContentClick: PropTypes.func,
82
106
  customStyle: PropTypes.object,
83
107
  customProps: PropTypes.shape({
84
108
  imIntegrationIconProps: PropTypes.object,
@@ -3,19 +3,16 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
3
3
  /* eslint-disable react/jsx-indent */
4
4
 
5
5
  /** ** Libraries *** */
6
- import React, { useMemo, Fragment } from 'react';
6
+ import React, { Fragment } from 'react';
7
7
  /** ** Hooks *** */
8
8
 
9
9
  import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
10
+ import useIMMessageContent from '@zohoim/chat-components-hooks/es/im/IMMessageContent/useIMMessageContent';
10
11
  /** ** Constants *** */
11
12
 
12
13
  import imMessageContentDefaultProps from './props/defaultProps';
13
14
  import imMessageContentPropTypes from './props/propTypes';
14
15
  import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
15
- /** ** Methods *** */
16
-
17
- import getIsShowBubble from '@zohoim/chat-components-utils/es/imUtils/getIsShowBubble';
18
- import getMessageBubbleDetails from '@zohoim/chat-components-utils/es/imUtils/getMessageBubbleDetails';
19
16
  /** ** Styles *** */
20
17
 
21
18
  import style from './css/IMMessageContent.module.css';
@@ -39,7 +36,9 @@ export default function IMMessageContent(props) {
39
36
  deleteMessageText,
40
37
  customStyle,
41
38
  customProps,
42
- renderCustomMessage
39
+ renderCustomMessage,
40
+ onClick: propOnClick,
41
+ isFailed
43
42
  } = props;
44
43
  const {
45
44
  imReplyBubbleProps = dummyObject,
@@ -60,51 +59,49 @@ export default function IMMessageContent(props) {
60
59
  isShowLocationBubble,
61
60
  isShowTextBubble,
62
61
  isShowCustomBubble,
63
- isShowDeleteBubble
64
- } = useMemo(() => getIsShowBubble({
65
- messageDetails
66
- }), [messageDetails]);
62
+ isShowDeleteBubble,
63
+ replyToMessageDetails: replyToMessage,
64
+ attachmentDetails,
65
+ locationUrl,
66
+ onClick
67
+ } = useIMMessageContent({
68
+ messageDetails,
69
+ onClick: propOnClick
70
+ });
67
71
  /* External CSS Customization */
68
72
 
69
73
  const newStyle = useMergeStyle(style, customStyle);
70
- const {
71
- replyToMessageDetails: replyToMessage,
72
- attachmentDetails,
73
- locationUrl
74
- } = useMemo(() => getMessageBubbleDetails({
75
- messageDetails
76
- }), [messageDetails]);
77
- return /*#__PURE__*/React.createElement(Fragment, null, isShowLayoutBubble ? null : null, isShowDeleteBubble ? /*#__PURE__*/React.createElement("div", null, deleteMessageText) : null, isShowReplyBubble ? /*#__PURE__*/React.createElement("div", {
78
- className: newStyle.messageContentRow
79
- }, /*#__PURE__*/React.createElement(IMReplyBubble, _extends({
74
+ const wrapperDivProps = {
75
+ className: newStyle.messageContentRow,
76
+ onClick
77
+ };
78
+ return /*#__PURE__*/React.createElement(Fragment, null, isShowLayoutBubble ? null : null, isShowDeleteBubble ? /*#__PURE__*/React.createElement("div", {
79
+ className: newStyle.deleteBubble
80
+ }, deleteMessageText) : null, isShowReplyBubble ? /*#__PURE__*/React.createElement("div", wrapperDivProps, /*#__PURE__*/React.createElement(IMReplyBubble, _extends({
81
+ isFailed: isFailed,
80
82
  messageDetails: replyToMessage,
81
83
  onClick: onClickReply,
82
84
  replyText: replyText
83
85
  }, imReplyBubbleProps))) : null, isShowCustomBubble ? renderCustomMessage({
84
- messageDetails
85
- }) : null, isShowImageBubble ? /*#__PURE__*/React.createElement("div", {
86
- className: newStyle.messageContentRow
87
- }, /*#__PURE__*/React.createElement(ImageBubble, _extends({
88
- imageDetails: attachmentDetails
89
- }, imageBubbleProps))) : null, isShowVideoBubble ? /*#__PURE__*/React.createElement("div", {
90
- className: newStyle.messageContentRow
91
- }, /*#__PURE__*/React.createElement(VideoBubble, _extends({
86
+ messageDetails,
87
+ isFailed
88
+ }) : null, isShowImageBubble ? /*#__PURE__*/React.createElement("div", wrapperDivProps, /*#__PURE__*/React.createElement(ImageBubble, _extends({
89
+ imageDetails: attachmentDetails,
90
+ isFailed: isFailed
91
+ }, imageBubbleProps))) : null, isShowVideoBubble ? /*#__PURE__*/React.createElement("div", wrapperDivProps, /*#__PURE__*/React.createElement(VideoBubble, _extends({
92
+ isFailed: isFailed,
92
93
  videoDetails: attachmentDetails
93
- }, videoBubbleProps))) : null, isShowAudioBubble ? /*#__PURE__*/React.createElement("div", {
94
- className: newStyle.messageContentRow
95
- }, /*#__PURE__*/React.createElement(AudioBubble, _extends({
96
- audioDetails: attachmentDetails
97
- }, audioBubbleProps))) : null, isShowAttachmentBubble ? /*#__PURE__*/React.createElement("div", {
98
- className: newStyle.messageContentRow
99
- }, /*#__PURE__*/React.createElement(AttachmentBubble, _extends({
100
- attachmentDetails: attachmentDetails
101
- }, attachmentBubbleProps))) : null, isShowLocationBubble ? /*#__PURE__*/React.createElement("div", {
102
- className: newStyle.messageContentRow
103
- }, /*#__PURE__*/React.createElement(LocationBubble, _extends({
94
+ }, videoBubbleProps))) : null, isShowAudioBubble ? /*#__PURE__*/React.createElement("div", wrapperDivProps, /*#__PURE__*/React.createElement(AudioBubble, _extends({
95
+ audioDetails: attachmentDetails,
96
+ isFailed: isFailed
97
+ }, audioBubbleProps))) : null, isShowAttachmentBubble ? /*#__PURE__*/React.createElement("div", wrapperDivProps, /*#__PURE__*/React.createElement(AttachmentBubble, _extends({
98
+ attachmentDetails: attachmentDetails,
99
+ isFailed: isFailed
100
+ }, attachmentBubbleProps))) : null, isShowLocationBubble ? /*#__PURE__*/React.createElement("div", wrapperDivProps, /*#__PURE__*/React.createElement(LocationBubble, _extends({
101
+ isFailed: isFailed,
104
102
  locationUrl: locationUrl
105
- }, locationBubbleProps))) : null, isShowTextBubble ? /*#__PURE__*/React.createElement("div", {
106
- className: newStyle.messageContentRow
107
- }, /*#__PURE__*/React.createElement(IMTextBubble, _extends({
103
+ }, locationBubbleProps))) : null, isShowTextBubble ? /*#__PURE__*/React.createElement("div", wrapperDivProps, /*#__PURE__*/React.createElement(IMTextBubble, _extends({
104
+ isFailed: isFailed,
108
105
  messageDetails: messageDetails,
109
106
  moreText: seeMoreText,
110
107
  onLoadFullMessage: onLoadFullMessage,
@@ -1,3 +1,7 @@
1
- .messageContentRow + .messageContentRow{
1
+ .messageContentRow + .messageContentRow {
2
2
  margin-top: var(--zd_size5) ;
3
- }
3
+ }
4
+
5
+ .deleteBubble {
6
+ font-style: italic;
7
+ }
@@ -5,7 +5,10 @@ const imMessageContentPropTypes = {
5
5
  displayMessage: PropTypes.string.isRequired,
6
6
  attachment: PropTypes.string,
7
7
  contentType: PropTypes.string,
8
- createdTime: PropTypes.string,
8
+ dateTimeDetails: PropTypes.shape({
9
+ displayDateTime: PropTypes.string,
10
+ tooltip: PropTypes.string
11
+ }),
9
12
  direction: PropTypes.string,
10
13
  fullMessage: PropTypes.string,
11
14
  id: PropTypes.string,
@@ -23,6 +26,7 @@ const imMessageContentPropTypes = {
23
26
  sessionDetails: PropTypes.shape({
24
27
  id: PropTypes.string
25
28
  }),
29
+ onClick: PropTypes.func,
26
30
  onLoadFullMessage: PropTypes.func,
27
31
  onClickReply: PropTypes.func,
28
32
  seeMoreText: PropTypes.string,
@@ -38,6 +42,7 @@ const imMessageContentPropTypes = {
38
42
  imageBubbleProps: PropTypes.object,
39
43
  locationBubbleProps: PropTypes.object,
40
44
  videoBubbleProps: PropTypes.object
41
- })
45
+ }),
46
+ isFailed: PropTypes.bool
42
47
  };
43
48
  export default imMessageContentPropTypes;
@@ -45,19 +45,19 @@ export default function IMMessageMeta(props) {
45
45
  } = cssJSLogic({
46
46
  direction
47
47
  }, newStyle);
48
- return /*#__PURE__*/React.createElement(Container, {
48
+ return /*#__PURE__*/React.createElement(React.Fragment, null, autoMessageType || time ? /*#__PURE__*/React.createElement(Container, {
49
49
  alignBox: "row",
50
50
  className: imMessageMetaClass
51
- }, /*#__PURE__*/React.createElement("div", {
52
- className: newStyle.dateTime,
53
- "data-title": timeTooltip
54
- }, time), autoMessageType ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
55
- className: dotClass
56
- }, "\u22C5"), /*#__PURE__*/React.createElement(IMAutoMessageInfo, _extends({
51
+ }, autoMessageType ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(IMAutoMessageInfo, _extends({
57
52
  autoMessagesI18N: autoMessagesI18N,
58
53
  autoMessagesTitleI18N: autoMessagesTitleI18N,
59
54
  autoMessageType: autoMessageType
60
- }, imAutoMessageInfoProps))) : null);
55
+ }, imAutoMessageInfoProps))) : null, time ? /*#__PURE__*/React.createElement(React.Fragment, null, autoMessageType ? /*#__PURE__*/React.createElement("div", {
56
+ className: dotClass
57
+ }, "\u22C5") : null, /*#__PURE__*/React.createElement("div", {
58
+ className: newStyle.dateTime,
59
+ "data-title": timeTooltip
60
+ }, time)) : null) : null);
61
61
  }
62
62
  IMMessageMeta.propTypes = imMessageMetaPropTypes;
63
63
  IMMessageMeta.defaultProps = imMessageMetaDefaultProps;
@@ -37,5 +37,5 @@
37
37
  /* display: flex; */
38
38
  max-width: var(--zd_size100) ;
39
39
  composes: dotted from "../../css/common.module.css";
40
- color: var(--imlib_chat_components_imMessageMeta_timeColor);
40
+ color: var(--imlib_chat_components_imMessageMeta_time_color);
41
41
  }
@@ -3,8 +3,8 @@ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyCon
3
3
  import { direction as directionConstants } from '@zohoim/chat-components-utils/es/constants/messageConstants';
4
4
  const imMessageMetaDefaultProps = {
5
5
  customStyle: dummyObject,
6
+ customProps: dummyObject,
6
7
  autoMessageCustomStyle: dummyObject,
7
- timeCustomStyle: dummyObject,
8
8
  direction: directionConstants.IN
9
9
  };
10
10
  export default imMessageMetaDefaultProps;
@@ -1,5 +1,5 @@
1
1
  .text {
2
- color: var(--imlib_chat_components_imPermaLink_color);
2
+ color: var(--imlib_chat_components_imPermaLink_url_color);
3
3
  display: block;
4
4
  composes: dotted from '../../css/common.module.css';
5
5
  cursor: pointer;
@@ -18,7 +18,8 @@ export default function IMReplyBubble(props) {
18
18
  replyText,
19
19
  messageDetails,
20
20
  customProps,
21
- onClick: propOnClick
21
+ onClick: propOnClick,
22
+ isFailed
22
23
  } = props;
23
24
  const {
24
25
  replyBubbleProps = dummyObject
@@ -26,8 +27,9 @@ export default function IMReplyBubble(props) {
26
27
  const {
27
28
  message,
28
29
  senderName,
29
- time,
30
+ dateTimeDetails,
30
31
  attachmentDetails,
32
+ locationUrl,
31
33
  onClick
32
34
  } = useIMReplyBubble({
33
35
  messageDetails,
@@ -35,12 +37,15 @@ export default function IMReplyBubble(props) {
35
37
  });
36
38
  return /*#__PURE__*/React.createElement(ReplyBubble, _extends({
37
39
  attachmentDetails: attachmentDetails,
40
+ dateTimeDetails: dateTimeDetails,
41
+ locationUrl: locationUrl,
38
42
  message: message,
39
43
  onClick: onClick,
40
44
  replyText: replyText,
41
- senderName: senderName,
42
- time: time
43
- }, replyBubbleProps));
45
+ senderName: senderName
46
+ }, replyBubbleProps, {
47
+ isFailed: isFailed
48
+ }));
44
49
  }
45
50
  IMReplyBubble.propTypes = imReplyBubblePropTypes;
46
51
  IMReplyBubble.defaultProps = imReplyBubbleDefaultProps;
@@ -13,12 +13,17 @@ const imReplyBubblePropTypes = {
13
13
  type: PropTypes.string,
14
14
  url: PropTypes.string
15
15
  }),
16
- createdTime: PropTypes.string
16
+ dateTimeDetails: PropTypes.shape({
17
+ displayDateTime: PropTypes.string,
18
+ tooltip: PropTypes.string
19
+ }),
20
+ locationUrl: PropTypes.string
17
21
  }).isRequired,
18
22
  onClick: PropTypes.func.isRequired,
19
23
  replyText: PropTypes.string.isRequired,
20
24
  customProps: PropTypes.shape({
21
25
  replyBubbleProps: PropTypes.object
22
- })
26
+ }),
27
+ isFailed: PropTypes.bool
23
28
  };
24
29
  export default imReplyBubblePropTypes;