@zohoim/chat-components 1.0.9-alpha.0 → 1.0.9-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 (164) 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 +17 -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 +113 -0
  14. package/es/AttachmentPreview/css/AttachmentPreview.module.css +31 -0
  15. package/es/AttachmentPreview/index.js +1 -0
  16. package/es/AttachmentPreview/props/defaultProps.js +7 -0
  17. package/es/AttachmentPreview/props/propTypes.js +31 -0
  18. package/es/AttachmentPreviewBody/AttachmentPreviewBody.js +76 -0
  19. package/es/AttachmentPreviewBody/css/AttachmentPreviewBody.module.css +63 -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 +45 -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 +47 -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 +116 -0
  35. package/es/EmojiPopup/css/EmojiPopup.module.css +50 -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 +19 -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 +38 -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 +133 -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 +23 -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 +121 -0
  79. package/es/Theme/themeVariables/dark/commonColorVariable.js +27 -0
  80. package/es/Theme/themeVariables/dark/greenTheme.js +119 -0
  81. package/es/Theme/themeVariables/dark/orangeTheme.js +119 -0
  82. package/es/Theme/themeVariables/dark/redTheme.js +119 -0
  83. package/es/Theme/themeVariables/dark/yellowTheme.js +119 -0
  84. package/es/Theme/themeVariables/light/blueTheme.js +123 -0
  85. package/es/Theme/themeVariables/light/commonColorVariable.js +46 -0
  86. package/es/Theme/themeVariables/light/greenTheme.js +117 -0
  87. package/es/Theme/themeVariables/light/orangeTheme.js +117 -0
  88. package/es/Theme/themeVariables/light/redTheme.js +117 -0
  89. package/es/Theme/themeVariables/light/yellowTheme.js +117 -0
  90. package/es/Theme/themeVariables/pureDark/blueTheme.js +120 -0
  91. package/es/Theme/themeVariables/pureDark/commonColorVariable.js +29 -0
  92. package/es/Theme/themeVariables/pureDark/greenTheme.js +119 -0
  93. package/es/Theme/themeVariables/pureDark/orangeTheme.js +119 -0
  94. package/es/Theme/themeVariables/pureDark/redTheme.js +119 -0
  95. package/es/Theme/themeVariables/pureDark/yellowTheme.js +119 -0
  96. package/es/Theme/utils/getThemeConfigurations.js +56 -2
  97. package/es/constants/index.js +7 -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 +137 -0
  106. package/es/im/ReplyComposer/css/ReplyComposer.module.css +5 -0
  107. package/es/im/ReplyComposer/index.js +1 -0
  108. package/es/im/ReplyComposer/props/defaultProps.js +7 -0
  109. package/es/im/ReplyComposer/props/propTypes.js +60 -0
  110. package/es/im/ReplyComposerFooter/ReplyComposerFooter.js +41 -0
  111. package/es/im/ReplyComposerFooter/css/ReplyComposerFooter.module.css +5 -0
  112. package/es/im/ReplyComposerFooter/index.js +1 -0
  113. package/es/im/ReplyComposerFooter/props/defaultProps.js +8 -0
  114. package/es/im/ReplyComposerFooter/props/propTypes.js +17 -0
  115. package/es/im/ReplyEditor/ReplyEditor.js +103 -0
  116. package/es/im/ReplyEditor/css/ReplyEditor.module.css +30 -0
  117. package/es/im/ReplyEditor/css/cssJSLogic.js +10 -0
  118. package/es/im/ReplyEditor/index.js +1 -0
  119. package/es/im/ReplyEditor/props/defaultProps.js +8 -0
  120. package/es/im/ReplyEditor/props/propTypes.js +27 -0
  121. package/es/im/ReplyEditorExtensions/ReplyEditorExtensions.js +149 -0
  122. package/es/im/ReplyEditorExtensions/css/ReplyEditorExtensions.module.css +5 -0
  123. package/es/im/ReplyEditorExtensions/index.js +1 -0
  124. package/es/im/ReplyEditorExtensions/props/defaultProps.js +6 -0
  125. package/es/im/ReplyEditorExtensions/props/propTypes.js +16 -0
  126. package/es/im/ReplyEditorSuggestions/ReplyEditorSuggestions.js +87 -0
  127. package/es/im/ReplyEditorSuggestions/css/ReplyEditorSuggestions.module.css +8 -0
  128. package/es/im/ReplyEditorSuggestions/index.js +1 -0
  129. package/es/im/ReplyEditorSuggestions/props/defaultProps.js +6 -0
  130. package/es/im/ReplyEditorSuggestions/props/propTypes.js +20 -0
  131. package/es/im/ReplyEditorSuggestionsPopup/ReplyEditorSuggestionsPopup.js +90 -0
  132. package/es/im/ReplyEditorSuggestionsPopup/css/ReplyEditorSuggestionsPopup.module.css +7 -0
  133. package/es/im/ReplyEditorSuggestionsPopup/index.js +1 -0
  134. package/es/im/ReplyEditorSuggestionsPopup/props/defaultProps.js +10 -0
  135. package/es/im/ReplyEditorSuggestionsPopup/props/propTypes.js +21 -0
  136. package/es/im/index.js +8 -1
  137. package/es/index.js +13 -2
  138. package/es/rte/Editor/Editor.js +80 -0
  139. package/es/rte/Editor/css/Editor.module.css +19 -0
  140. package/es/rte/Editor/index.js +1 -0
  141. package/es/rte/Editor/props/defaultProps.js +21 -0
  142. package/es/rte/Editor/props/propTypes.js +52 -0
  143. package/es/rte/index.js +1 -0
  144. package/package.json +13 -20
  145. package/assets/Appearance/dark/mode/General_DarkMode.module.css +0 -71
  146. package/assets/Appearance/dark/themes/blue/blue_General_DarkTheme.module.css +0 -35
  147. package/assets/Appearance/dark/themes/green/green_General_DarkTheme.module.css +0 -35
  148. package/assets/Appearance/dark/themes/orange/orange_General_DarkTheme.module.css +0 -35
  149. package/assets/Appearance/dark/themes/red/red_General_DarkTheme.module.css +0 -35
  150. package/assets/Appearance/dark/themes/yellow/yellow_General_DarkTheme.module.css +0 -35
  151. package/assets/Appearance/light/mode/General_LightMode.module.css +0 -71
  152. package/assets/Appearance/light/themes/blue/blue_General_LightTheme.module.css +0 -35
  153. package/assets/Appearance/light/themes/green/green_General_LightTheme.module.css +0 -35
  154. package/assets/Appearance/light/themes/orange/orange_General_LightTheme.module.css +0 -35
  155. package/assets/Appearance/light/themes/red/red_General_LightTheme.module.css +0 -35
  156. package/assets/Appearance/light/themes/yellow/yellow_General_LightTheme.module.css +0 -35
  157. package/assets/Appearance/pureDark/mode/General_PureDarkMode.module.css +0 -71
  158. package/assets/Appearance/pureDark/themes/blue/blue_General_PureDarkTheme.module.css +0 -35
  159. package/assets/Appearance/pureDark/themes/green/green_General_PureDarkTheme.module.css +0 -35
  160. package/assets/Appearance/pureDark/themes/orange/orange_General_PureDarkTheme.module.css +0 -35
  161. package/assets/Appearance/pureDark/themes/red/red_General_PureDarkTheme.module.css +0 -35
  162. package/assets/Appearance/pureDark/themes/yellow/yellow_General_PureDarkTheme.module.css +0 -35
  163. package/es/Theme/constants/index.js +0 -41
  164. package/lib/index.js +0 -382
