@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,50 @@
1
+ /** ** Libraries *** */
2
+ import React, { useMemo } from 'react';
3
+ /** ** Components *** */
4
+
5
+ import { Container, Box } from '@zohodesk/components/es/Layout';
6
+ import Emoji from "../Emoji/Emoji";
7
+ /** ** Hooks *** */
8
+
9
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
10
+ /** ** Constants *** */
11
+
12
+ import emojisEmptyStateDefaultProps from "./props/defaultProps";
13
+ import emojisEmptyStatePropTypes from "./props/propTypes";
14
+ /** ** Styles *** */
15
+
16
+ import style from "./css/EmojisEmptyState.module.css";
17
+ export default function EmojisEmptyState(props) {
18
+ const {
19
+ customStyle,
20
+ title,
21
+ description
22
+ } = props;
23
+ /* External customization */
24
+
25
+ const newStyle = useMergeStyle(style, customStyle);
26
+ const {
27
+ emoji,
28
+ name
29
+ } = useMemo(() => ({
30
+ emoji: ['#x1f622'],
31
+ name: ':cry:'
32
+ }), []);
33
+ return /*#__PURE__*/React.createElement(Container, {
34
+ align: "both"
35
+ }, /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Emoji, {
36
+ autoHover: false,
37
+ emoji: emoji,
38
+ emojiName: name,
39
+ needTitle: false
40
+ })), /*#__PURE__*/React.createElement(Box, {
41
+ className: newStyle.title,
42
+ "data-title": title
43
+ }, title), /*#__PURE__*/React.createElement(Box, {
44
+ className: newStyle.description,
45
+ "data-title": description
46
+ }, description));
47
+ }
48
+ EmojisEmptyState.propTypes = emojisEmptyStatePropTypes;
49
+ EmojisEmptyState.defaultProps = emojisEmptyStateDefaultProps;
50
+ EmojisEmptyState.displayName = 'EmojisEmptyState';
@@ -0,0 +1,18 @@
1
+ .title {
2
+ color: var(--zd_im_primary_text);
3
+ font-size: var(--zd_font_size16);
4
+ font-family: var(--zd_semibold);
5
+ max-width: 100% ;
6
+ composes: dotted from '../../css/common.module.css';
7
+ margin-bottom: var(--zd_size7);
8
+ }
9
+
10
+ .description {
11
+ font-size: var(--zd_font_size14);
12
+ color: var(--zd_im_secondary_text);
13
+ display: -webkit-box;
14
+ -webkit-line-clamp: 2;
15
+ -webkit-box-orient: vertical;
16
+ overflow: hidden;
17
+ text-align: center;
18
+ }
@@ -0,0 +1 @@
1
+ export { default as EmojisEmptyState } from "./EmojisEmptyState";
@@ -0,0 +1,9 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const emojisEmptyStateDefaultProps = {
4
+ customStyle: dummyObject,
5
+ title: 'No Emoji(s) found!',
6
+ // eslint-disable-next-line quotes
7
+ description: "Sorry, we couldn't find any emojis."
8
+ };
9
+ export default emojisEmptyStateDefaultProps;
@@ -0,0 +1,8 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const emojisEmptyStatePropTypes = {
4
+ customStyle: PropTypes.object,
5
+ title: PropTypes.string.isRequired,
6
+ description: PropTypes.string
7
+ };
8
+ export default emojisEmptyStatePropTypes;
@@ -0,0 +1,71 @@
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 Emoji from "../Emoji/Emoji";
9
+ /** ** Hooks *** */
10
+
11
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
12
+ /** ** Constants *** */
13
+
14
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
15
+ import emojisFooterDefaultProps from "./props/defaultProps";
16
+ import emojisFooterPropTypes from "./props/propTypes";
17
+ /** ** Styles *** */
18
+
19
+ import style from "./css/EmojisFooter.module.css";
20
+
21
+ const capitalize = function () {
22
+ let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
23
+ return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
24
+ };
25
+
26
+ export default function EmojisFooter(props) {
27
+ const {
28
+ customStyle,
29
+ customProps,
30
+ emojisList = dummyObject,
31
+ onSelect,
32
+ selectedTab
33
+ } = props;
34
+ const {
35
+ emojiProps = dummyObject
36
+ } = customProps || dummyObject;
37
+ /* External customization */
38
+
39
+ const newStyle = useMergeStyle(style, customStyle);
40
+ const emojiCustomStyle = useMemo(() => ({
41
+ emoji: newStyle.emoji
42
+ }), [newStyle.emoji]);
43
+ return /*#__PURE__*/React.createElement(Container, {
44
+ alignBox: "row",
45
+ className: newStyle.footerTab,
46
+ isCover: false
47
+ }, Object.keys(emojisList).map(groupName => {
48
+ const emojis = emojisList[groupName];
49
+ const emojiName = Object.keys(emojis)[0];
50
+ const emoji = emojis[emojiName];
51
+ const id = `emoji_${emojiName}`;
52
+ return /*#__PURE__*/React.createElement(Box, {
53
+ key: id,
54
+ className: newStyle.tabIcon,
55
+ flexible: true
56
+ }, /*#__PURE__*/React.createElement(Emoji, {
57
+ customStyle: emojiCustomStyle,
58
+ customTitle: capitalize(groupName),
59
+ emoji: emoji,
60
+ emojiName: emojiName,
61
+ id: groupName,
62
+ onSelect: onSelect,
63
+ ...emojiProps
64
+ }), selectedTab === groupName ? /*#__PURE__*/React.createElement("span", {
65
+ className: newStyle.tabLine
66
+ }) : null);
67
+ }));
68
+ }
69
+ EmojisFooter.propTypes = emojisFooterPropTypes;
70
+ EmojisFooter.defaultProps = emojisFooterDefaultProps;
71
+ EmojisFooter.displayName = 'EmojisFooter';
@@ -0,0 +1,40 @@
1
+ .footerTab {
2
+ position: relative;
3
+ border-top: 1px solid rgb(238, 242, 239);
4
+ }
5
+
6
+ .tabIcon {
7
+ /* padding: var(--zd_size10) var(--zd_size16); */
8
+ position: relative;
9
+ height: var(--zd_size35) ;
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ text-align: center;
14
+ padding: 1% ;
15
+ }
16
+
17
+ .tabLine {
18
+ display: inline-block;
19
+ position: absolute;
20
+ top: 0 ;
21
+ height: var(--zd_size2) ;
22
+ transition: 0.3s ease;
23
+ width: 100% ;
24
+ background-color: var(--imlib_chat_components_emojiFooter_tabLine);
25
+ }
26
+
27
+ [dir=ltr] .tabLine {
28
+ left: 0 ;
29
+ }
30
+
31
+ [dir=rtl] .tabLine {
32
+ right: 0 ;
33
+ }
34
+
35
+ .emoji{
36
+ width: auto ;
37
+ height: auto ;
38
+ margin: 0 ;
39
+ padding: 8% ;
40
+ }
@@ -0,0 +1 @@
1
+ export { default as EmojisFooter } from "./EmojisFooter";
@@ -0,0 +1,7 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const emojisFooterDefaultProps = {
4
+ customStyle: dummyObject,
5
+ customProps: dummyObject
6
+ };
7
+ export default emojisFooterDefaultProps;
@@ -0,0 +1,12 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const emojisFooterPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ customProps: PropTypes.shape({
6
+ emojiProps: PropTypes.object
7
+ }),
8
+ emojisList: PropTypes.object.isRequired,
9
+ onSelect: PropTypes.func,
10
+ selectedTab: PropTypes.string
11
+ };
12
+ export default emojisFooterPropTypes;
@@ -0,0 +1,65 @@
1
+ /** ** Libraries *** */
2
+ import React from 'react';
3
+ /** ** Components *** */
4
+
5
+ import { Container, Box } from '@zohodesk/components/es/Layout';
6
+ import Icon from '@zohodesk/icons/es/Icon';
7
+ import TextBox from '@zohodesk/components/es/TextBox/TextBox';
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 emojisHeaderDefaultProps from "./props/defaultProps";
15
+ import emojisHeaderPropTypes from "./props/propTypes";
16
+ /** ** Styles *** */
17
+
18
+ import style from "./css/EmojisHeader.module.css";
19
+ export default function EmojisHeader(props) {
20
+ const {
21
+ customStyle,
22
+ customProps = dummyObject,
23
+ searchString,
24
+ getRef,
25
+ onChange,
26
+ searchPlaceHolder
27
+ } = props;
28
+ const {
29
+ textBoxProps = dummyObject
30
+ } = customProps;
31
+ /* External customization */
32
+
33
+ const newStyle = useMergeStyle(style, customStyle);
34
+ return /*#__PURE__*/React.createElement(Box, {
35
+ className: newStyle.container
36
+ }, /*#__PURE__*/React.createElement(Container, {
37
+ align: "vertical",
38
+ alignBox: "row",
39
+ className: newStyle.emojisSearch
40
+ }, /*#__PURE__*/React.createElement(Box, {
41
+ className: newStyle.searchIcon
42
+ }, /*#__PURE__*/React.createElement(Icon, {
43
+ name: "ZD-search",
44
+ size: "13"
45
+ })), /*#__PURE__*/React.createElement(Box, {
46
+ flexible: true
47
+ }, /*#__PURE__*/React.createElement(TextBox, {
48
+ customClass: newStyle.searchInput,
49
+ inputRef: getRef,
50
+ isDisabled: false,
51
+ isReadOnly: false,
52
+ name: "emojiSearch",
53
+ needBorder: false,
54
+ onChange: onChange,
55
+ placeHolder: searchPlaceHolder,
56
+ size: "medium",
57
+ type: "text",
58
+ value: searchString,
59
+ variant: "default",
60
+ ...textBoxProps
61
+ }))));
62
+ }
63
+ EmojisHeader.propTypes = emojisHeaderPropTypes;
64
+ EmojisHeader.defaultProps = emojisHeaderDefaultProps;
65
+ EmojisHeader.displayName = 'EmojisHeader';
@@ -0,0 +1,38 @@
1
+ .container{
2
+ padding: var(--zd_size10) ;
3
+ border-bottom: 1px solid #e4e5e6;
4
+ }
5
+
6
+ .emojisSearch {
7
+ position: relative;
8
+ background-color: var(--imlib_chat_components_emojisHeader_bg_color);
9
+ background-color: #fafafa;
10
+
11
+ background-color: var(--imlib_chat_components_emojiPopup_bg);
12
+ }
13
+
14
+ .searchInput {
15
+ box-sizing: border-box;
16
+ min-height: var(--zd_size38) ;
17
+ outline: 0;
18
+ }
19
+
20
+ [dir=ltr] .searchInput {
21
+ padding-left: var(--zd_size31) ;
22
+ }
23
+
24
+ [dir=rtl] .searchInput {
25
+ padding-right: var(--zd_size31) ;
26
+ }
27
+
28
+ .searchIcon {
29
+ position: absolute;
30
+ }
31
+
32
+ [dir=ltr] .searchIcon {
33
+ left: var(--zd_size10) ;
34
+ }
35
+
36
+ [dir=rtl] .searchIcon {
37
+ right: var(--zd_size10) ;
38
+ }
@@ -0,0 +1 @@
1
+ export { default as EmojisHeader } from "./EmojisHeader";
@@ -0,0 +1,8 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
3
+ const emojisHeaderDefaultProps = {
4
+ customStyle: dummyObject,
5
+ customProps: dummyObject,
6
+ searchPlaceHolder: 'Search...'
7
+ };
8
+ export default emojisHeaderDefaultProps;
@@ -0,0 +1,13 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const emojisHeaderPropTypes = {
4
+ customStyle: PropTypes.object,
5
+ customProps: PropTypes.shape({
6
+ textBoxProps: PropTypes.object
7
+ }),
8
+ searchString: PropTypes.string,
9
+ getRef: PropTypes.func,
10
+ onChange: PropTypes.func,
11
+ searchPlaceHolder: PropTypes.string
12
+ };
13
+ export default emojisHeaderPropTypes;
@@ -0,0 +1,133 @@
1
+ /* eslint-disable max-len */
2
+
3
+ /** ** Libraries *** */
4
+ import React, { useCallback } from 'react';
5
+ /** ** Components *** */
6
+
7
+ import Emoji from "../Emoji/Emoji";
8
+ import EmojisEmptyState from "../EmojisEmptyState/EmojisEmptyState";
9
+ /** ** Hooks *** */
10
+
11
+ import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
12
+ import useEmojisList from '@zohoim/chat-components-hooks/es/EmojisList/useEmojisList';
13
+ /** ** Constants *** */
14
+
15
+ import emojisListDefaultProps from "./props/defaultProps";
16
+ import emojisListPropTypes from "./props/propTypes";
17
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants/emptyConstants';
18
+ /** ** Methods *** */
19
+
20
+ import renderHandler from '@zohoim/chat-components-utils/es/common/renderHandler';
21
+ import cssJSLogic from "./css/cssJSLogic";
22
+ /** ** Styles *** */
23
+
24
+ import style from "./css/EmojisList.module.css";
25
+ export default function EmojisList(props) {
26
+ const {
27
+ customStyle,
28
+ customProps,
29
+ searchString,
30
+ isShowGroupBasedList,
31
+ onChangeGroup,
32
+ getMethods,
33
+ onSelect,
34
+ selectedGroup,
35
+ rowType,
36
+ emojisList: propsEmojisList,
37
+ renderEmpty,
38
+ isShowOnlyContent
39
+ } = props;
40
+ const {
41
+ emojiProps = dummyObject,
42
+ emojisEmptyStateProps = dummyObject
43
+ } = customProps;
44
+ const {
45
+ emojisList,
46
+ setGroupRefs,
47
+ setContainerRef: listContainerRef,
48
+ emptyState,
49
+ isRenderEmptyState,
50
+ isRenderElement
51
+ } = useEmojisList({
52
+ emojisList: propsEmojisList,
53
+ searchString,
54
+ isShowGroupBasedList,
55
+ onChangeGroup,
56
+ getMethods,
57
+ selectedGroup,
58
+ isShowOnlyContent
59
+ });
60
+ const {
61
+ isEmpty,
62
+ isGroupEmpty
63
+ } = emptyState;
64
+ /* External customization */
65
+
66
+ const newStyle = useMergeStyle(style, customStyle);
67
+ /* CSS classnames added based on logic */
68
+
69
+ const {
70
+ emojisListClass,
71
+ groupClass
72
+ } = cssJSLogic({
73
+ rowType,
74
+ isShowGroupBasedList,
75
+ isShowOnlyContent,
76
+ isEmpty
77
+ }, newStyle);
78
+ const renderGroup = useCallback(_ref => {
79
+ let {
80
+ groupName,
81
+ emojis
82
+ } = _ref;
83
+ const isEmptyGroup = isGroupEmpty[groupName];
84
+ return !isEmptyGroup ? /*#__PURE__*/React.createElement("div", {
85
+ key: groupName,
86
+ ref: el => {
87
+ setGroupRefs(el, groupName);
88
+ },
89
+ className: groupClass
90
+ }, isShowGroupBasedList ? /*#__PURE__*/React.createElement("div", {
91
+ className: newStyle.groupName
92
+ }, groupName) : null, Object.keys(emojis).map(emojiName => {
93
+ const emoji = emojis[emojiName];
94
+ const id = `emoji_${emojiName}`;
95
+ return /*#__PURE__*/React.createElement(Emoji, {
96
+ key: id,
97
+ emoji: emoji,
98
+ emojiName: emojiName,
99
+ onSelect: onSelect,
100
+ ...emojiProps
101
+ });
102
+ })) : null;
103
+ }, [emojiProps, isGroupEmpty, groupClass, isShowGroupBasedList, newStyle.groupName, onSelect, setGroupRefs]);
104
+ const renderDefaultEmptyState = useCallback(() => /*#__PURE__*/React.createElement(EmojisEmptyState, { ...emojisEmptyStateProps
105
+ }), [emojisEmptyStateProps]);
106
+ const renderEmptyState = useCallback(() => {
107
+ /* Render EmptyState */
108
+ if (isRenderEmptyState) {
109
+ const emptyState = renderHandler(renderEmpty || renderDefaultEmptyState)();
110
+
111
+ if (emptyState) {
112
+ return emptyState;
113
+ }
114
+
115
+ return null;
116
+ }
117
+
118
+ return null;
119
+ }, [renderEmpty, renderDefaultEmptyState, isRenderEmptyState]);
120
+ return /*#__PURE__*/React.createElement(React.Fragment, null, isRenderElement ? /*#__PURE__*/React.createElement("div", {
121
+ ref: listContainerRef,
122
+ className: emojisListClass
123
+ }, !isEmpty ? Object.keys(emojisList).map(groupName => {
124
+ const emojis = emojisList[groupName];
125
+ return renderGroup({
126
+ groupName,
127
+ emojis
128
+ });
129
+ }) : renderEmptyState()) : null);
130
+ }
131
+ EmojisList.propTypes = emojisListPropTypes;
132
+ EmojisList.defaultProps = emojisListDefaultProps;
133
+ EmojisList.displayName = 'EmojisList';
@@ -0,0 +1,50 @@
1
+ .varClass {
2
+ --emoji-groupName-size: var(--zd_font_size13);
3
+ --emoji-singleList-size: var(--zd_size32);
4
+ --emoji-multipleList-size: var(--zd_size300);
5
+ }
6
+
7
+ .emojisList {
8
+ composes: varClass;
9
+ transition: 0.2s ease;
10
+ flex-direction: row;
11
+ flex-shrink: 0;
12
+ width: 100% ;
13
+ word-wrap: break-word;
14
+ font-size: 0 ;
15
+ }
16
+
17
+ .emojisListHide {
18
+ display: none;
19
+ }
20
+
21
+ .emojisListSingle {
22
+ height: var(--emoji-singleList-size);
23
+ white-space: nowrap;
24
+ overflow-x: auto;
25
+ }
26
+
27
+ .emojisListMultiple {
28
+ height: var(--emoji-multipleList-size);
29
+ overflow-y: auto;
30
+ }
31
+
32
+ .groupName {
33
+ width: 100% ;
34
+ font-size: var(--emoji-groupName-size);
35
+ text-transform: capitalize;
36
+ color: var(--imlib_chat_components_emojiPopup_titleColor);
37
+ padding: var(--zd_size8) var(--zd_size10) ;
38
+ margin-bottom: var(--zd_size5) ;
39
+ }
40
+
41
+ .groupContainer {
42
+ font-size: 0 ;
43
+ }
44
+ .groupSeperate {
45
+ display: inline-block;
46
+ }
47
+
48
+ .groupAll {
49
+ display: inline;
50
+ }
@@ -0,0 +1,25 @@
1
+ /** ** Methods *** */
2
+ import compileClassNames from '@zohodesk/utils/es/compileClassNames';
3
+ export default function cssJSLogic(props, style) {
4
+ const {
5
+ rowType,
6
+ isShowGroupBasedList,
7
+ isShowOnlyContent,
8
+ isEmpty
9
+ } = props;
10
+ const emojisListClass = compileClassNames({
11
+ [style.emojisList]: true,
12
+ [style.emojisListSingle]: rowType === 'single',
13
+ [style.emojisListMultiple]: rowType === 'multiple',
14
+ [style.emojisListHide]: isShowOnlyContent ? isEmpty : false
15
+ });
16
+ const groupClass = compileClassNames({
17
+ [style.groupContainer]: true,
18
+ [style.groupSeperate]: !!isShowGroupBasedList,
19
+ [style.groupAll]: !isShowGroupBasedList
20
+ });
21
+ return {
22
+ emojisListClass,
23
+ groupClass
24
+ };
25
+ }
@@ -0,0 +1 @@
1
+ export { default as EmojisList } from "./EmojisList";
@@ -0,0 +1,10 @@
1
+ /** ** Constants *** */
2
+ import { dummyObject } from '@zohoim/chat-components-utils/es/constants';
3
+ const emojisListDefaultProps = {
4
+ customStyle: dummyObject,
5
+ customProps: dummyObject,
6
+ rowType: 'multiple',
7
+ isShowGroupBasedList: true,
8
+ isShowOnlyContent: false
9
+ };
10
+ export default emojisListDefaultProps;
@@ -0,0 +1,20 @@
1
+ /** ** Libraries *** */
2
+ import PropTypes from 'prop-types';
3
+ const emojisListPropTypes = {
4
+ emojisList: PropTypes.object.isRequired,
5
+ customProps: PropTypes.shape({
6
+ emojiProps: PropTypes.object,
7
+ emojisEmptyStateProps: PropTypes.object
8
+ }),
9
+ customStyle: PropTypes.object,
10
+ getMethods: PropTypes.func,
11
+ isShowGroupBasedList: PropTypes.bool,
12
+ isShowOnlyContent: PropTypes.bool,
13
+ onChangeGroup: PropTypes.func,
14
+ onSelect: PropTypes.func,
15
+ renderEmpty: PropTypes.func,
16
+ rowType: PropTypes.oneOf(['single', 'multiple']),
17
+ searchString: PropTypes.string,
18
+ selectedGroup: PropTypes.string
19
+ };
20
+ export default emojisListPropTypes;
@@ -20,6 +20,7 @@ export default function MessageAction(props) {
20
20
  customProps,
21
21
  closePopup,
22
22
  isDisabled,
23
+ isActive,
23
24
  needMoreActionItemIcon
24
25
  } = props;
