@zohoim/chat-components 1.0.11 → 1.1.0-beta.1

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 (154) hide show
  1. package/README.md +8 -0
  2. package/assets/Appearance/dark/mode/General_DarkMode.module.css +93 -0
  3. package/assets/Appearance/dark/themes/blue/blue_General_DarkTheme.module.css +40 -0
  4. package/assets/Appearance/dark/themes/green/green_General_DarkTheme.module.css +40 -0
  5. package/assets/Appearance/dark/themes/orange/orange_General_DarkTheme.module.css +40 -0
  6. package/assets/Appearance/dark/themes/red/red_General_DarkTheme.module.css +40 -0
  7. package/assets/Appearance/dark/themes/yellow/yellow_General_DarkTheme.module.css +40 -0
  8. package/assets/Appearance/light/mode/General_LightMode.module.css +93 -0
  9. package/assets/Appearance/light/themes/blue/blue_General_LightTheme.module.css +40 -0
  10. package/assets/Appearance/light/themes/green/green_General_LightTheme.module.css +40 -0
  11. package/assets/Appearance/light/themes/orange/orange_General_LightTheme.module.css +40 -0
  12. package/assets/Appearance/light/themes/red/red_General_LightTheme.module.css +40 -0
  13. package/assets/Appearance/light/themes/yellow/yellow_General_LightTheme.module.css +40 -0
  14. package/assets/Appearance/pureDark/mode/General_PureDarkMode.module.css +93 -0
  15. package/assets/Appearance/pureDark/themes/blue/blue_General_PureDarkTheme.module.css +40 -0
  16. package/assets/Appearance/pureDark/themes/green/green_General_PureDarkTheme.module.css +40 -0
  17. package/assets/Appearance/pureDark/themes/orange/orange_General_PureDarkTheme.module.css +40 -0
  18. package/assets/Appearance/pureDark/themes/red/red_General_PureDarkTheme.module.css +40 -0
  19. package/assets/Appearance/pureDark/themes/yellow/yellow_General_PureDarkTheme.module.css +40 -0
  20. package/es/AttachmentHandler/AttachmentHandler.js +84 -0
  21. package/es/AttachmentHandler/css/AttachmentHandler.module.css +27 -0
  22. package/es/AttachmentHandler/index.js +1 -0
  23. package/es/AttachmentHandler/props/defaultProps.js +10 -0
  24. package/es/AttachmentHandler/props/propTypes.js +17 -0
  25. package/es/AttachmentPreview/AttachmentPreview.js +121 -0
  26. package/es/AttachmentPreview/css/AttachmentPreview.module.css +39 -0
  27. package/es/AttachmentPreview/index.js +1 -0
  28. package/es/AttachmentPreview/props/defaultProps.js +9 -0
  29. package/es/AttachmentPreview/props/propTypes.js +33 -0
  30. package/es/AttachmentPreviewBody/AttachmentPreviewBody.js +97 -0
  31. package/es/AttachmentPreviewBody/css/AttachmentPreviewBody.module.css +71 -0
  32. package/es/AttachmentPreviewBody/index.js +1 -0
  33. package/es/AttachmentPreviewBody/props/defaultProps.js +7 -0
  34. package/es/AttachmentPreviewBody/props/propTypes.js +20 -0
  35. package/es/AttachmentPreviewHeader/AttachmentPreviewHeader.js +84 -0
  36. package/es/AttachmentPreviewHeader/css/AttachmentPreviewHeader.module.css +47 -0
  37. package/es/AttachmentPreviewHeader/index.js +1 -0
  38. package/es/AttachmentPreviewHeader/props/defaultProps.js +7 -0
  39. package/es/AttachmentPreviewHeader/props/propTypes.js +16 -0
  40. package/es/Emoji/Emoji.js +72 -0
  41. package/es/Emoji/css/Emoji.module.css +48 -0
  42. package/es/Emoji/css/cssJSLogic.js +18 -0
  43. package/es/Emoji/index.js +1 -0
  44. package/es/Emoji/props/defaultProps.js +8 -0
  45. package/es/Emoji/props/propTypes.js +16 -0
  46. package/es/EmojiPopup/EmojiPopup.js +115 -0
  47. package/es/EmojiPopup/css/EmojiPopup.module.css +55 -0
  48. package/es/EmojiPopup/index.js +1 -0
  49. package/es/EmojiPopup/props/defaultProps.js +11 -0
  50. package/es/EmojiPopup/props/propTypes.js +21 -0
  51. package/es/Emojis/Emojis.js +81 -0
  52. package/es/Emojis/index.js +1 -0
  53. package/es/Emojis/props/defaultProps.js +10 -0
  54. package/es/Emojis/props/propTypes.js +20 -0
  55. package/es/EmojisEmptyState/EmojisEmptyState.js +50 -0
  56. package/es/EmojisEmptyState/css/EmojisEmptyState.module.css +18 -0
  57. package/es/EmojisEmptyState/index.js +1 -0
  58. package/es/EmojisEmptyState/props/defaultProps.js +9 -0
  59. package/es/EmojisEmptyState/props/propTypes.js +8 -0
  60. package/es/EmojisFooter/EmojisFooter.js +71 -0
  61. package/es/EmojisFooter/css/EmojisFooter.module.css +40 -0
  62. package/es/EmojisFooter/index.js +1 -0
  63. package/es/EmojisFooter/props/defaultProps.js +7 -0
  64. package/es/EmojisFooter/props/propTypes.js +12 -0
  65. package/es/EmojisHeader/EmojisHeader.js +65 -0
  66. package/es/EmojisHeader/css/EmojisHeader.module.css +36 -0
  67. package/es/EmojisHeader/index.js +1 -0
  68. package/es/EmojisHeader/props/defaultProps.js +8 -0
  69. package/es/EmojisHeader/props/propTypes.js +13 -0
  70. package/es/EmojisList/EmojisList.js +130 -0
  71. package/es/EmojisList/css/EmojisList.module.css +50 -0
  72. package/es/EmojisList/css/cssJSLogic.js +25 -0
  73. package/es/EmojisList/index.js +1 -0
  74. package/es/EmojisList/props/defaultProps.js +10 -0
  75. package/es/EmojisList/props/propTypes.js +20 -0
  76. package/es/MessageActionsMore/MessageActionsMore.js +2 -2
  77. package/es/MessageActionsMore/props/propTypes.js +5 -2
  78. package/es/MessageActionsWrapper/MessageActionsWrapper.js +1 -1
  79. package/es/Theme/ThemeAssets.js +20 -2
  80. package/es/Theme/ThemeWrapper.js +27 -12
  81. package/es/Theme/TooltipWrapper.js +1 -1
  82. package/es/Theme/props/defaultProps.js +2 -1
  83. package/es/Theme/props/propTypes.js +2 -1
  84. package/es/Theme/utils/getThemeConfigurations.js +2 -56
  85. package/es/constants/index.js +8 -1
  86. package/es/constants/propConstants/editorPropConstants.js +3 -0
  87. package/es/constants/propConstants/popupPropConstants.js +2 -0
  88. package/es/im/IMAttachmentHandler/IMAttachmentHandler.js +50 -0
  89. package/es/im/IMAttachmentHandler/index.js +1 -0
  90. package/es/im/IMAttachmentHandler/props/defaultProps.js +10 -0
  91. package/es/im/IMAttachmentHandler/props/propTypes.js +28 -0
  92. package/es/im/IMIntegrationIcon/css/IMIntegrationIcon.module.css +2 -2
  93. package/es/im/ReplyComposer/ReplyComposer.js +153 -0
  94. package/es/im/ReplyComposer/css/ReplyComposer.module.css +10 -0
  95. package/es/im/ReplyComposer/css/cssJSLogic.js +13 -0
  96. package/es/im/ReplyComposer/index.js +1 -0
  97. package/es/im/ReplyComposer/props/defaultProps.js +7 -0
  98. package/es/im/ReplyComposer/props/propTypes.js +60 -0
  99. package/es/im/ReplyComposerFooter/ReplyComposerFooter.js +41 -0
  100. package/es/im/ReplyComposerFooter/css/ReplyComposerFooter.module.css +10 -0
  101. package/es/im/ReplyComposerFooter/index.js +1 -0
  102. package/es/im/ReplyComposerFooter/props/defaultProps.js +8 -0
  103. package/es/im/ReplyComposerFooter/props/propTypes.js +17 -0
  104. package/es/im/ReplyEditor/ReplyEditor.js +103 -0
  105. package/es/im/ReplyEditor/css/ReplyEditor.module.css +50 -0
  106. package/es/im/ReplyEditor/css/cssJSLogic.js +10 -0
  107. package/es/im/ReplyEditor/index.js +1 -0
  108. package/es/im/ReplyEditor/props/defaultProps.js +8 -0
  109. package/es/im/ReplyEditor/props/propTypes.js +27 -0
  110. package/es/im/ReplyEditorExtensions/ReplyEditorExtensions.js +149 -0
  111. package/es/im/ReplyEditorExtensions/css/ReplyEditorExtensions.module.css +5 -0
  112. package/es/im/ReplyEditorExtensions/index.js +1 -0
  113. package/es/im/ReplyEditorExtensions/props/defaultProps.js +6 -0
  114. package/es/im/ReplyEditorExtensions/props/propTypes.js +16 -0
  115. package/es/im/ReplyEditorSuggestions/ReplyEditorSuggestions.js +95 -0
  116. package/es/im/ReplyEditorSuggestions/css/ReplyEditorSuggestions.module.css +8 -0
  117. package/es/im/ReplyEditorSuggestions/index.js +1 -0
  118. package/es/im/ReplyEditorSuggestions/props/defaultProps.js +6 -0
  119. package/es/im/ReplyEditorSuggestions/props/propTypes.js +21 -0
  120. package/es/im/ReplyEditorSuggestionsPopup/ReplyEditorSuggestionsPopup.js +93 -0
  121. package/es/im/ReplyEditorSuggestionsPopup/css/ReplyEditorSuggestionsPopup.module.css +7 -0
  122. package/es/im/ReplyEditorSuggestionsPopup/index.js +1 -0
  123. package/es/im/ReplyEditorSuggestionsPopup/props/defaultProps.js +10 -0
  124. package/es/im/ReplyEditorSuggestionsPopup/props/propTypes.js +21 -0
  125. package/es/im/index.js +8 -1
  126. package/es/index.js +13 -2
  127. package/es/rte/Editor/Editor.js +80 -0
  128. package/es/rte/Editor/css/Editor.module.css +17 -0
  129. package/es/rte/Editor/index.js +1 -0
  130. package/es/rte/Editor/props/defaultProps.js +21 -0
  131. package/es/rte/Editor/props/propTypes.js +52 -0
  132. package/es/rte/index.js +1 -0
  133. package/lib/index.js +538 -0
  134. package/package.json +21 -14
  135. package/es/Theme/constants/index.js +0 -41
  136. package/es/Theme/themeVariables/commonThemeColorVariable.js +0 -17
  137. package/es/Theme/themeVariables/dark/blueTheme.js +0 -116
  138. package/es/Theme/themeVariables/dark/commonColorVariable.js +0 -16
  139. package/es/Theme/themeVariables/dark/greenTheme.js +0 -115
  140. package/es/Theme/themeVariables/dark/orangeTheme.js +0 -115
  141. package/es/Theme/themeVariables/dark/redTheme.js +0 -115
  142. package/es/Theme/themeVariables/dark/yellowTheme.js +0 -115
  143. package/es/Theme/themeVariables/light/blueTheme.js +0 -114
  144. package/es/Theme/themeVariables/light/commonColorVariable.js +0 -35
  145. package/es/Theme/themeVariables/light/greenTheme.js +0 -114
  146. package/es/Theme/themeVariables/light/orangeTheme.js +0 -114
  147. package/es/Theme/themeVariables/light/redTheme.js +0 -114
  148. package/es/Theme/themeVariables/light/yellowTheme.js +0 -114
  149. package/es/Theme/themeVariables/pureDark/blueTheme.js +0 -115
  150. package/es/Theme/themeVariables/pureDark/commonColorVariable.js +0 -18
  151. package/es/Theme/themeVariables/pureDark/greenTheme.js +0 -115
  152. package/es/Theme/themeVariables/pureDark/orangeTheme.js +0 -115
  153. package/es/Theme/themeVariables/pureDark/redTheme.js +0 -115
  154. package/es/Theme/themeVariables/pureDark/yellowTheme.js +0 -115
