@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,115 @@
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
+ onClick: removeClose,
97
+ portalId: EDITOR_POPUP_PORTAL,
98
+ positionsOffset: positionsOffset,
99
+ size: popupSize,
100
+ ...dropBoxProps
101
+ }, /*#__PURE__*/React.createElement(Emojis, {
102
+ onSelect: onSelect,
103
+ ...emojisProps
104
+ })) : null);
105
+ }
106
+
107
+ const EmojiPopup = Popup(EmojiPopupComp, undefined, undefined, {
108
+ isAbsolutePositioningNeeded: false
109
+ });
110
+ EmojiPopupComp.defaultProps = emojiPopupDefaultProps;
111
+ EmojiPopupComp.propTypes = emojiPopupPropTypes;
112
+ EmojiPopup.defaultProps = emojiPopupDefaultProps;
113
+ EmojiPopup.propTypes = emojiPopupPropTypes;
114
+ EmojiPopup.displayName = 'EmojiPopup';
115
+ export default EmojiPopup;
@@ -0,0 +1,55 @@
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: var(--imlib_chat_components_twotone_icon_bg) !important;
45
+ opacity: 1;
46
+ }
47
+
48
+ .icon :global .path2:before {
49
+ color: var(--imlib_chat_components_twotone_icon_border) !important;
50
+ }
51
+
52
+ .icon :global .path2{
53
+ position: relative;
54
+ z-index: 1;
55
+ }
@@ -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
+ getMethods
31
+ } = props;
32
+ const {
33
+ emojisListProps = dummyObject,
34
+ emojisHeaderProps = dummyObject,
35
+ emojisFooterProps = dummyObject
36
+ } = customProps || dummyObject;
37
+ const {
38
+ searchValue,
39
+ onSearch,
40
+ getSearchRef,
41
+ onChangeGroup,
42
+ selectedGroup,
43
+ getEmojisListMethods,
44
+ onSelect,
45
+ onSelectTab
46
+ } = useEmojis({
47
+ searchString,
48
+ isShowSearchBox,
49
+ needAutoFocus,
50
+ onSelect: propOnSelect,
51
+ emojisList,
52
+ isShowGroupBasedList,
53
+ getMethods
54
+ });
55
+ return /*#__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, /*#__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
+ }), isShowGroupBasedList ? /*#__PURE__*/React.createElement(EmojisFooter, {
73
+ emojisList: emojisList,
74
+ onSelect: onSelectTab,
75
+ selectedTab: selectedGroup,
76
+ ...emojisFooterProps
77
+ }) : 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,20 @@
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
+ getMethods: PropTypes.func
19
+ };
20
+ export default emojisPropTypes;
@@ -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 var(--imlib_chat_components_common_border);
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_emoji_tab_line_color);
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,36 @@
1
+ .container {
2
+ padding: var(--zd_size10) ;
3
+ border-bottom: 1px solid var(--imlib_chat_components_common_border);
4
+ }
5
+
6
+ .emojisSearch {
7
+ position: relative;
8
+ background-color: var(--imlib_chat_components_emoji_popup_search_bg);
9
+ }
10
+
11
+ .searchInput {
12
+ box-sizing: border-box;
13
+ min-height: var(--zd_size38) ;
14
+ outline: 0;
15
+ }
16
+
17
+ [dir=ltr] .searchInput {
18
+ padding-left: var(--zd_size31) ;
19
+ }
20
+
21
+ [dir=rtl] .searchInput {
22
+ padding-right: var(--zd_size31) ;
23
+ }
24
+
25
+ .searchIcon {
26
+ position: absolute;
27
+ color: var(--imlib_chat_components_primary_text);
28
+ }
29
+
30
+ [dir=ltr] .searchIcon {
31
+ left: var(--zd_size10) ;
32
+ }
33
+
34
+ [dir=rtl] .searchIcon {
35
+ right: var(--zd_size10) ;
36
+ }
@@ -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;