25
26
  const {
@@ -50,6 +51,7 @@ export default function MessageAction(props) {
50
51
  ...moreActionItemProps
51
52
  }) : /*#__PURE__*/React.createElement(ActionIcon, {
52
53
  id: id,
54
+ isActive: isActive,
53
55
  isDisabled: isDisabled,
54
56
  onClick: onClick,
55
57
  onMouseEnter: onMouseEnter,
@@ -16,6 +16,7 @@ const messageActionPropTypes = {
16
16
  iconTitle: PropTypes.string,
17
17
  isDisabled: PropTypes.bool,
18
18
  isShowInMore: PropTypes.bool,
19
- needMoreActionItemIcon: PropTypes.bool
19
+ needMoreActionItemIcon: PropTypes.bool,
20
+ isActive: PropTypes.bool
20
21
  };
21
22
  export default messageActionPropTypes;
@@ -103,8 +103,9 @@ export default function MessageActions(props) {
103
103
  const renderMoreIcon = useCallback(() => /*#__PURE__*/React.createElement("div", {
104
104
  className: newStyle.moreIcon
105
105
  }, /*#__PURE__*/React.createElement(MoreIcon, null)), [newStyle.moreIcon]);
106
- const renderMore = useCallback(() => /*#__PURE__*/React.createElement(ActionIconWrapper, {
106
+ const renderMore = useCallback(componentProps => /*#__PURE__*/React.createElement(ActionIconWrapper, {
107
107
  renderIcon: renderMoreIcon,
108
+ ...componentProps,
108
109
  ...actionIconWrapperProps
109
110
  }), [actionIconWrapperProps, renderMoreIcon]);
110
111
  return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(MessageActionsWrapper, {
@@ -2,8 +2,8 @@
2
2
  import React, { useCallback, useMemo } from 'react';
3
3
  /** ** Components *** */
4
4
 
5
- import Popup from '@zohodesk/components/lib/Popup/Popup';
6
- import DropBox from '@zohodesk/components/lib/DropBox/DropBox';
5
+ import Popup from '@zohodesk/components/es/Popup/Popup';
6
+ import DropBox from '@zohodesk/components/es/DropBox/DropBox';
7
7
  /** ** Constants *** */
8
8
 
9
9
  import messageActionsMoreDefaultProps from "./props/defaultProps";
@@ -40,7 +40,9 @@ function MessageActionsMoreComp(props) {
40
40
  isAbsolutePositioningNeeded,
41
41
  positionsOffset
42
42
  } = props;
43
- const moreIcon = renderHandler(renderMoreIcon)();
43
+ const moreIcon = renderHandler(renderMoreIcon)({
44
+ isActive: isPopupReady
45
+ });
44
46
  /* External CSS Customization */
45
47
 
46
48
  const newStyle = useMergeStyle(style, customStyle);
@@ -91,7 +93,7 @@ function MessageActionsMoreComp(props) {
91
93
  }
92
94
 
93
95
  const MessageActionsMore = Popup(MessageActionsMoreComp, undefined, undefined, {
94
- isAbsolutePositioningNeeded: false
96
+ isAbsolutePositioningNeeded: true
95
97
  });
96
98
  MessageActionsMoreComp.defaultProps = messageActionsMoreDefaultProps;
97
99
  MessageActionsMoreComp.propTypes = messageActionsMorePropTypes;