@zohoim/chat-components 1.0.9-alpha.0 → 1.0.9-beta.10

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 (165) hide show
  1. package/README.md +2 -2
  2. package/es/ActionIcon/ActionIcon.js +3 -1
  3. package/es/ActionIcon/props/propTypes.js +2 -1
  4. package/es/ActionIconWrapper/ActionIconWrapper.js +6 -3
  5. package/es/ActionIconWrapper/css/ActionIconWrapper.module.css +1 -1
  6. package/es/ActionIconWrapper/css/cssJSLogic.js +4 -2
  7. package/es/ActionIconWrapper/props/propTypes.js +2 -1
  8. package/es/AttachmentHandler/AttachmentHandler.js +84 -0
  9. package/es/AttachmentHandler/css/AttachmentHandler.module.css +27 -0
  10. package/es/AttachmentHandler/index.js +1 -0
  11. package/es/AttachmentHandler/props/defaultProps.js +10 -0
  12. package/es/AttachmentHandler/props/propTypes.js +17 -0
  13. package/es/AttachmentPreview/AttachmentPreview.js +121 -0
  14. package/es/AttachmentPreview/css/AttachmentPreview.module.css +39 -0
  15. package/es/AttachmentPreview/index.js +1 -0
  16. package/es/AttachmentPreview/props/defaultProps.js +9 -0
  17. package/es/AttachmentPreview/props/propTypes.js +33 -0
  18. package/es/AttachmentPreviewBody/AttachmentPreviewBody.js +97 -0
  19. package/es/AttachmentPreviewBody/css/AttachmentPreviewBody.module.css +75 -0
  20. package/es/AttachmentPreviewBody/index.js +1 -0
  21. package/es/AttachmentPreviewBody/props/defaultProps.js +7 -0
  22. package/es/AttachmentPreviewBody/props/propTypes.js +20 -0
  23. package/es/AttachmentPreviewHeader/AttachmentPreviewHeader.js +84 -0
  24. package/es/AttachmentPreviewHeader/css/AttachmentPreviewHeader.module.css +47 -0
  25. package/es/AttachmentPreviewHeader/index.js +1 -0
  26. package/es/AttachmentPreviewHeader/props/defaultProps.js +7 -0
  27. package/es/AttachmentPreviewHeader/props/propTypes.js +16 -0
  28. package/es/Emoji/Emoji.js +72 -0
  29. package/es/Emoji/css/Emoji.module.css +48 -0
  30. package/es/Emoji/css/cssJSLogic.js +18 -0
  31. package/es/Emoji/index.js +1 -0
  32. package/es/Emoji/props/defaultProps.js +8 -0
  33. package/es/Emoji/props/propTypes.js +16 -0
  34. package/es/EmojiPopup/EmojiPopup.js +115 -0
  35. package/es/EmojiPopup/css/EmojiPopup.module.css +55 -0
  36. package/es/EmojiPopup/index.js +1 -0
  37. package/es/EmojiPopup/props/defaultProps.js +11 -0
  38. package/es/EmojiPopup/props/propTypes.js +21 -0
  39. package/es/Emojis/Emojis.js +81 -0
  40. package/es/Emojis/index.js +1 -0
  41. package/es/Emojis/props/defaultProps.js +10 -0
  42. package/es/Emojis/props/propTypes.js +20 -0
  43. package/es/EmojisEmptyState/EmojisEmptyState.js +50 -0
  44. package/es/EmojisEmptyState/css/EmojisEmptyState.module.css +18 -0
  45. package/es/EmojisEmptyState/index.js +1 -0
  46. package/es/EmojisEmptyState/props/defaultProps.js +9 -0
  47. package/es/EmojisEmptyState/props/propTypes.js +8 -0
  48. package/es/EmojisFooter/EmojisFooter.js +71 -0
  49. package/es/EmojisFooter/css/EmojisFooter.module.css +40 -0
  50. package/es/EmojisFooter/index.js +1 -0
  51. package/es/EmojisFooter/props/defaultProps.js +7 -0
  52. package/es/EmojisFooter/props/propTypes.js +12 -0
  53. package/es/EmojisHeader/EmojisHeader.js +65 -0
  54. package/es/EmojisHeader/css/EmojisHeader.module.css +36 -0
  55. package/es/EmojisHeader/index.js +1 -0
  56. package/es/EmojisHeader/props/defaultProps.js +8 -0
  57. package/es/EmojisHeader/props/propTypes.js +13 -0
  58. package/es/EmojisList/EmojisList.js +130 -0
  59. package/es/EmojisList/css/EmojisList.module.css +50 -0
  60. package/es/EmojisList/css/cssJSLogic.js +25 -0
  61. package/es/EmojisList/index.js +1 -0
  62. package/es/EmojisList/props/defaultProps.js +10 -0
  63. package/es/EmojisList/props/propTypes.js +20 -0
  64. package/es/MessageAction/MessageAction.js +2 -0
  65. package/es/MessageAction/props/propTypes.js +2 -1
  66. package/es/MessageActions/MessageActions.js +2 -1
  67. package/es/MessageActionsMore/MessageActionsMore.js +6 -4
  68. package/es/MessageActionsMore/css/MessageActionsMore.module.css +1 -0
  69. package/es/MessageActionsMore/props/propTypes.js +5 -2
  70. package/es/MessageActionsWrapper/MessageActionsWrapper.js +2 -1
  71. package/es/MessageActionsWrapper/css/MessageActionsWrapper.module.css +4 -0
  72. package/es/Theme/ThemeAssets.js +2 -20
  73. package/es/Theme/ThemeWrapper.js +25 -14
  74. package/es/Theme/TooltipWrapper.js +1 -1
  75. package/es/Theme/props/defaultProps.js +2 -1
  76. package/es/Theme/props/propTypes.js +2 -1
  77. package/es/Theme/themeVariables/commonThemeColorVariable.js +17 -0
  78. package/es/Theme/themeVariables/dark/blueTheme.js +133 -0
  79. package/es/Theme/themeVariables/dark/commonColorVariable.js +35 -0
  80. package/es/Theme/themeVariables/dark/greenTheme.js +132 -0
  81. package/es/Theme/themeVariables/dark/orangeTheme.js +132 -0
  82. package/es/Theme/themeVariables/dark/redTheme.js +132 -0
  83. package/es/Theme/themeVariables/dark/yellowTheme.js +132 -0
  84. package/es/Theme/themeVariables/light/blueTheme.js +135 -0
  85. package/es/Theme/themeVariables/light/commonColorVariable.js +54 -0
  86. package/es/Theme/themeVariables/light/greenTheme.js +131 -0
  87. package/es/Theme/themeVariables/light/orangeTheme.js +131 -0
  88. package/es/Theme/themeVariables/light/redTheme.js +131 -0
  89. package/es/Theme/themeVariables/light/yellowTheme.js +131 -0
  90. package/es/Theme/themeVariables/pureDark/blueTheme.js +132 -0
  91. package/es/Theme/themeVariables/pureDark/commonColorVariable.js +37 -0
  92. package/es/Theme/themeVariables/pureDark/greenTheme.js +132 -0
  93. package/es/Theme/themeVariables/pureDark/orangeTheme.js +132 -0
  94. package/es/Theme/themeVariables/pureDark/redTheme.js +132 -0
  95. package/es/Theme/themeVariables/pureDark/yellowTheme.js +132 -0
  96. package/es/Theme/utils/getThemeConfigurations.js +56 -2
  97. package/es/constants/index.js +8 -1
  98. package/es/constants/propConstants/editorPropConstants.js +3 -0
  99. package/es/constants/propConstants/popupPropConstants.js +2 -0
  100. package/es/im/IMAttachmentHandler/IMAttachmentHandler.js +50 -0
  101. package/es/im/IMAttachmentHandler/index.js +1 -0
  102. package/es/im/IMAttachmentHandler/props/defaultProps.js +10 -0
  103. package/es/im/IMAttachmentHandler/props/propTypes.js +28 -0
  104. package/es/im/IMIntegrationIcon/css/IMIntegrationIcon.module.css +2 -2
  105. package/es/im/ReplyComposer/ReplyComposer.js +153 -0
  106. package/es/im/ReplyComposer/css/ReplyComposer.module.css +10 -0
  107. package/es/im/ReplyComposer/css/cssJSLogic.js +13 -0
  108. package/es/im/ReplyComposer/index.js +1 -0
  109. package/es/im/ReplyComposer/props/defaultProps.js +7 -0
  110. package/es/im/ReplyComposer/props/propTypes.js +60 -0
  111. package/es/im/ReplyComposerFooter/ReplyComposerFooter.js +41 -0
  112. package/es/im/ReplyComposerFooter/css/ReplyComposerFooter.module.css +10 -0
  113. package/es/im/ReplyComposerFooter/index.js +1 -0
  114. package/es/im/ReplyComposerFooter/props/defaultProps.js +8 -0
  115. package/es/im/ReplyComposerFooter/props/propTypes.js +17 -0
  116. package/es/im/ReplyEditor/ReplyEditor.js +103 -0
  117. package/es/im/ReplyEditor/css/ReplyEditor.module.css +50 -0
  118. package/es/im/ReplyEditor/css/cssJSLogic.js +10 -0
  119. package/es/im/ReplyEditor/index.js +1 -0
  120. package/es/im/ReplyEditor/props/defaultProps.js +8 -0
  121. package/es/im/ReplyEditor/props/propTypes.js +27 -0
  122. package/es/im/ReplyEditorExtensions/ReplyEditorExtensions.js +149 -0
  123. package/es/im/ReplyEditorExtensions/css/ReplyEditorExtensions.module.css +5 -0
  124. package/es/im/ReplyEditorExtensions/index.js +1 -0
  125. package/es/im/ReplyEditorExtensions/props/defaultProps.js +6 -0
  126. package/es/im/ReplyEditorExtensions/props/propTypes.js +16 -0
  127. package/es/im/ReplyEditorSuggestions/ReplyEditorSuggestions.js +95 -0
  128. package/es/im/ReplyEditorSuggestions/css/ReplyEditorSuggestions.module.css +8 -0
  129. package/es/im/ReplyEditorSuggestions/index.js +1 -0
  130. package/es/im/ReplyEditorSuggestions/props/defaultProps.js +6 -0
  131. package/es/im/ReplyEditorSuggestions/props/propTypes.js +21 -0
  132. package/es/im/ReplyEditorSuggestionsPopup/ReplyEditorSuggestionsPopup.js +93 -0
  133. package/es/im/ReplyEditorSuggestionsPopup/css/ReplyEditorSuggestionsPopup.module.css +7 -0
  134. package/es/im/ReplyEditorSuggestionsPopup/index.js +1 -0
  135. package/es/im/ReplyEditorSuggestionsPopup/props/defaultProps.js +10 -0
  136. package/es/im/ReplyEditorSuggestionsPopup/props/propTypes.js +21 -0
  137. package/es/im/index.js +8 -1
  138. package/es/index.js +13 -2
  139. package/es/rte/Editor/Editor.js +80 -0
  140. package/es/rte/Editor/css/Editor.module.css +17 -0
  141. package/es/rte/Editor/index.js +1 -0
  142. package/es/rte/Editor/props/defaultProps.js +21 -0
  143. package/es/rte/Editor/props/propTypes.js +52 -0
  144. package/es/rte/index.js +1 -0
  145. package/package.json +14 -21
  146. package/assets/Appearance/dark/mode/General_DarkMode.module.css +0 -71
  147. package/assets/Appearance/dark/themes/blue/blue_General_DarkTheme.module.css +0 -35
  148. package/assets/Appearance/dark/themes/green/green_General_DarkTheme.module.css +0 -35
  149. package/assets/Appearance/dark/themes/orange/orange_General_DarkTheme.module.css +0 -35
  150. package/assets/Appearance/dark/themes/red/red_General_DarkTheme.module.css +0 -35
  151. package/assets/Appearance/dark/themes/yellow/yellow_General_DarkTheme.module.css +0 -35
  152. package/assets/Appearance/light/mode/General_LightMode.module.css +0 -71
  153. package/assets/Appearance/light/themes/blue/blue_General_LightTheme.module.css +0 -35
  154. package/assets/Appearance/light/themes/green/green_General_LightTheme.module.css +0 -35
  155. package/assets/Appearance/light/themes/orange/orange_General_LightTheme.module.css +0 -35
  156. package/assets/Appearance/light/themes/red/red_General_LightTheme.module.css +0 -35
  157. package/assets/Appearance/light/themes/yellow/yellow_General_LightTheme.module.css +0 -35
  158. package/assets/Appearance/pureDark/mode/General_PureDarkMode.module.css +0 -71
  159. package/assets/Appearance/pureDark/themes/blue/blue_General_PureDarkTheme.module.css +0 -35
  160. package/assets/Appearance/pureDark/themes/green/green_General_PureDarkTheme.module.css +0 -35
  161. package/assets/Appearance/pureDark/themes/orange/orange_General_PureDarkTheme.module.css +0 -35
  162. package/assets/Appearance/pureDark/themes/red/red_General_PureDarkTheme.module.css +0 -35
  163. package/assets/Appearance/pureDark/themes/yellow/yellow_General_PureDarkTheme.module.css +0 -35
  164. package/es/Theme/constants/index.js +0 -41
  165. package/lib/index.js +0 -382