@@ -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,45 @@
1
+ /** ** Styles *** */
2
+ .imgPreviewerheader {
3
+ position: relative;
4
+ background-color: var(--zd_im_common_bg);
5
+ padding: var(--zd_size15) var(--zd_size40);
6
+ border-bottom: var(--zd_size1) solid var(--zd_im_common_border);
7
+ }
8
+ [dir=ltr] .imgPreviewerheader {
9
+ border-top-left-radius: var(--zd_size5);
10
+ border-top-right-radius: var(--zd_size5);
11
+ }
12
+ [dir=rtl] .imgPreviewerheader {
13
+ border-top-right-radius: var(--zd_size5);
14
+ border-top-left-radius: var(--zd_size5);
15
+ }
16
+
17
+ .imgName {
18
+ color: #000;
19
+ font-size: var(--zd_font_size17);
20
+ font-family: var(--zd_semibold);
21
+ composes: dotted from '../../css/common.module.css';
22
+ max-width: 100% ;
23
+ margin-bottom: var(--zd_size5);
24
+ }
25
+
26
+ .imgSize {
27
+ font-size: var(--zd_font_size13);
28
+ color: #5a616f;
29
+ composes: dotted from '../../css/common.module.css';
30
+ max-width: var(--zd_size150);
31
+ }
32
+
33
+ .navIcon {
34
+ -webkit-box-pack: flex-end;
35
+ -ms-flex-pack: flex-end;
36
+ justify-content: flex-end;
37
+ }
38
+
39
+ [dir=ltr] .attachBtn {
40
+ margin-right: var(--zd_size10);
41
+ }
42
+
43
+ [dir=rtl] .attachBtn {
44
+ margin-left: var(--zd_size10);
45
+ }
@@ -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,47 @@
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-block;
15
+ vertical-align: -webkit-baseline-middle;
16
+ cursor: pointer;
17
+ margin: 0 var(--emoji-margin);
18
+ text-align: center;
19
+ }
20
+
21
+ .emojiContent {
22
+ font-size: var(--emoji-font_size);
23
+ display: block;
24
+ }
25
+
26
+ .emojiHighlight .emojiContent,
27
+ .emojiHover:hover .emojiContent {
28
+ transition: transform 60ms ease-out 60ms;
29
+ }
30
+
31
+ .emojiHighlight .emojiContent, .emojiHover:hover .emojiContent {
32
+ transform: scale(1.2);
33
+ }
34
+
35
+ .emojiHighlight {
36
+ background-color: var(--imlib_chat_components_emoji_hover_bg_color);
37
+ }
38
+
39
+ /* .emojiHover:hover */
40
+
41
+ .emojiActive {
42
+ transform: scale(1.2);
43
+
44
+ }
45
+
46
+
47
+ /* 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;
@@ -0,0 +1,116 @@
1
+ /** ** Libraries *** */
2
+ import React, { useMemo } from 'react';
3
+ /** ** Components *** */
4
+
5
+ import Popup from '@zohodesk/components/es/Popup/Popup';
6
+ import DropBox from '@zohodesk/components/es/DropBox/DropBox';
7
+ import IconButton from '@zohodesk/dot/es/IconButton/IconButton';
8
+ import { Container } from '@zohodesk/components/es/Layout';
9
+ import Emojis from "../Emojis/Emojis";
10
+ /** ** Hooks *** */
11
+
12
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
13
+ import useEmojiPopup from '@zohoim/chat-components-hooks/es/EmojiPopup/useEmojiPopup';
14
+ /** ** Constants *** */
15
+
16
+ import emojiPopupDefaultProps from "./props/defaultProps";
17
+ import emojiPopupPropTypes from "./props/propTypes";
18
+ import { EDITOR_POPUP_PORTAL } from "../constants";
19
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
20
+ /** ** Styles *** */
21
+
22
+ import style from "./css/EmojiPopup.module.css";
23
+
24
+ function EmojiPopupComp(props) {
25
+ const {
26
+ customStyle,
27
+ customProps,
28
+ popupSize,
29
+ defaultPopupPosition,
30
+ tooltip,
31
+ onSelect: propOnSelect,
32
+ needCloseOnSelect,
33
+ onPopupOpen,
34
+ onPopupClose,
35
+
36
+ /** ** Popup Props *** */
37
+ getTargetRef,
38
+ getContainerRef,
39
+ position,
40
+ togglePopup,
41
+ isPopupReady,
42
+ isPopupOpen,
43
+ removeClose,
44
+ closePopupOnly,
45
+ isAbsolutePositioningNeeded,
46
+ positionsOffset
47
+ } = props;
48
+ const {
49
+ iconProps = dummyObject,
50
+ dropBoxProps = dummyObject,
51
+ emojisProps = dummyObject
52
+ } = customProps || dummyObject;
53
+ const {
54
+ onSelect,
55
+ onTogglePopup
56
+ } = useEmojiPopup({
57
+ togglePopup,
58
+ defaultPopupPosition,
59
+ needCloseOnSelect,
60
+ closePopupOnly,
61
+ onSelect: propOnSelect,
62
+ isPopupOpen,
63
+ onPopupOpen,
64
+ onPopupClose
65
+ });
66
+ /* External customization */
67
+
68
+ const newStyle = useMergeStyle(style, customStyle);
69
+ const popupClass = useMemo(() => ({
70
+ customDropBox: newStyle.popup,
71
+ customMobileDropBox: newStyle.mobilePopup,
72
+ customDropBoxWrap: newStyle.popupWrapper,
73
+ customMobileDropBoxWrap: newStyle.mobilePopupWrapper
74
+ }), [newStyle.popup, newStyle.mobilePopup, newStyle.popupWrapper, newStyle.mobilePopupWrapper]);
75
+ return /*#__PURE__*/React.createElement(Container, {
76
+ alignBox: "column"
77
+ }, /*#__PURE__*/React.createElement(IconButton, {
78
+ className: newStyle.iconWrapper,
79
+ eleRef: getTargetRef,
80
+ iconClass: newStyle.icon,
81
+ iconName: "ZD-TT-happiness",
82
+ iconSize: "14",
83
+ isActive: isPopupOpen,
84
+ onClick: onTogglePopup,
85
+ title: tooltip,
86
+ ...iconProps
87
+ }), isPopupOpen ? /*#__PURE__*/React.createElement(DropBox, {
88
+ boxPosition: position,
89
+ customClass: popupClass,
90
+ customStyle: dummyObject,
91
+ getRef: getContainerRef,
92
+ isAbsolutePositioningNeeded: isAbsolutePositioningNeeded,
93
+ isActive: isPopupReady,
94
+ isAnimate: true,
95
+ isArrow: false,
96
+ isRestrictScroll: true,
97
+ onClick: removeClose,
98
+ portalId: EDITOR_POPUP_PORTAL,
99
+ positionsOffset: positionsOffset,
100
+ size: popupSize,
101
+ ...dropBoxProps
102
+ }, /*#__PURE__*/React.createElement(Emojis, {
103
+ onSelect: onSelect,
104
+ ...emojisProps
105
+ })) : null);
106
+ }
107
+
108
+ const EmojiPopup = Popup(EmojiPopupComp, undefined, undefined, {
109
+ isAbsolutePositioningNeeded: false
110
+ });
111
+ EmojiPopupComp.defaultProps = emojiPopupDefaultProps;
112
+ EmojiPopupComp.propTypes = emojiPopupPropTypes;
113
+ EmojiPopup.defaultProps = emojiPopupDefaultProps;
114
+ EmojiPopup.propTypes = emojiPopupPropTypes;
115
+ EmojiPopup.displayName = 'EmojiPopup';
116
+ export default EmojiPopup;
@@ -0,0 +1,50 @@
1
+ /** ** Styles *** */
2
+
3
+ .emojiPopup {
4
+ /** ** Use this class for css customisation *** */
5
+ }
6
+
7
+ .container {
8
+ display: inline-block;
9
+ }
10
+
11
+ .popup {
12
+ /** ** Use this class for css customisation *** */
13
+ }
14
+
15
+ .popupWrapper {
16
+ composes: container;
17
+ }
18
+
19
+ .mobilePopup {
20
+ composes: container;
21
+ }
22
+
23
+ .mobilePopupWrapper {
24
+ composes: container;
25
+ }
26
+
27
+ .icon {
28
+ /* margin-right: 5px; */
29
+ }
30
+
31
+ .iconWrapper {
32
+ color: initial;
33
+ }
34
+
35
+ [dir=ltr] .iconWrapper {
36
+ margin-right: var(--zd_size5) ;
37
+ }
38
+
39
+ [dir=rtl] .iconWrapper {
40
+ margin-left: var(--zd_size5) ;
41
+ }
42
+
43
+ .icon :global .path1:before {
44
+ color: rgba(197,205,199,0.7) !important;
45
+ opacity: 1;
46
+ }
47
+
48
+ .icon :global .path2:before {
49
+ color: #000 !important;
50
+ }
@@ -0,0 +1 @@
1
+ export { default as EmojiPopup } from "./EmojiPopup";
@@ -0,0 +1,11 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const emojiPopupDefaultProps = {
4
+ customStyle: dummyObject,
5
+ customProps: dummyObject,
6
+ popupSize: 'large',
7
+ defaultPopupPosition: 'topCenter',
8
+ tooltip: 'Add Emoji',
9
+ needCloseOnSelect: true
10
+ };
11
+ export default emojiPopupDefaultProps;
@@ -0,0 +1,21 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ /** ** Constants *** */
4
+
5
+ import { popupSize, popupPosition } from "../../constants/propConstants/popupPropConstants";
6
+ const emojiPopupPropTypes = {
7
+ customStyle: PropTypes.object,
8
+ customProps: PropTypes.shape({
9
+ dropBoxProps: PropTypes.object,
10
+ emojisProps: PropTypes.object,
11
+ iconProps: PropTypes.object
12
+ }),
13
+ popupSize: PropTypes.oneOf(popupSize),
14
+ defaultPopupPosition: PropTypes.oneOf(popupPosition),
15
+ tooltip: PropTypes.string,
16
+ onSelect: PropTypes.func,
17
+ needCloseOnSelect: PropTypes.bool,
18
+ onPopupOpen: PropTypes.func,
19
+ onPopupClose: PropTypes.func
20
+ };
21
+ export default emojiPopupPropTypes;
@@ -0,0 +1,81 @@
1
+ /* eslint-disable max-len */
2
+
3
+ /** ** Libraries *** */
4
+ import React from 'react';
5
+ /** ** Components *** */
6
+
7
+ import EmojisList from "../EmojisList/EmojisList";
8
+ import EmojisHeader from "../EmojisHeader/EmojisHeader";
9
+ import EmojisFooter from "../EmojisFooter/EmojisFooter";
10
+ /** ** Hooks *** */
11
+
12
+ import useEmojis from '@zohoim/chat-components-hooks/es/Emojis/useEmojis';
13
+ /** ** Constants *** */
14
+
15
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
16
+ import emojisList from '@zohoim/chat-components-utils/es/constants/emojisList';
17
+ import emojisDefaultProps from "./props/defaultProps";
18
+ import emojisPropTypes from "./props/propTypes";
19
+ export default function Emojis(props) {
20
+ const {
21
+ searchString,
22
+ isShowGroupBasedList,
23
+ isShowSearchBox,
24
+ emojisRowType,
25
+ onSelect: propOnSelect,
26
+ needAutoFocus,
27
+ customProps,
28
+ isShowOnlyContent,
29
+ searchPlaceHolder
30
+ } = props;
31
+ const {
32
+ emojisListProps = dummyObject,
33
+ emojisHeaderProps = dummyObject,
34
+ emojisFooterProps = dummyObject
35
+ } = customProps || dummyObject;
36
+ const {
37
+ searchValue,
38
+ onSearch,
39
+ getSearchRef,
40
+ onChangeGroup,
41
+ selectedGroup,
42
+ getEmojisListMethods,
43
+ onSelect,
44
+ onSelectTab,
45
+ isRenderEmojis,
46
+ isRenderEmojisList
47
+ } = useEmojis({
48
+ searchString,
49
+ isShowSearchBox,
50
+ needAutoFocus,
51
+ onSelect: propOnSelect,
52
+ emojisList,
53
+ isShowGroupBasedList
54
+ });
55
+ return isRenderEmojis ? /*#__PURE__*/React.createElement(React.Fragment, null, isShowSearchBox ? /*#__PURE__*/React.createElement(EmojisHeader, {
56
+ getRef: getSearchRef,
57
+ onChange: onSearch,
58
+ searchPlaceHolder: searchPlaceHolder,
59
+ searchString: searchValue,
60
+ ...emojisHeaderProps
61
+ }) : null, isRenderEmojisList ? /*#__PURE__*/React.createElement(EmojisList, {
62
+ emojisList: emojisList,
63
+ getMethods: getEmojisListMethods,
64
+ isShowGroupBasedList: searchValue ? false : isShowGroupBasedList,
65
+ isShowOnlyContent: isShowOnlyContent,
66
+ onChangeGroup: onChangeGroup,
67
+ onSelect: onSelect,
68
+ rowType: emojisRowType,
69
+ searchString: searchValue,
70
+ selectedGroup: selectedGroup,
71
+ ...emojisListProps
72
+ }) : null, isShowGroupBasedList ? /*#__PURE__*/React.createElement(EmojisFooter, {
73
+ emojisList: emojisList,
74
+ onSelect: onSelectTab,
75
+ selectedTab: selectedGroup,
76
+ ...emojisFooterProps
77
+ }) : null) : null;
78
+ }
79
+ Emojis.propTypes = emojisPropTypes;
80
+ Emojis.defaultProps = emojisDefaultProps;
81
+ Emojis.displayName = 'Emojis';
@@ -0,0 +1 @@
1
+ export { default as Emojis } from "./Emojis";
@@ -0,0 +1,10 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const emojisDefaultProps = {
4
+ customStyle: dummyObject,
5
+ isShowGroupBasedList: true,
6
+ emojisRowType: 'multiple',
7
+ needAutoFocus: true,
8
+ isShowSearchBox: true
9
+ };
10
+ export default emojisDefaultProps;
@@ -0,0 +1,19 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const emojisPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ searchString: PropTypes.string,
6
+ isShowGroupBasedList: PropTypes.bool,
7
+ isShowSearchBox: PropTypes.bool,
8
+ emojisRowType: PropTypes.oneOf(['single', 'multiple']),
9
+ onSelect: PropTypes.func,
10
+ needAutoFocus: PropTypes.bool,
11
+ customProps: PropTypes.shape({
12
+ emojisFooterProps: PropTypes.object,
13
+ emojisHeaderProps: PropTypes.object,
14
+ emojisListProps: PropTypes.object
15
+ }),
16
+ isShowOnlyContent: PropTypes.bool,
17
+ searchPlaceHolder: PropTypes.string
18
+ };
19
+ export default emojisPropTypes;