@@ -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,71 @@
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 var(--zdt_textarea_default_border) !important;
26
+ padding: 0 !important;
27
+ }
28
+
29
+ .editableDiv:hover {
30
+ border-color: var(--zdt_textarea_hover_border) !important;
31
+ }
32
+
33
+ .editableDiv:focus {
34
+ border-color: var(--zdt_textarea_focus_border) !important;
35
+ }
36
+
37
+ .imgContent,
38
+ .zoomContent {
39
+ overflow: auto;
40
+ position: relative;
41
+ box-sizing: border-box;
42
+ }
43
+
44
+ .imgContent, .zoomContent {
45
+ background-color: var(--imlib_chat_components_attachmentPreviewBody_bg_color);
46
+ padding: var(--zd_size40);
47
+ background-color: var(--imlib_chat_components_attachmentPreview_body_bg_color);
48
+ }
49
+
50
+ [dir=ltr] .imgContent, [dir=ltr] .zoomContent {
51
+ border-bottom-left-radius: var(--zd_size5);
52
+ border-bottom-right-radius: var(--zd_size5);
53
+ }
54
+
55
+ [dir=rtl] .imgContent, [dir=rtl] .zoomContent {
56
+ border-bottom-right-radius: var(--zd_size5);
57
+ border-bottom-left-radius: var(--zd_size5);
58
+ }
59
+
60
+ .fileContainer {
61
+ height: var(--zd_size225);
62
+ composes: dflex from '~@zohodesk/components/es/common/common.module.css';
63
+ composes: alignVertical from '~@zohodesk/components/es/common/common.module.css';
64
+ composes: alignHorizontal from '~@zohodesk/components/es/common/common.module.css';
65
+ }
66
+
67
+ .imgZoomOut {
68
+ width: auto ;
69
+ max-width: 100% ;
70
+ max-height: 100% ;
71
+ }
@@ -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;
@@ -0,0 +1,84 @@
1
+ /** ** Libraries *** */
2
+ import React from 'react';
3
+ /** ** Components *** */
4
+
5
+ import { Container, Box } from '@zohodesk/components/es/Layout';
6
+ import Button from '@zohodesk/components/es/Button/Button';
7
+ /** ** Hooks *** */
8
+
9
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
10
+ /** ** Constants *** */
11
+
12
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
13
+ import attachmentPreviewHeaderDefaultProps from "./props/defaultProps";
14
+ import attachmentPreviewHeaderPropTypes from "./props/propTypes";
15
+ /** ** Styles *** */
16
+
17
+ import style from "./css/AttachmentPreviewHeader.module.css";
18
+ export default function AttachmentPreviewHeader(props) {
19
+ const {
20
+ customStyle,
21
+ fileName,
22
+ fileSize,
23
+ submitText,
24
+ cancelText,
25
+ onSubmit,
26
+ onCancel,
27
+ customProps
28
+ } = props;
29
+ const {
30
+ submitButtonProps = dummyObject,
31
+ cancelButtonProps = dummyObject
32
+ } = customProps || {};
33
+ /* External customization */
34
+
35
+ const newStyle = useMergeStyle(style, customStyle);
36
+ return /*#__PURE__*/React.createElement(Container, {
37
+ align: "vertical",
38
+ alignBox: "row",
39
+ className: newStyle.imgPreviewerheader,
40
+ isCover: false
41
+ }, /*#__PURE__*/React.createElement(Box, {
42
+ flexible: true
43
+ }, /*#__PURE__*/React.createElement(Container, {
44
+ align: "vertical",
45
+ alignBox: "row"
46
+ }, /*#__PURE__*/React.createElement(Box, {
47
+ flexible: true
48
+ }, /*#__PURE__*/React.createElement("div", {
49
+ className: newStyle.imgName,
50
+ title: fileName
51
+ }, fileName), /*#__PURE__*/React.createElement("div", {
52
+ className: newStyle.imgSize
53
+ }, fileSize)))), /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Container, {
54
+ align: "vertical",
55
+ alignBox: "row",
56
+ className: newStyle.navIcon,
57
+ isCover: false
58
+ }, /*#__PURE__*/React.createElement("span", {
59
+ className: newStyle.attachBtn
60
+ }, /*#__PURE__*/React.createElement(Button, {
61
+ disabled: false,
62
+ isBold: true,
63
+ onClick: onSubmit,
64
+ palette: "primaryFilled",
65
+ rounded: false,
66
+ size: "medium",
67
+ status: "none",
68
+ text: submitText,
69
+ ...submitButtonProps
70
+ })), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Button, {
71
+ disabled: false,
72
+ isBold: true,
73
+ onClick: onCancel,
74
+ palette: "secondary",
75
+ rounded: false,
76
+ size: "medium",
77
+ status: "none",
78
+ text: cancelText,
79
+ ...cancelButtonProps
80
+ })))));
81
+ }
82
+ AttachmentPreviewHeader.propTypes = attachmentPreviewHeaderPropTypes;
83
+ AttachmentPreviewHeader.defaultProps = attachmentPreviewHeaderDefaultProps;
84
+ AttachmentPreviewHeader.displayName = 'AttachmentPreviewHeader';
@@ -0,0 +1,47 @@
1
+ /** ** Styles *** */
2
+ .imgPreviewerheader {
3
+ position: relative;
4
+ background-color: var(
5
+ --imlib_chat_components_attachmentPreview_bg_color
6
+ );
7
+ padding: var(--zd_size15) var(--zd_size40);
8
+ border-bottom: var(--zd_size1) solid var(--imlib_chat_components_common_border);
9
+ }
10
+ [dir=ltr] .imgPreviewerheader {
11
+ border-top-left-radius: var(--zd_size5);
12
+ border-top-right-radius: var(--zd_size5);
13
+ }
14
+ [dir=rtl] .imgPreviewerheader {
15
+ border-top-right-radius: var(--zd_size5);
16
+ border-top-left-radius: var(--zd_size5);
17
+ }
18
+
19
+ .imgName {
20
+ color: var(--imlib_chat_components_attachmentPreview_name_color);
21
+ font-size: var(--zd_font_size17);
22
+ font-family: var(--zd_semibold);
23
+ composes: dotted from '../../css/common.module.css';
24
+ max-width: 100% ;
25
+ margin-bottom: var(--zd_size5);
26
+ }
27
+
28
+ .imgSize {
29
+ font-size: var(--zd_font_size13);
30
+ color: var(--imlib_chat_components_attachmentPreview_size_color);
31
+ composes: dotted from '../../css/common.module.css';
32
+ max-width: var(--zd_size150);
33
+ }
34
+
35
+ .navIcon {
36
+ -webkit-box-pack: flex-end;
37
+ -ms-flex-pack: flex-end;
38
+ justify-content: flex-end;
39
+ }
40
+
41
+ [dir=ltr] .attachBtn {
42
+ margin-right: var(--zd_size10);
43
+ }
44
+
45
+ [dir=rtl] .attachBtn {
46
+ margin-left: var(--zd_size10);
47
+ }
@@ -0,0 +1 @@
1
+ export { default as AttachmentPreviewHeader } from "./AttachmentPreviewHeader";
@@ -0,0 +1,7 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants';
3
+ const attachmentPreviewHeaderDefaultProps = {
4
+ customStyle: dummyObject,
5
+ customProps: dummyObject
6
+ };
7
+ export default attachmentPreviewHeaderDefaultProps;
@@ -0,0 +1,16 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const attachmentPreviewHeaderPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ fileName: PropTypes.string.isRequired,
6
+ fileSize: PropTypes.string.isRequired,
7
+ submitText: PropTypes.string.isRequired,
8
+ cancelText: PropTypes.string.isRequired,
9
+ onSubmit: PropTypes.func,
10
+ onCancel: PropTypes.func,
11
+ customProps: PropTypes.shape({
12
+ cancelButtonProps: PropTypes.object,
13
+ submitButtonProps: PropTypes.object
14
+ })
15
+ };
16
+ export default attachmentPreviewHeaderPropTypes;
@@ -0,0 +1,72 @@
1
+ /* eslint-disable max-len */
2
+
3
+ /** ** Libraries *** */
4
+ import React from 'react';
5
+ /** ** Hooks *** */
6
+
7
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
8
+ import useEmoji from '@zohoim/chat-components-hooks/es/Emoji/useEmoji';
9
+ /** ** Constants *** */
10
+
11
+ import emojiDefaultProps from "./props/defaultProps";
12
+ import emojiPropTypes from "./props/propTypes";
13
+ /** ** Methods *** */
14
+
15
+ import cssJSLogic from "./css/cssJSLogic";
16
+ /** ** Styles *** */
17
+
18
+ import style from "./css/Emoji.module.css";
19
+ export default function Emoji(props) {
20
+ const {
21
+ customStyle,
22
+ id,
23
+ emoji,
24
+ emojiName,
25
+ isActive,
26
+ isHighlight,
27
+ onSelect: propOnSelect,
28
+ autoHover,
29
+ eleRef: propEleRef,
30
+ needTitle,
31
+ customTitle
32
+ } = props;
33
+ /* External customization */
34
+
35
+ const newStyle = useMergeStyle(style, customStyle);
36
+ /* CSS classnames added based on logic */
37
+
38
+ const {
39
+ emojiClass
40
+ } = cssJSLogic({
41
+ isActive,
42
+ isHighlight,
43
+ autoHover
44
+ }, newStyle);
45
+ const {
46
+ onSelect,
47
+ unicode,
48
+ title,
49
+ eleRef
50
+ } = useEmoji({
51
+ onSelect: propOnSelect,
52
+ emoji,
53
+ emojiName,
54
+ eleRef: propEleRef,
55
+ id,
56
+ needTitle,
57
+ customTitle
58
+ });
59
+ return /*#__PURE__*/React.createElement("span", {
60
+ ref: eleRef,
61
+ className: emojiClass,
62
+ onClick: onSelect
63
+ }, /*#__PURE__*/React.createElement("span", {
64
+ className: newStyle.emojiContent,
65
+ "data-smiley": emojiName,
66
+ "data-title": title,
67
+ "data-unicode": emoji
68
+ }, unicode));
69
+ }
70
+ Emoji.propTypes = emojiPropTypes;
71
+ Emoji.defaultProps = emojiDefaultProps;
72
+ Emoji.displayName = 'Emoji';
@@ -0,0 +1,48 @@
1
+ .varClass {
2
+ --emoji-height: var(--zd_size32);
3
+ --emoji-width: var(--zd_size32);
4
+ --emoji-font_size: var(--zd_font_size20);
5
+ --emoji-margin: var(--zd_size5);
6
+ }
7
+
8
+ .emoji {
9
+ composes: varClass;
10
+ width: var(--emoji-height);
11
+ height: var(--emoji-width);
12
+ overflow: hidden;
13
+ font-size: 0 ;
14
+ display: inline-flex;
15
+ align-items: center;
16
+ justify-content: center;
17
+ cursor: pointer;
18
+ margin: 0 var(--emoji-margin);
19
+ text-align: center;
20
+ }
21
+
22
+ .emojiContent {
23
+ font-size: var(--emoji-font_size);
24
+ display: block;
25
+ }
26
+
27
+ .emojiHighlight .emojiContent,
28
+ .emojiHover:hover .emojiContent {
29
+ transition: transform 60ms ease-out 60ms;
30
+ }
31
+
32
+ .emojiHighlight .emojiContent, .emojiHover:hover .emojiContent {
33
+ transform: scale(1.2);
34
+ }
35
+
36
+ .emojiHighlight {
37
+ background-color: var(--imlib_chat_components_emoji_hover_bg_color);
38
+ }
39
+
40
+ /* .emojiHover:hover */
41
+
42
+ .emojiActive {
43
+ transform: scale(1.2);
44
+
45
+ }
46
+
47
+
48
+ /* background-color: var(--imlib_chat_components_emoji_active_bg_color); */
@@ -0,0 +1,18 @@
1
+ /** ** Methods *** */
2
+ import { compileClassNames } from '@zohodesk/utils';
3
+ export default function cssJSLogic(props, style) {
4
+ const {
5
+ isActive,
6
+ isHighlight,
7
+ autoHover
8
+ } = props;
9
+ const emojiClass = compileClassNames({
10
+ [style.emoji]: true,
11
+ [style.emojiHover]: autoHover,
12
+ [style.emojiHighlight]: isHighlight,
13
+ [style.emojiActive]: isActive
14
+ });
15
+ return {
16
+ emojiClass
17
+ };
18
+ }
@@ -0,0 +1 @@
1
+ export { default as Emoji } from "./Emoji";
@@ -0,0 +1,8 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const emojiDefaultProps = {
4
+ customStyle: dummyObject,
5
+ autoHover: true,
6
+ needTitle: true
7
+ };
8
+ export default emojiDefaultProps;
@@ -0,0 +1,16 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const emojiPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ emoji: PropTypes.string.isRequired,
6
+ emojiName: PropTypes.string.isRequired,
7
+ isActive: PropTypes.bool,
8
+ isHighlight: PropTypes.bool,
9
+ onSelect: PropTypes.func,
10
+ autoHover: PropTypes.bool,
11
+ id: PropTypes.string,
12
+ eleRef: PropTypes.func,
13
+ needTitle: PropTypes.bool,
14
+ customTitle: PropTypes.string
15
+ };
16
+ export default emojiPropTypes;