package/README.md CHANGED
@@ -10,9 +10,9 @@ In this Library, We Provide Some Basic Message Components to Build Your Chat App
10
10
 
11
11
  > import MessageBubble from '@zohoim/chat-components/es/MessageBubble/MessageBubble’;
12
12
 
13
- # 1.0.7
13
+ # 1.0.9
14
14
 
15
- - Color preprocessor and contrast added
15
+ - chat bubble ui issues fixes
16
16
  - @zohodesk/components version update
17
17
 
18
18
  # 1.0.6
@@ -41,7 +41,8 @@ export default function ActionIcon(props) {
41
41
  id,
42
42
  title,
43
43
  isDisabled,
44
- needIconOnly
44
+ needIconOnly,
45
+ isActive
45
46
  } = props;
46
47
  const {
47
48
  actionIconWrapperProps = dummyObject
@@ -68,6 +69,7 @@ export default function ActionIcon(props) {
68
69
  }, [iconStyle, id]);
69
70
  return needIconOnly ? renderIcon() : /*#__PURE__*/React.createElement(ActionIconWrapper, {
70
71
  id: id,
72
+ isActive: isActive,
71
73
  isDisabled: isDisabled,
72
74
  onClick: onClick,
73
75
  onMouseEnter: onMouseEnter,
@@ -12,6 +12,7 @@ const actionIconPropTypes = {
12
12
  customStyle: PropTypes.object,
13
13
  isDisabled: PropTypes.bool,
14
14
  needIconOnly: PropTypes.bool,
15
- title: PropTypes.string
15
+ title: PropTypes.string,
16
+ isActive: PropTypes.bool
16
17
  };
17
18
  export default actionIconPropTypes;
@@ -23,7 +23,8 @@ export default function ActionIconWrapper(props) {
23
23
  onMouseEnter: propOnMouseEnter,
24
24
  id,
25
25
  title,
26
- isDisabled
26
+ isDisabled,
27
+ isActive
27
28
  } = props;
28
29
  const {
29
30
  onClick,
@@ -32,7 +33,8 @@ export default function ActionIconWrapper(props) {
32
33
  onClick: propOnClick,
33
34
  onMouseEnter: propOnMouseEnter,
34
35
  id,
35
- isDisabled
36
+ isDisabled,
37
+ isActive
36
38
  });
37
39
  /* External CSS Customization */
38
40
 
@@ -42,7 +44,8 @@ export default function ActionIconWrapper(props) {
42
44
  const {
43
45
  actionIconWrapperClass
44
46
  } = cssJSLogic({
45
- isDisabled
47
+ isDisabled,
48
+ isActive
46
49
  }, newStyle);
47
50
  /* Render Icon */
48
51
 
@@ -21,7 +21,7 @@
21
21
  border-radius: var(--actionIconWrapper-border_radius);
22
22
  }
23
23
 
24
- .actionIconWrapper:hover {
24
+ .actionIconWrapper:hover, .actionIconWrapperActive{
25
25
  background-color: var(--imlib_chat_components_actionIconWrapper_bg_color);
26
26
  border-color: var(--imlib_chat_components_actionIconWrapper_border_color);
27
27
  }
@@ -2,11 +2,13 @@
2
2
  import { compileClassNames } from '@zohodesk/utils';
3
3
  export default function cssJSLogic(props, style) {
4
4
  const {
5
- isDisabled
5
+ isDisabled,
6
+ isActive
6
7
  } = props;
7
8
  const actionIconWrapperClass = compileClassNames({
8
9
  [style.actionIconWrapper]: true,
9
- [style.disabled]: isDisabled
10
+ [style.disabled]: isDisabled,
11
+ [style.actionIconWrapperActive]: isActive
10
12
  });
11
13
  return {
12
14
  actionIconWrapperClass
@@ -7,6 +7,7 @@ const actionIconWrapperPropTypes = {
7
7
  renderIcon: PropTypes.func.isRequired,
8
8
  customStyle: PropTypes.object,
9
9
  isDisabled: PropTypes.bool,
10
- title: PropTypes.string
10
+ title: PropTypes.string,
11
+ isActive: PropTypes.bool
11
12
  };
12
13
  export default actionIconWrapperPropTypes;
@@ -0,0 +1,84 @@
1
+ /** ** Libraries *** */
2
+ import React, { useMemo } from 'react';
3
+ /** ** Component *** */
4
+
5
+ import IconButton from '@zohodesk/dot/es/IconButton/IconButton';
6
+ import { Container } from '@zohodesk/components/es/Layout';
7
+ /** ** Hooks *** */
8
+
9
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
10
+ import useAttachmentHandler from '@zohoim/chat-components-hooks/es/AttachmentHandler/useAttachmentHandler';
11
+ /** ** Constants *** */
12
+
13
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
14
+ import attachmentHandlerDefaultProps from "./props/defaultProps";
15
+ import attachmentHandlerPropTypes from "./props/propTypes";
16
+ /** ** Methods *** */
17
+
18
+ import renderHandler from '@zohoim/chat-components-utils/es/common/renderHandler';
19
+ /** ** Styles *** */
20
+
21
+ import style from "./css/AttachmentHandler.module.css";
22
+ export default function AttachmentHandler(props) {
23
+ const {
24
+ customStyle,
25
+ iconName,
26
+ iconSize,
27
+ iconTitle,
28
+ renderCustomIcon,
29
+ getRef: propGetRef,
30
+ supportedFileTypes,
31
+ isMultiAttachment,
32
+ onAttach: propOnAttach,
33
+ customProps = dummyObject
34
+ } = props;
35
+ const {
36
+ inputProps = dummyObject
37
+ } = customProps;
38
+ const {
39
+ onAttach,
40
+ onAttachmentClick,
41
+ getRef
42
+ } = useAttachmentHandler({
43
+ onAttach: propOnAttach,
44
+ getRef: propGetRef
45
+ });
46
+ /* External customization */
47
+
48
+ const newStyle = useMergeStyle(style, customStyle);
49
+ const inputEl = useMemo(() => /*#__PURE__*/React.createElement("input", {
50
+ ref: getRef,
51
+ accept: supportedFileTypes,
52
+ hidden: true,
53
+ multiple: isMultiAttachment,
54
+ onChange: onAttach,
55
+ size: "1",
56
+ type: "file",
57
+ ...inputProps
58
+ }), [supportedFileTypes, getRef, onAttach, isMultiAttachment, inputProps]);
59
+ const customIcon = useMemo(() => {
60
+ /* Render Custom Icon */
61
+ const icon = renderHandler(renderCustomIcon)({
62
+ onClick: onAttachmentClick
63
+ });
64
+
65
+ if (icon) {
66
+ return /*#__PURE__*/React.createElement(React.Fragment, null, icon, inputEl);
67
+ }
68
+
69
+ return null;
70
+ }, [renderCustomIcon, onAttachmentClick, inputEl]);
71
+ return /*#__PURE__*/React.createElement(Container, {
72
+ alignBox: "column"
73
+ }, customIcon || /*#__PURE__*/React.createElement(IconButton, {
74
+ className: newStyle.iconButton,
75
+ iconClass: newStyle.icon,
76
+ iconName: iconName,
77
+ iconSize: iconSize,
78
+ onClick: onAttachmentClick,
79
+ title: iconTitle
80
+ }, inputEl));
81
+ }
82
+ AttachmentHandler.propTypes = attachmentHandlerPropTypes;
83
+ AttachmentHandler.defaultProps = attachmentHandlerDefaultProps;
84
+ AttachmentHandler.displayName = 'AttachmentHandler';
@@ -0,0 +1,27 @@
1
+ /** ** Styles *** */
2
+
3
+ .attachmentHandler {
4
+ /** ** Use this class for css customisation *** */
5
+ }
6
+
7
+ [dir=ltr] .iconButton {
8
+ margin-right: var(--zd_size5) ;
9
+ }
10
+
11
+ [dir=rtl] .iconButton {
12
+ margin-left: var(--zd_size5) ;
13
+ }
14
+
15
+ .icon {
16
+ color: initial;
17
+ }
18
+
19
+
20
+ .icon :global .path1:before {
21
+ color: var(--imlib_chat_components_emojiPopup_ttIcon_path1_color) !important;
22
+ opacity: 1;
23
+ }
24
+
25
+ .icon :global .path2:before {
26
+ color: var(--imlib_chat_components_emojiPopup_ttIcon_path2_color) !important;
27
+ }
@@ -0,0 +1 @@
1
+ export { default as AttachmentHandler } from "./AttachmentHandler";
@@ -0,0 +1,10 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const attachmentHandlerDefaultProps = {
4
+ customStyle: dummyObject,
5
+ iconName: 'ZD-TT-image',
6
+ iconSize: '14',
7
+ iconTitle: 'Upload',
8
+ isMultiAttachment: false
9
+ };
10
+ export default attachmentHandlerDefaultProps;
@@ -0,0 +1,17 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const attachmentHandlerPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ iconName: PropTypes.string.isRequired,
6
+ iconSize: PropTypes.number,
7
+ iconTitle: PropTypes.string,
8
+ renderCustomIcon: PropTypes.func,
9
+ getRef: PropTypes.func,
10
+ supportedFileTypes: PropTypes.string,
11
+ isMultiAttachment: PropTypes.bool,
12
+ onAttach: PropTypes.func.isRequired,
13
+ customProps: PropTypes.shape({
14
+ inputProps: PropTypes.object
15
+ })
16
+ };
17
+ export default attachmentHandlerPropTypes;
@@ -0,0 +1,121 @@
1
+ /* eslint-disable max-len */
2
+
3
+ /** ** Libraries *** */
4
+ import React, { useMemo } from 'react';
5
+ /** ** Components *** */
6
+
7
+ import { Container, Box } from '@zohodesk/components/es/Layout';
8
+ import AttachmentPreviewHeader from "../AttachmentPreviewHeader/AttachmentPreviewHeader";
9
+ import AttachmentPreviewBody from "../AttachmentPreviewBody/AttachmentPreviewBody";
10
+ /** ** Hooks *** */
11
+
12
+ import { useZIndex } from '@zohodesk/components/es/Provider/ZindexProvider';
13
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
14
+ import useAttachmentPreview from '@zohoim/chat-components-hooks/es/AttachmentPreview/useAttachmentPreview';
15
+ import useAttachmentPreviewEditor from '@zohoim/chat-components-hooks/es/AttachmentPreview/useAttachmentPreviewEditor';
16
+ /** ** Constants *** */
17
+
18
+ import attachmentPreviewDefaultProps from "./props/defaultProps";
19
+ import attachmentPreviewPropTypes from "./props/propTypes";
20
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
21
+ import { mediaTypes } from '@zohoim/chat-components-utils/es/constants/messageConstants';
22
+ /** ** Styles *** */
23
+
24
+ import style from "./css/AttachmentPreview.module.css";
25
+ const {
26
+ IMAGE
27
+ } = mediaTypes;
28
+ export default function AttachmentPreview(props) {
29
+ const {
30
+ customStyle,
31
+ isDescriptionNeeded,
32
+ files,
33
+ customProps,
34
+ onSubmit,
35
+ onCancel,
36
+ texts,
37
+ descriptionDetails,
38
+ onDescriptionChange: propOnDescriptionChange,
39
+ needCloseOnEscape,
40
+ needUploadOnEnter,
41
+ needAutoZindex
42
+ } = props;
43
+ const {
44
+ editorProps = dummyObject,
45
+ attachmentPreviewHeaderProps = dummyObject,
46
+ attachmentPreviewBodyProps = dummyObject
47
+ } = customProps || dummyObject;
48
+ const {
49
+ submitText = 'Submit',
50
+ cancelText = 'Cancel',
51
+ placeHolder = 'Add a description for the image'
52
+ } = texts || dummyObject;
53
+ /* External customization */
54
+
55
+ const newStyle = useMergeStyle(style, customStyle);
56
+ const getNextIndex = useZIndex();
57
+ const {
58
+ selectedFile,
59
+ isShow,
60
+ description,
61
+ onDescriptionChange,
62
+ onEscape
63
+ } = useAttachmentPreview({
64
+ files,
65
+ onDescriptionChange: propOnDescriptionChange,
66
+ descriptionDetails,
67
+ needCloseOnEscape,
68
+ onCancel
69
+ });
70
+ const {
71
+ onEditorKeyDown
72
+ } = useAttachmentPreviewEditor({
73
+ editorProps,
74
+ onPreviewPopupKeyDown: onEscape,
75
+ needUploadOnEnter,
76
+ onSubmit
77
+ });
78
+ const {
79
+ fileName,
80
+ formattedFileSize: fileSize,
81
+ attachmentURL,
82
+ fileFormat,
83
+ mediaType,
84
+ attachmentId
85
+ } = selectedFile;
86
+ const isImageFile = useMemo(() => mediaType === IMAGE, [mediaType]);
87
+ return isShow ? /*#__PURE__*/React.createElement(Container, {
88
+ align: "both",
89
+ alignBox: "column",
90
+ className: newStyle.attachmentPreview,
91
+ style: needAutoZindex ? {
92
+ zIndex: `${getNextIndex()}`
93
+ } : {}
94
+ }, /*#__PURE__*/React.createElement("div", {
95
+ className: newStyle.uploadPrev
96
+ }, /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(AttachmentPreviewHeader, {
97
+ cancelText: cancelText,
98
+ fileName: fileName,
99
+ fileSize: fileSize,
100
+ onCancel: onCancel,
101
+ onSubmit: onSubmit,
102
+ submitText: submitText,
103
+ ...attachmentPreviewHeaderProps
104
+ })), /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(AttachmentPreviewBody, {
105
+ attachmentId: attachmentId,
106
+ attachmentURL: attachmentURL,
107
+ description: description,
108
+ editorProps: editorProps,
109
+ fileFormat: fileFormat,
110
+ isDescriptionNeeded: isDescriptionNeeded,
111
+ isImageFile: isImageFile,
112
+ mediaType: mediaType,
113
+ onDescriptionChange: onDescriptionChange,
114
+ onEditorKeyDown: onEditorKeyDown,
115
+ placeHolder: placeHolder,
116
+ ...attachmentPreviewBodyProps
117
+ })))) : null;
118
+ }
119
+ AttachmentPreview.propTypes = attachmentPreviewPropTypes;
120
+ AttachmentPreview.defaultProps = attachmentPreviewDefaultProps;
121
+ AttachmentPreview.displayName = 'AttachmentPreview';
@@ -0,0 +1,39 @@
1
+ /** ** Styles *** */
2
+ .attachmentPreview {
3
+ position: fixed;
4
+ top: 0 ;
5
+ bottom: 0 ;
6
+ z-index: 2;
7
+ overflow: hidden;
8
+ background-color: rgba(42, 45, 54, 0.94);
9
+ }
10
+ [dir=ltr] .attachmentPreview {
11
+ animation: scaleIn 0.3s ease;
12
+ right: 0 ;
13
+ left: 0 ;
14
+ }
15
+ [dir=rtl] .attachmentPreview {
16
+ animation: scaleIn 0.3s ease;
17
+ left: 0 ;
18
+ right: 0 ;
19
+ }
20
+
21
+ @keyframes scaleIn {
22
+ 0% {
23
+ -webkit-transform: scale(0.9);
24
+ transform: scale(0.9);
25
+ opacity: .7
26
+ }
27
+
28
+ 100% {
29
+ -webkit-transform: scale(1);
30
+ transform: scale(1);
31
+ opacity: 1
32
+ }
33
+ }
34
+
35
+ .uploadPrev {
36
+ width: 100% ;
37
+ max-width: 43.75rem;
38
+ border-radius: 5px;
39
+ }
@@ -0,0 +1 @@
1
+ export { default as AttachmentPreview } from "./AttachmentPreview";
@@ -0,0 +1,9 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const attachmentPreviewDefaultProps = {
4
+ customStyle: dummyObject,
5
+ needCloseOnEscape: true,
6
+ needUploadOnEnter: true,
7
+ needAutoZindex: true
8
+ };
9
+ export default attachmentPreviewDefaultProps;
@@ -0,0 +1,33 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const attachmentPreviewPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ isDescriptionNeeded: PropTypes.bool,
6
+ files: PropTypes.arrayOf(PropTypes.shape({
7
+ id: PropTypes.string,
8
+ name: PropTypes.string,
9
+ size: PropTypes.string,
10
+ type: PropTypes.string,
11
+ url: PropTypes.string
12
+ })).isRequired,
13
+ customProps: PropTypes.shape({
14
+ attachmentIconProps: PropTypes.object,
15
+ cancelButtonProps: PropTypes.object,
16
+ editorProps: PropTypes.object,
17
+ submitButtonProps: PropTypes.object
18
+ }),
19
+ onSubmit: PropTypes.func,
20
+ onCancel: PropTypes.func,
21
+ texts: PropTypes.shape({
22
+ cancelText: PropTypes.string,
23
+ editText: PropTypes.string,
24
+ placeHolder: PropTypes.string,
25
+ submitText: PropTypes.string
26
+ }).isRequired,
27
+ descriptionDetails: PropTypes.object,
28
+ onDescriptionChange: PropTypes.func,
29
+ needCloseOnEscape: PropTypes.bool,
30
+ needUploadOnEnter: PropTypes.bool,
31
+ needAutoZindex: PropTypes.bool
32
+ };
33
+ export default attachmentPreviewPropTypes;
@@ -0,0 +1,97 @@
1
+ /** ** Libraries *** */
2
+ import React, { useMemo } from 'react';
3
+ /** ** Components *** */
4
+
5
+ import { Container } from '@zohodesk/components/es/Layout';
6
+ import ReplyComposer from "../im/ReplyComposer/ReplyComposer";
7
+ import AttachmentIcon from "../AttachmentIcon/AttachmentIcon";
8
+ /** ** Hooks *** */
9
+
10
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
11
+ /** ** Constants *** */
12
+
13
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
14
+ import attachmentPreviewBodyDefaultProps from "./props/defaultProps";
15
+ import attachmentPreviewBodyPropTypes from "./props/propTypes";
16
+ /** ** Styles *** */
17
+
18
+ import style from "./css/AttachmentPreviewBody.module.css";
19
+ export default function AttachmentPreviewBody(props) {
20
+ const {
21
+ customStyle,
22
+ customProps,
23
+ isImageFile,
24
+ attachmentURL,
25
+ fileFormat,
26
+ mediaType,
27
+ isDescriptionNeeded,
28
+ description,
29
+ attachmentId,
30
+ onDescriptionChange,
31
+ onEditorKeyDown,
32
+ placeHolder,
33
+ editorProps
34
+ } = props;
35
+ const {
36
+ attachmentIconProps = dummyObject
37
+ } = customProps || {};
38
+ /* External customization */
39
+
40
+ const newStyle = useMergeStyle(style, customStyle);
41
+ const iconCustomStyle = useMemo(() => ({
42
+ icon: newStyle.attachmentIcon
43
+ }), [newStyle.attachmentIcon]);
44
+ const modifiedEditorProps = useMemo(() => {
45
+ const {
46
+ customProps,
47
+ customStyle: replyComposerCustomStyle
48
+ } = editorProps || dummyObject;
49
+ const {
50
+ replyEditorProps
51
+ } = customProps || dummyObject;
52
+ const {
53
+ customStyle = dummyObject
54
+ } = replyEditorProps || dummyObject;
55
+ return { ...editorProps,
56
+ customStyle: {
57
+ replyComposer: newStyle.replyComposer,
58
+ ...replyComposerCustomStyle
59
+ },
60
+ customProps: { ...customProps,
61
+ replyEditorProps: { ...replyEditorProps,
62
+ customStyle: {
63
+ editorWrapper: newStyle.editorWrapper,
64
+ editableDiv: newStyle.editableDiv,
65
+ ...customStyle
66
+ }
67
+ }
68
+ }
69
+ };
70
+ }, [editorProps, newStyle.replyComposer, newStyle.editorWrapper, newStyle.editableDiv]);
71
+ return /*#__PURE__*/React.createElement(Container, {
72
+ align: "both",
73
+ alignBox: "column",
74
+ className: `${newStyle.zoomContent} ${newStyle.imgContent}`
75
+ }, /*#__PURE__*/React.createElement("div", {
76
+ className: newStyle.fileContainer
77
+ }, isImageFile ? /*#__PURE__*/React.createElement("img", {
78
+ alt: "",
79
+ className: newStyle.imgZoomOut,
80
+ src: attachmentURL
81
+ }) : /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(AttachmentIcon, {
82
+ customStyle: iconCustomStyle,
83
+ fileFormat: fileFormat,
84
+ mediaType: mediaType,
85
+ ...attachmentIconProps
86
+ }))), isDescriptionNeeded ? /*#__PURE__*/React.createElement(ReplyComposer, {
87
+ content: description,
88
+ id: `${attachmentId}_Attach_Editor`,
89
+ onChange: onDescriptionChange,
90
+ onKeyDown: onEditorKeyDown,
91
+ placeHolder: placeHolder,
92
+ ...modifiedEditorProps
93
+ }) : null);
94
+ }
95
+ AttachmentPreviewBody.propTypes = attachmentPreviewBodyPropTypes;
96
+ AttachmentPreviewBody.defaultProps = attachmentPreviewBodyDefaultProps;
97
+ AttachmentPreviewBody.displayName = 'AttachmentPreviewBody';
@@ -0,0 +1,75 @@
1
+ /** ** Styles *** */
2
+ .attachmentIcon {
3
+ width: var(--zd_size60) !important;
4
+ height: var(--zd_size60) !important;
5
+ }
6
+
7
+ .replyComposer {
8
+ width: 100% ;
9
+ }
10
+
11
+ .editorWrapper {
12
+ display: flex;
13
+ flex-direction: column;
14
+ height: 100% ;
15
+ width: 100% ;
16
+ padding: 0 ;
17
+ margin-top: var(--zd_size40) ;
18
+ }
19
+
20
+ .editableDiv {
21
+ min-height: var(--zd_size48) !important;
22
+ max-height: var(--zd_size48) !important;
23
+ background-color: transparent !important;
24
+ border: 0 !important;
25
+ border-bottom: 1px solid
26
+ var(--imlib_chat_components_attachmentPreviewBody_editor_border_color) !important;
27
+ padding: 0 !important;
28
+ }
29
+
30
+ .editableDiv:hover {
31
+ border-color: var(
32
+ --imlib_chat_components_attachmentPreviewBody_editor_border_hover_color
33
+ ) !important;
34
+ }
35
+
36
+ .editableDiv:focus {
37
+ border-color: var(
38
+ --imlib_chat_components_attachmentPreviewBody_editor_border_active_color
39
+ ) !important;
40
+ }
41
+
42
+ .imgContent,
43
+ .zoomContent {
44
+ overflow: auto;
45
+ position: relative;
46
+ box-sizing: border-box;
47
+ }
48
+
49
+ .imgContent, .zoomContent {
50
+ background-color: var(--imlib_chat_components_attachmentPreviewBody_bg_color);
51
+ padding: var(--zd_size40);
52
+ }
53
+
54
+ [dir=ltr] .imgContent, [dir=ltr] .zoomContent {
55
+ border-bottom-left-radius: var(--zd_size5);
56
+ border-bottom-right-radius: var(--zd_size5);
57
+ }
58
+
59
+ [dir=rtl] .imgContent, [dir=rtl] .zoomContent {
60
+ border-bottom-right-radius: var(--zd_size5);
61
+ border-bottom-left-radius: var(--zd_size5);
62
+ }
63
+
64
+ .fileContainer {
65
+ height: var(--zd_size225);
66
+ composes: dflex from '~@zohodesk/components/es/common/common.module.css';
67
+ composes: alignVertical from '~@zohodesk/components/es/common/common.module.css';
68
+ composes: alignHorizontal from '~@zohodesk/components/es/common/common.module.css';
69
+ }
70
+
71
+ .imgZoomOut {
72
+ width: auto ;
73
+ max-width: 100% ;
74
+ max-height: 100% ;
75
+ }
@@ -0,0 +1 @@
1
+ export { default as AttachmentPreviewBody } from "./AttachmentPreviewBody";
@@ -0,0 +1,7 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants';
3
+ const attachmentPreviewBodyDefaultProps = {
4
+ customStyle: dummyObject,
5
+ customProps: dummyObject
6
+ };
7
+ export default attachmentPreviewBodyDefaultProps;
@@ -0,0 +1,20 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const attachmentPreviewBodyPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ customProps: PropTypes.shape({
6
+ attachmentIconProps: PropTypes.object
7
+ }),
8
+ isImageFile: PropTypes.bool,
9
+ attachmentURL: PropTypes.string,
10
+ fileFormat: PropTypes.string,
11
+ mediaType: PropTypes.string,
12
+ isDescriptionNeeded: PropTypes.bool,
13
+ description: PropTypes.string,
14
+ attachmentId: PropTypes.string,
15
+ onDescriptionChange: PropTypes.func,
16
+ onEditorKeyDown: PropTypes.func,
17
+ placeHolder: PropTypes.string,
18
+ editorProps: PropTypes.object
19
+ };
20
+ export default attachmentPreviewBodyPropTypes;