@elliemae/ds-chat 2.3.0-next.1 → 2.3.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/cjs/{parts → exported-related}/bubble/ChatBubble.js +8 -10
  2. package/cjs/{parts → exported-related}/bubble/ChatBubbleArrow.js +0 -0
  3. package/cjs/{parts → exported-related}/bubble/index.js +0 -0
  4. package/cjs/exported-related/bubble/props.js +43 -0
  5. package/cjs/{parts → exported-related}/bubble/styled.js +9 -9
  6. package/cjs/{parts → exported-related}/chat-card/ChatCard.js +6 -7
  7. package/cjs/{parts → exported-related}/chat-card/index.js +0 -0
  8. package/cjs/exported-related/chat-card/props.js +22 -0
  9. package/cjs/{parts → exported-related}/chat-card/styled.js +6 -6
  10. package/cjs/{parts → exported-related}/chat-container-header/ChatContainerHeader.js +10 -4
  11. package/cjs/{parts → exported-related}/chat-container-header/helpers.js +0 -0
  12. package/cjs/exported-related/chat-container-header/props.js +18 -0
  13. package/cjs/{parts → exported-related}/chat-container-header/styled.js +3 -3
  14. package/cjs/{parts → exported-related}/chat-empty-state/ChatEmptyState.js +8 -10
  15. package/cjs/exported-related/chat-empty-state/props.js +18 -0
  16. package/cjs/{parts → exported-related}/chat-empty-state/styled.js +2 -2
  17. package/cjs/{parts → exported-related}/chat-sidebar/SideBarChat.js +10 -11
  18. package/cjs/{parts → exported-related}/chat-sidebar/index.js +0 -0
  19. package/cjs/{parts → exported-related}/chat-sidebar/props.js +2 -5
  20. package/cjs/{parts → exported-related/chat-sidebar}/sidebar-button/SidebarButton.js +1 -1
  21. package/cjs/{parts → exported-related/chat-sidebar}/sidebar-button/index.js +0 -0
  22. package/cjs/exported-related/chat-sidebar/sidebar-button/props.js +25 -0
  23. package/cjs/{parts → exported-related/chat-sidebar}/sidebar-button/styled.js +4 -4
  24. package/cjs/{parts → exported-related}/chat-sidebar/styled.js +2 -2
  25. package/cjs/{parts → exported-related}/floating-button/FloatingButton.js +13 -6
  26. package/cjs/{parts → exported-related}/floating-button/index.js +1 -0
  27. package/cjs/{parts → exported-related}/floating-button/props.js +0 -0
  28. package/cjs/{parts → exported-related}/floating-button/styled.js +1 -1
  29. package/cjs/{parts → exported-related}/floating-container/styled.js +1 -1
  30. package/cjs/{parts → exported-related}/grid-influencer/InfluencerContainer.js +1 -1
  31. package/cjs/{parts → exported-related}/grid-influencer/styled.js +2 -2
  32. package/cjs/exported-related/index.js +37 -0
  33. package/cjs/exported-related/message-delimiter/MessageDelimiter.js +53 -0
  34. package/cjs/{parts → exported-related}/message-delimiter/index.js +0 -0
  35. package/cjs/exported-related/message-delimiter/props.js +33 -0
  36. package/cjs/{parts → exported-related}/message-delimiter/styled.js +3 -3
  37. package/cjs/{parts → exported-related}/system-message/SystemMessage.js +6 -8
  38. package/cjs/{parts → exported-related}/system-message/index.js +0 -0
  39. package/cjs/{parts → exported-related}/system-message/props.js +0 -0
  40. package/cjs/{parts → exported-related}/system-message/style.js +5 -5
  41. package/cjs/{parts → exported-related}/tile-button/TileButton.js +7 -9
  42. package/cjs/{parts → exported-related}/tile-button/index.js +0 -0
  43. package/cjs/exported-related/tile-button/props.js +55 -0
  44. package/cjs/{parts → exported-related}/tile-button/styled.js +9 -9
  45. package/cjs/index.js +29 -18
  46. package/cjs/parts/chat-composer/ChatContainerComposer.js +7 -9
  47. package/cjs/parts/chat-container/ChatContainer.js +18 -20
  48. package/cjs/parts/chat-container/styled.js +2 -2
  49. package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js +74 -64
  50. package/cjs/parts/chat-container-messages-list/styled.js +2 -2
  51. package/cjs/parts/index.js +16 -0
  52. package/cjs/react-desc-prop-types.js +116 -0
  53. package/esm/{parts → exported-related}/bubble/ChatBubble.js +7 -9
  54. package/esm/{parts → exported-related}/bubble/ChatBubbleArrow.js +0 -0
  55. package/esm/{parts → exported-related}/bubble/index.js +0 -0
  56. package/esm/{parts → exported-related}/bubble/props.js +14 -24
  57. package/esm/{parts → exported-related}/bubble/styled.js +9 -9
  58. package/esm/{parts → exported-related}/chat-card/ChatCard.js +4 -5
  59. package/esm/{parts → exported-related}/chat-card/index.js +0 -0
  60. package/esm/{parts → exported-related}/chat-card/props.js +9 -2
  61. package/esm/{parts → exported-related}/chat-card/styled.js +6 -6
  62. package/esm/{parts → exported-related}/chat-container-header/ChatContainerHeader.js +9 -4
  63. package/esm/{parts → exported-related}/chat-container-header/helpers.js +0 -0
  64. package/esm/exported-related/chat-container-header/props.js +13 -0
  65. package/esm/{parts → exported-related}/chat-container-header/styled.js +3 -3
  66. package/esm/{parts → exported-related}/chat-empty-state/ChatEmptyState.js +7 -9
  67. package/esm/exported-related/chat-empty-state/props.js +13 -0
  68. package/esm/{parts → exported-related}/chat-empty-state/styled.js +2 -2
  69. package/esm/{parts → exported-related}/chat-sidebar/SideBarChat.js +8 -9
  70. package/esm/{parts → exported-related}/chat-sidebar/index.js +0 -0
  71. package/esm/{parts → exported-related}/chat-sidebar/props.js +2 -5
  72. package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/SidebarButton.js +1 -1
  73. package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/index.js +0 -0
  74. package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/props.js +3 -4
  75. package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/styled.js +4 -4
  76. package/esm/{parts → exported-related}/chat-sidebar/styled.js +2 -2
  77. package/esm/exported-related/floating-button/FloatingButton.js +33 -0
  78. package/esm/exported-related/floating-button/index.js +1 -0
  79. package/esm/{parts → exported-related}/floating-button/props.js +0 -0
  80. package/esm/{parts → exported-related}/floating-button/styled.js +1 -1
  81. package/esm/{parts → exported-related}/floating-container/styled.js +1 -1
  82. package/esm/{parts → exported-related}/grid-influencer/InfluencerContainer.js +1 -1
  83. package/esm/{parts → exported-related}/grid-influencer/styled.js +2 -2
  84. package/esm/exported-related/index.js +11 -0
  85. package/esm/exported-related/message-delimiter/MessageDelimiter.js +43 -0
  86. package/esm/{parts → exported-related}/message-delimiter/index.js +0 -0
  87. package/esm/exported-related/message-delimiter/props.js +24 -0
  88. package/esm/{parts → exported-related}/message-delimiter/styled.js +3 -3
  89. package/esm/{parts → exported-related}/system-message/SystemMessage.js +4 -6
  90. package/esm/{parts → exported-related}/system-message/index.js +0 -0
  91. package/esm/{parts → exported-related}/system-message/props.js +0 -0
  92. package/esm/{parts → exported-related}/system-message/style.js +5 -5
  93. package/esm/{parts → exported-related}/tile-button/TileButton.js +5 -7
  94. package/esm/{parts → exported-related}/tile-button/index.js +0 -0
  95. package/esm/{parts → exported-related}/tile-button/props.js +3 -3
  96. package/esm/{parts → exported-related}/tile-button/styled.js +9 -9
  97. package/esm/index.js +14 -12
  98. package/esm/parts/chat-composer/ChatContainerComposer.js +9 -11
  99. package/esm/parts/chat-container/ChatContainer.js +16 -18
  100. package/esm/parts/chat-container/styled.js +2 -2
  101. package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js +70 -60
  102. package/esm/parts/chat-container-messages-list/styled.js +2 -2
  103. package/esm/parts/index.js +3 -0
  104. package/esm/react-desc-prop-types.js +103 -0
  105. package/package.json +172 -216
  106. package/types/exported-related/bubble/ChatBubble.d.ts +5 -0
  107. package/types/{parts → exported-related}/bubble/ChatBubbleArrow.d.ts +1 -1
  108. package/types/{parts → exported-related}/bubble/index.d.ts +0 -0
  109. package/types/{parts → exported-related}/bubble/props.d.ts +7 -26
  110. package/types/{parts → exported-related}/bubble/styled.d.ts +11 -7
  111. package/types/{parts → exported-related}/bubble/tests/ChatBubble.test.d.ts +0 -0
  112. package/types/exported-related/chat-card/ChatCard.d.ts +5 -0
  113. package/types/{parts → exported-related}/chat-card/index.d.ts +0 -0
  114. package/types/exported-related/chat-card/props.d.ts +14 -0
  115. package/types/{parts → exported-related}/chat-card/styled.d.ts +0 -0
  116. package/types/exported-related/chat-container-header/ChatContainerHeader.d.ts +5 -0
  117. package/types/{parts → exported-related}/chat-container-header/helpers.d.ts +2 -2
  118. package/types/exported-related/chat-container-header/props.d.ts +10 -0
  119. package/types/{parts → exported-related}/chat-container-header/styled.d.ts +0 -0
  120. package/types/exported-related/chat-empty-state/ChatEmptyState.d.ts +5 -0
  121. package/types/exported-related/chat-empty-state/props.d.ts +10 -0
  122. package/types/{parts → exported-related}/chat-empty-state/styled.d.ts +0 -0
  123. package/types/exported-related/chat-sidebar/SideBarChat.d.ts +5 -0
  124. package/types/{parts → exported-related}/chat-sidebar/index.d.ts +0 -0
  125. package/types/{parts → exported-related}/chat-sidebar/props.d.ts +4 -4
  126. package/types/exported-related/chat-sidebar/sidebar-button/SidebarButton.d.ts +13 -0
  127. package/types/{parts → exported-related/chat-sidebar}/sidebar-button/index.d.ts +0 -0
  128. package/types/exported-related/chat-sidebar/sidebar-button/props.d.ts +18 -0
  129. package/types/{parts → exported-related/chat-sidebar}/sidebar-button/styled.d.ts +0 -0
  130. package/types/{parts → exported-related}/chat-sidebar/styled.d.ts +0 -0
  131. package/types/exported-related/floating-button/FloatingButton.d.ts +5 -0
  132. package/types/{parts → exported-related}/floating-button/index.d.ts +0 -0
  133. package/types/{parts → exported-related}/floating-button/props.d.ts +0 -0
  134. package/types/{parts → exported-related}/floating-button/styled.d.ts +0 -0
  135. package/types/{parts → exported-related}/floating-container/styled.d.ts +0 -0
  136. package/types/{parts → exported-related}/grid-influencer/InfluencerContainer.d.ts +0 -0
  137. package/types/{parts → exported-related}/grid-influencer/styled.d.ts +0 -0
  138. package/types/exported-related/index.d.ts +10 -0
  139. package/types/exported-related/message-delimiter/MessageDelimiter.d.ts +5 -0
  140. package/types/{parts → exported-related}/message-delimiter/index.d.ts +0 -0
  141. package/types/exported-related/message-delimiter/props.d.ts +7 -0
  142. package/types/{parts → exported-related}/message-delimiter/styled.d.ts +0 -0
  143. package/types/exported-related/system-message/SystemMessage.d.ts +5 -0
  144. package/types/{parts → exported-related}/system-message/index.d.ts +0 -0
  145. package/types/{parts → exported-related}/system-message/props.d.ts +0 -0
  146. package/types/{parts → exported-related}/system-message/style.d.ts +0 -0
  147. package/types/exported-related/tile-button/TileButton.d.ts +5 -0
  148. package/types/{parts → exported-related}/tile-button/index.d.ts +0 -0
  149. package/types/exported-related/tile-button/props.d.ts +46 -0
  150. package/types/{parts → exported-related}/tile-button/styled.d.ts +1 -1
  151. package/types/index.d.ts +4 -13
  152. package/types/parts/chat-composer/ChatContainerComposer.d.ts +4 -59
  153. package/types/parts/chat-composer/styled.d.ts +4 -3
  154. package/types/parts/chat-container/ChatContainer.d.ts +4 -62
  155. package/types/parts/chat-container-messages-list/ChatContainerMessagesList.d.ts +4 -47
  156. package/types/parts/chat-container-messages-list/index.d.ts +1 -1
  157. package/types/parts/chat-container-messages-list/styled.d.ts +1 -2
  158. package/types/parts/index.d.ts +3 -0
  159. package/types/react-desc-prop-types.d.ts +94 -0
  160. package/cjs/index.d.js +0 -2
  161. package/cjs/parts/bubble/config/useValidateProps.js +0 -31
  162. package/cjs/parts/bubble/props.js +0 -57
  163. package/cjs/parts/chat-card/config/useValidateProps.js +0 -11
  164. package/cjs/parts/chat-card/props.js +0 -14
  165. package/cjs/parts/chat-composer/config/useValidateProps.js +0 -11
  166. package/cjs/parts/chat-composer/props.js +0 -44
  167. package/cjs/parts/chat-container/config/useValidateProps.js +0 -11
  168. package/cjs/parts/chat-container/index.js +0 -10
  169. package/cjs/parts/chat-container/props.js +0 -49
  170. package/cjs/parts/chat-container-messages-list/config/useValidateProps.js +0 -11
  171. package/cjs/parts/chat-container-messages-list/props.js +0 -30
  172. package/cjs/parts/chat-empty-state/config/useValidateProps.js +0 -11
  173. package/cjs/parts/chat-empty-state/props.js +0 -17
  174. package/cjs/parts/chat-sidebar/config/useValidateProps.js +0 -11
  175. package/cjs/parts/message-delimiter/MessageDelimiter.js +0 -41
  176. package/cjs/parts/message-delimiter/config/useValidateProps.js +0 -11
  177. package/cjs/parts/message-delimiter/props.js +0 -23
  178. package/cjs/parts/sidebar-button/props.js +0 -30
  179. package/cjs/parts/system-message/config/useValidateProps.js +0 -11
  180. package/cjs/parts/tile-button/config/useValidateProps.js +0 -11
  181. package/cjs/parts/tile-button/props.js +0 -55
  182. package/cjs/prop-types.js +0 -33
  183. package/esm/index.d.js +0 -1
  184. package/esm/parts/bubble/config/useValidateProps.js +0 -27
  185. package/esm/parts/chat-card/config/useValidateProps.js +0 -7
  186. package/esm/parts/chat-composer/config/useValidateProps.js +0 -7
  187. package/esm/parts/chat-composer/props.js +0 -39
  188. package/esm/parts/chat-container/config/useValidateProps.js +0 -7
  189. package/esm/parts/chat-container/index.js +0 -1
  190. package/esm/parts/chat-container/props.js +0 -44
  191. package/esm/parts/chat-container-messages-list/config/useValidateProps.js +0 -7
  192. package/esm/parts/chat-container-messages-list/props.js +0 -25
  193. package/esm/parts/chat-empty-state/config/useValidateProps.js +0 -7
  194. package/esm/parts/chat-empty-state/props.js +0 -12
  195. package/esm/parts/chat-sidebar/config/useValidateProps.js +0 -7
  196. package/esm/parts/floating-button/FloatingButton.js +0 -27
  197. package/esm/parts/floating-button/index.js +0 -1
  198. package/esm/parts/message-delimiter/MessageDelimiter.js +0 -32
  199. package/esm/parts/message-delimiter/config/useValidateProps.js +0 -7
  200. package/esm/parts/message-delimiter/props.js +0 -18
  201. package/esm/parts/system-message/config/useValidateProps.js +0 -7
  202. package/esm/parts/tile-button/config/useValidateProps.js +0 -7
  203. package/esm/prop-types.js +0 -28
  204. package/types/index.d.d.ts +0 -37
  205. package/types/parts/bubble/ChatBubble.d.ts +0 -30
  206. package/types/parts/bubble/config/useValidateProps.d.ts +0 -2
  207. package/types/parts/chat-card/ChatCard.d.ts +0 -33
  208. package/types/parts/chat-card/config/useValidateProps.d.ts +0 -2
  209. package/types/parts/chat-card/props.d.ts +0 -29
  210. package/types/parts/chat-composer/config/useValidateProps.d.ts +0 -2
  211. package/types/parts/chat-container/config/useValidateProps.d.ts +0 -2
  212. package/types/parts/chat-container/index.d.ts +0 -1
  213. package/types/parts/chat-container-header/ChatContainerHeader.d.ts +0 -2
  214. package/types/parts/chat-container-messages-list/config/useValidateProps.d.ts +0 -2
  215. package/types/parts/chat-empty-state/ChatEmptyState.d.ts +0 -21
  216. package/types/parts/chat-empty-state/config/useValidateProps.d.ts +0 -2
  217. package/types/parts/chat-empty-state/props.d.ts +0 -15
  218. package/types/parts/chat-sidebar/SideBarChat.d.ts +0 -48
  219. package/types/parts/chat-sidebar/config/useValidateProps.d.ts +0 -2
  220. package/types/parts/floating-button/FloatingButton.d.ts +0 -18
  221. package/types/parts/message-delimiter/MessageDelimiter.d.ts +0 -31
  222. package/types/parts/message-delimiter/config/useValidateProps.d.ts +0 -2
  223. package/types/parts/message-delimiter/props.d.ts +0 -26
  224. package/types/parts/sidebar-button/SidebarButton.d.ts +0 -24
  225. package/types/parts/sidebar-button/props.d.ts +0 -29
  226. package/types/parts/system-message/SystemMessage.d.ts +0 -23
  227. package/types/parts/system-message/config/useValidateProps.d.ts +0 -2
  228. package/types/parts/tile-button/TileButton.d.ts +0 -75
  229. package/types/parts/tile-button/config/useValidateProps.d.ts +0 -2
  230. package/types/parts/tile-button/props.d.ts +0 -88
  231. package/types/prop-types.d.ts +0 -33
@@ -11,14 +11,13 @@ var _jsx = require('@babel/runtime/helpers/jsx');
11
11
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
12
  var React = require('react');
13
13
  var lodash = require('lodash');
14
- var reactDesc = require('react-desc');
14
+ var dsPropsHelpers = require('@elliemae/ds-props-helpers');
15
15
  var DSIndeterminateProgressIndicator = require('@elliemae/ds-indeterminate-progress-indicator');
16
16
  var DSBanner = require('@elliemae/ds-banner');
17
17
  var ChatContainerComposer = require('../chat-composer/ChatContainerComposer.js');
18
18
  var ChatContainerMessagesList = require('../chat-container-messages-list/ChatContainerMessagesList.js');
19
- var props = require('./props.js');
19
+ var reactDescPropTypes = require('../../react-desc-prop-types.js');
20
20
  var styled = require('./styled.js');
21
- var useValidateProps = require('./config/useValidateProps.js');
22
21
  var jsxRuntime = require('react/jsx-runtime');
23
22
 
24
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -35,10 +34,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
35
34
 
36
35
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
36
 
38
- const ChatContainer = props$1 => {
37
+ const ChatContainer = props => {
39
38
  var _messagesListProps$me2, _containerRef$current;
40
39
 
41
- useValidateProps.useValidateProps(props$1, props.containerProps);
40
+ const propsWithDefault = dsPropsHelpers.useMemoMergePropsWithDefault(props, reactDescPropTypes.defaultProps);
41
+ dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefault, reactDescPropTypes.ChatContainerPropTypes);
42
+ const globalAttributes = dsPropsHelpers.useGetGlobalAttributes(propsWithDefault);
42
43
  const {
43
44
  sendingText,
44
45
  sendingMessages,
@@ -54,9 +55,8 @@ const ChatContainer = props$1 => {
54
55
  device,
55
56
  isLoading,
56
57
  hasMoreItems,
57
- getMoreMessages,
58
- ariaLabel
59
- } = props$1;
58
+ getMoreMessages
59
+ } = propsWithDefault;
60
60
  const bannerRef = React__default["default"].useRef({
61
61
  focusOnWrapper: lodash.noop,
62
62
  focusOnLink: lodash.noop
@@ -108,11 +108,10 @@ const ChatContainer = props$1 => {
108
108
  actionRef.current.focusOnBannerLink = bannerRef.current.focusOnLink;
109
109
  }
110
110
  }, [actionRef]);
111
- return /*#__PURE__*/jsxRuntime.jsxs(Container, {
111
+ return /*#__PURE__*/jsxRuntime.jsxs(Container, _objectSpread(_objectSpread({}, globalAttributes), {}, {
112
112
  rows: ['minmax(0, 1fr)', 'auto'],
113
113
  ref: containerRef,
114
114
  role: "region",
115
- "aria-label": ariaLabel,
116
115
  children: [/*#__PURE__*/_jsx__default["default"]("div", {
117
116
  style: {
118
117
  position: 'relative',
@@ -127,7 +126,7 @@ const ChatContainer = props$1 => {
127
126
  sendingText: sendingText,
128
127
  bannerPosition: bannerPosition,
129
128
  bannerRef: bannerRef
130
- })), ['top', 'bottom'].includes(isLoading) ? /*#__PURE__*/_jsx__default["default"](styled.StyledIndicatorContainer, {
129
+ })), isLoading && ['top', 'bottom'].includes(isLoading) ? /*#__PURE__*/_jsx__default["default"](styled.StyledIndicatorContainer, {
131
130
  isLoading: isLoading,
132
131
  "data-testid": "ds-chat-loading-indicator"
133
132
  }, void 0, _DSIndeterminateProgr || (_DSIndeterminateProgr = /*#__PURE__*/_jsx__default["default"](DSIndeterminateProgressIndicator__default["default"], {
@@ -138,17 +137,17 @@ const ChatContainer = props$1 => {
138
137
  isLoading: bannerPosition
139
138
  }, void 0, /*#__PURE__*/_jsx__default["default"](DSBanner__default["default"], {
140
139
  showCloseButton: true,
141
- label: bannerProps.label || 'Unread messages',
140
+ label: (bannerProps === null || bannerProps === void 0 ? void 0 : bannerProps.label) || 'Unread messages',
142
141
  containerProps: {
143
142
  id: 'ds-chat-banner'
144
143
  },
145
144
  actionLink: {
146
- label: bannerProps.viewLabel || 'View',
147
- onClick: bannerProps.onView
145
+ label: (bannerProps === null || bannerProps === void 0 ? void 0 : bannerProps.viewLabel) || 'View',
146
+ onClick: bannerProps === null || bannerProps === void 0 ? void 0 : bannerProps.onView
148
147
  },
149
- onClose: bannerProps.onClose,
148
+ onClose: bannerProps === null || bannerProps === void 0 ? void 0 : bannerProps.onClose,
150
149
  isOpen: true,
151
- type: bannerProps.type || DSBanner.BANNER_TYPES.INFO,
150
+ type: (bannerProps === null || bannerProps === void 0 ? void 0 : bannerProps.type) || DSBanner.BANNER_TYPES.INFO,
152
151
  actionRef: bannerRef
153
152
  })), sendingMessages && sendingMessages.length > 0 ? /*#__PURE__*/_jsx__default["default"](styled.StyledIndicatorContainer, {
154
153
  isLoading: "bottom",
@@ -164,12 +163,11 @@ const ChatContainer = props$1 => {
164
163
  maxHeight: (((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.clientHeight) || 0) / 2,
165
164
  actionRef: actionRef || listRef
166
165
  }))]
167
- });
166
+ }));
168
167
  };
169
168
 
170
- ChatContainer.defaultProps = props.defaultProps;
171
- const ChatContainerWithSchema = reactDesc.describe(ChatContainer);
172
- ChatContainerWithSchema.propTypes = props.containerProps;
169
+ const ChatContainerWithSchema = dsPropsHelpers.describe(ChatContainer);
170
+ ChatContainerWithSchema.propTypes = reactDescPropTypes.ChatContainerPropTypes;
173
171
 
174
172
  exports.ChatContainer = ChatContainer;
175
173
  exports.ChatContainerWithSchema = ChatContainerWithSchema;
@@ -4,9 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var styled = require('styled-components');
6
6
  var dsGrid = require('@elliemae/ds-grid');
7
- var styled$1 = require('../bubble/styled.js');
7
+ var styled$1 = require('../../exported-related/bubble/styled.js');
8
8
  var styled$2 = require('../chat-composer/styled.js');
9
- var style = require('../system-message/style.js');
9
+ var style = require('../../exported-related/system-message/style.js');
10
10
 
11
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
12
 
@@ -16,16 +16,16 @@ require('core-js/modules/esnext.iterator.find.js');
16
16
  require('core-js/modules/esnext.async-iterator.filter.js');
17
17
  require('core-js/modules/esnext.iterator.filter.js');
18
18
  var React = require('react');
19
- var reactDesc = require('react-desc');
19
+ var dsPropsHelpers = require('@elliemae/ds-props-helpers');
20
20
  var reactVirtual = require('react-virtual');
21
21
  var DSButton = require('@elliemae/ds-button');
22
22
  var lodash = require('lodash');
23
- var ChatBubble = require('../bubble/ChatBubble.js');
24
- var props$1 = require('../bubble/props.js');
25
- var MessageDelimiter = require('../message-delimiter/MessageDelimiter.js');
26
- var SystemMessage = require('../system-message/SystemMessage.js');
23
+ var ChatBubble = require('../../exported-related/bubble/ChatBubble.js');
24
+ var props = require('../../exported-related/bubble/props.js');
25
+ var MessageDelimiter = require('../../exported-related/message-delimiter/MessageDelimiter.js');
26
+ var SystemMessage = require('../../exported-related/system-message/SystemMessage.js');
27
27
  var styled = require('./styled.js');
28
- var props = require('./props.js');
28
+ var reactDescPropTypes = require('../../react-desc-prop-types.js');
29
29
  var jsxRuntime = require('react/jsx-runtime');
30
30
 
31
31
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -53,7 +53,10 @@ const getPadding = _ref => {
53
53
  return padding;
54
54
  };
55
55
 
56
- const ChatContainerMessagesList = props => {
56
+ const ChatContainerMessagesList = props$1 => {
57
+ const propsWithDefault = dsPropsHelpers.useMemoMergePropsWithDefault(props$1, reactDescPropTypes.defaultPropsMessagesList);
58
+ dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefault, reactDescPropTypes.ChatContainerMessagesListPropTypes);
59
+ const globalAttributes = dsPropsHelpers.useGetGlobalAttributes(propsWithDefault);
57
60
  const {
58
61
  sendingText,
59
62
  bannerPosition,
@@ -65,7 +68,7 @@ const ChatContainerMessagesList = props => {
65
68
  hasMoreItems,
66
69
  isLoading,
67
70
  bannerRef
68
- } = props;
71
+ } = propsWithDefault;
69
72
  const pendingOnScroll = React__default["default"].useRef(false);
70
73
  const loadMoreRef = React__default["default"].useRef(null);
71
74
  const virtualListRef = React__default["default"].useRef(); // estimateSize should not be really required given what was stated on
@@ -76,7 +79,7 @@ const ChatContainerMessagesList = props => {
76
79
  totalSize,
77
80
  virtualItems
78
81
  } = reactVirtual.useVirtual(_objectSpread(_objectSpread({
79
- size: messages.length,
82
+ size: messages === null || messages === void 0 ? void 0 : messages.length,
80
83
  parentRef: virtualListRef,
81
84
  overscan: 15
82
85
  }, getPadding({
@@ -126,6 +129,9 @@ const ChatContainerMessagesList = props => {
126
129
  onlyFocus(index);
127
130
  onScrollStop();
128
131
  }, [onScrollStop, onlyFocus, vScroll]);
132
+ const checkPendingOnScroll = React__default["default"].useCallback(() => {
133
+ if (pendingOnScroll.current === true) onScrollStop();
134
+ }, [onScrollStop]);
129
135
  React__default["default"].useEffect(() => {
130
136
  if (actionRef && actionRef.current) {
131
137
  actionRef.current.scrollToIndex = function (a) {
@@ -155,6 +161,26 @@ const ChatContainerMessagesList = props => {
155
161
  };
156
162
  }
157
163
  }, [actionRef, onScrollStop, onlyFocus, scrollAndFocus, vScroll]);
164
+ React__default["default"].useEffect(() => {
165
+ let handlerCallback = null;
166
+ const localVirtualRef = virtualListRef.current;
167
+
168
+ const onScroll = () => {
169
+ if (handlerCallback) clearTimeout(handlerCallback);
170
+ handlerCallback = setTimeout(onScrollStop, 300);
171
+ };
172
+
173
+ if (onScrollEnds) {
174
+ virtualListRef.current.addEventListener('scroll', onScroll);
175
+ }
176
+
177
+ document.addEventListener('visibilitychange', checkPendingOnScroll);
178
+ return () => {
179
+ if (handlerCallback) clearTimeout(handlerCallback);
180
+ if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);
181
+ document.removeEventListener('visibilitychange', checkPendingOnScroll);
182
+ };
183
+ }, [onScrollStop, onScrollEnds, checkPendingOnScroll]);
158
184
  const handleKey = React__default["default"].useCallback(e => {
159
185
  const {
160
186
  key
@@ -181,7 +207,7 @@ const ChatContainerMessagesList = props => {
181
207
  case 'ArrowDown':
182
208
  e.preventDefault();
183
209
 
184
- if (index < messages.length - 1) {
210
+ if (index < (messages === null || messages === void 0 ? void 0 : messages.length) - 1) {
185
211
  virtualListRef.current.querySelector("[data-index=\"".concat(index + 1, "\"]")).focus();
186
212
  }
187
213
 
@@ -194,7 +220,7 @@ const ChatContainerMessagesList = props => {
194
220
 
195
221
  case 'End':
196
222
  e.preventDefault();
197
- scrollAndFocus(messages.length - 1);
223
+ scrollAndFocus((messages === null || messages === void 0 ? void 0 : messages.length) - 1);
198
224
  break;
199
225
 
200
226
  case 'Tab':
@@ -205,8 +231,10 @@ const ChatContainerMessagesList = props => {
205
231
  (_loadMoreRef$current2 = loadMoreRef.current) === null || _loadMoreRef$current2 === void 0 ? void 0 : _loadMoreRef$current2.focus();
206
232
  } else if (hasMoreItems === 'top' && e.shiftKey) ; else if (!e.shiftKey) {
207
233
  if (bannerPosition) {
234
+ var _bannerRef$current;
235
+
208
236
  e.preventDefault();
209
- bannerRef.current.focusOnWrapper();
237
+ bannerRef === null || bannerRef === void 0 ? void 0 : (_bannerRef$current = bannerRef.current) === null || _bannerRef$current === void 0 ? void 0 : _bannerRef$current.focusOnWrapper();
210
238
  }
211
239
  } else {
212
240
  var _virtualListRef$curre4;
@@ -217,7 +245,7 @@ const ChatContainerMessagesList = props => {
217
245
 
218
246
  break;
219
247
  }
220
- }, [bannerRef, hasMoreItems, messages.length, bannerPosition, scrollAndFocus]);
248
+ }, [bannerRef, hasMoreItems, messages === null || messages === void 0 ? void 0 : messages.length, bannerPosition, scrollAndFocus]);
221
249
  const handleListKey = React__default["default"].useCallback(e => {
222
250
  const {
223
251
  key
@@ -228,7 +256,9 @@ const ChatContainerMessagesList = props => {
228
256
  e.preventDefault();
229
257
 
230
258
  if (document.activeElement !== loadMoreRef.current) {
231
- onlyFocus(onScrollStop().shift());
259
+ var _onScrollStop;
260
+
261
+ onlyFocus((_onScrollStop = onScrollStop()) === null || _onScrollStop === void 0 ? void 0 : _onScrollStop.shift());
232
262
  }
233
263
 
234
264
  break;
@@ -239,7 +269,9 @@ const ChatContainerMessagesList = props => {
239
269
  if (document.activeElement === loadMoreRef.current) {
240
270
  virtualListRef.current.querySelector("[data-index=\"0\"]").focus();
241
271
  } else {
242
- onlyFocus(onScrollStop().pop());
272
+ var _onScrollStop2;
273
+
274
+ onlyFocus((_onScrollStop2 = onScrollStop()) === null || _onScrollStop2 === void 0 ? void 0 : _onScrollStop2.pop());
243
275
  }
244
276
 
245
277
  break;
@@ -251,7 +283,7 @@ const ChatContainerMessagesList = props => {
251
283
 
252
284
  case 'End':
253
285
  e.preventDefault();
254
- scrollAndFocus(messages.length - 1);
286
+ scrollAndFocus((messages === null || messages === void 0 ? void 0 : messages.length) - 1);
255
287
  break;
256
288
 
257
289
  case 'Tab':
@@ -282,30 +314,7 @@ const ChatContainerMessagesList = props => {
282
314
 
283
315
  break;
284
316
  }
285
- }, [actionRef, hasMoreItems, messages.length, onScrollStop, onlyFocus, scrollAndFocus]);
286
- const checkPendingOnScroll = React__default["default"].useCallback(() => {
287
- if (pendingOnScroll.current === true) onScrollStop();
288
- }, [onScrollStop]);
289
- React__default["default"].useEffect(() => {
290
- let handlerCallback = null;
291
- const localVirtualRef = virtualListRef.current;
292
-
293
- const onScroll = () => {
294
- if (handlerCallback) clearTimeout(handlerCallback);
295
- handlerCallback = setTimeout(onScrollStop, 300);
296
- };
297
-
298
- if (onScrollEnds) {
299
- virtualListRef.current.addEventListener('scroll', onScroll);
300
- }
301
-
302
- document.addEventListener('visibilitychange', checkPendingOnScroll);
303
- return () => {
304
- if (handlerCallback) clearTimeout(handlerCallback);
305
- if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);
306
- document.removeEventListener('visibilitychange', checkPendingOnScroll);
307
- };
308
- }, [onScrollStop, onScrollEnds, checkPendingOnScroll]);
317
+ }, [actionRef, hasMoreItems, messages === null || messages === void 0 ? void 0 : messages.length, onScrollStop, onlyFocus, scrollAndFocus]);
309
318
  const render = React__default["default"].useMemo(() => virtualItems.map(virtualItem => {
310
319
  const {
311
320
  index,
@@ -331,39 +340,40 @@ const ChatContainerMessagesList = props => {
331
340
  role: "listitem",
332
341
  children: /*#__PURE__*/_jsx__default["default"](styled.StyledWrapperListItem, {
333
342
  type: row.type
334
- }, void 0, row.type === props$1.BUBBLE_TYPES.SENDER || row.type === props$1.BUBBLE_TYPES.RECIPIENT ?
343
+ }, void 0, row.type === props.BUBBLE_TYPES.SENDER || row.type === props.BUBBLE_TYPES.RECIPIENT ?
335
344
  /*#__PURE__*/
336
345
  // eslint-disable-next-line eslint-comments/no-unlimited-disable
337
346
  jsxRuntime.jsx(ChatBubble.ChatBubble, _objectSpread(_objectSpread({}, row), {}, {
338
347
  helpMessage: isSending ? sendingText : row.helpMessage
339
- })) : null, row.type === props$1.BUBBLE_TYPES.DELIMITER ? /*#__PURE__*/jsxRuntime.jsx(MessageDelimiter.MessageDelimiter, _objectSpread({}, row)) : null, row.type === props$1.BUBBLE_TYPES.SYSTEM ? /*#__PURE__*/jsxRuntime.jsx(SystemMessage.SystemMessage, _objectSpread({}, row)) : null)
348
+ })) : null, row.type === props.BUBBLE_TYPES.DELIMITER ? /*#__PURE__*/jsxRuntime.jsx(MessageDelimiter.MessageDelimiter, _objectSpread({}, row)) : null, row.type === props.BUBBLE_TYPES.SYSTEM ? /*#__PURE__*/jsxRuntime.jsx(SystemMessage.SystemMessage, _objectSpread({}, row)) : null)
340
349
  }, "ds-chat-bubble-".concat(index, "-").concat(row.dsId, "-").concat(row.type));
341
350
  }), [virtualItems, messages, sendingMessages, handleKey, sendingText]);
342
- return /*#__PURE__*/_jsx__default["default"](styled.StyledWrapper, {}, void 0, /*#__PURE__*/jsxRuntime.jsx(styled.StyledChatContainerContentList, {
343
- "data-testid": "chat-thread-container",
344
- tabIndex: 0,
345
- "aria-live": "polite",
346
- "aria-relevant": "additions",
347
- ref: virtualListRef,
348
- role: "list",
349
- onKeyDown: handleListKey,
350
- children: /*#__PURE__*/_jsx__default["default"](styled.StyledChatContainerContentListScroll, {
351
- height: "".concat(totalSize, "px")
352
- }, void 0, !isLoading && hasMoreItems ? /*#__PURE__*/_jsx__default["default"](styled.StyledLoadMoreContainer, {
353
- hasMoreItems: hasMoreItems
354
- }, void 0, /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
355
- labelText: "Load More",
356
- buttonType: "secondary",
357
- onClick: getMoreMessages,
358
- "data-testid": "ds-chat-load-more-btn",
359
- innerRef: loadMoreRef
360
- })) : null, render)
351
+ return /*#__PURE__*/jsxRuntime.jsx(styled.StyledWrapper, _objectSpread(_objectSpread({}, globalAttributes), {}, {
352
+ children: /*#__PURE__*/jsxRuntime.jsx(styled.StyledChatContainerContentList, {
353
+ "data-testid": "chat-thread-container",
354
+ tabIndex: 0,
355
+ "aria-live": "polite",
356
+ "aria-relevant": "additions",
357
+ ref: virtualListRef,
358
+ role: "list",
359
+ onKeyDown: handleListKey,
360
+ children: /*#__PURE__*/_jsx__default["default"](styled.StyledChatContainerContentListScroll, {
361
+ height: "".concat(totalSize, "px")
362
+ }, void 0, !isLoading && hasMoreItems ? /*#__PURE__*/_jsx__default["default"](styled.StyledLoadMoreContainer, {
363
+ hasMoreItems: hasMoreItems
364
+ }, void 0, /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
365
+ labelText: "Load More",
366
+ buttonType: "secondary",
367
+ onClick: getMoreMessages,
368
+ "data-testid": "ds-chat-load-more-btn",
369
+ innerRef: loadMoreRef
370
+ })) : null, render)
371
+ })
361
372
  }));
362
373
  };
363
374
 
364
- ChatContainerMessagesList.defaultProps = props.defaultProps;
365
- const ChatContainerMessagesListWithSchema = reactDesc.describe(ChatContainerMessagesList);
366
- ChatContainerMessagesListWithSchema.propTypes = props.listProps;
375
+ const ChatContainerMessagesListWithSchema = dsPropsHelpers.describe(ChatContainerMessagesList);
376
+ ChatContainerMessagesListWithSchema.propTypes = reactDescPropTypes.ChatContainerMessagesListPropTypes;
367
377
 
368
378
  exports.ChatContainerMessagesList = ChatContainerMessagesList;
369
379
  exports.ChatContainerMessagesListWithSchema = ChatContainerMessagesListWithSchema;
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var styled = require('styled-components');
6
- require('../bubble/ChatBubble.js');
7
- var props = require('../bubble/props.js');
6
+ require('../../exported-related/bubble/ChatBubble.js');
7
+ var props = require('../../exported-related/bubble/props.js');
8
8
 
9
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
10
 
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var ChatContainerComposer = require('./chat-composer/ChatContainerComposer.js');
6
+ var ChatContainer = require('./chat-container/ChatContainer.js');
7
+ var ChatContainerMessagesList = require('./chat-container-messages-list/ChatContainerMessagesList.js');
8
+
9
+
10
+
11
+ exports.ChatComposer = ChatContainerComposer.ChatComposer;
12
+ exports.ChatComposerWithSchema = ChatContainerComposer.ChatComposerWithSchema;
13
+ exports.ChatContainer = ChatContainer.ChatContainer;
14
+ exports.ChatContainerWithSchema = ChatContainer.ChatContainerWithSchema;
15
+ exports.ChatContainerMessagesList = ChatContainerMessagesList.ChatContainerMessagesList;
16
+ exports.ChatContainerMessagesListWithSchema = ChatContainerMessagesList.ChatContainerMessagesListWithSchema;
@@ -0,0 +1,116 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
+ var lodash = require('lodash');
12
+ var dsPropsHelpers = require('@elliemae/ds-props-helpers');
13
+ var DSBanner = require('@elliemae/ds-banner');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
18
+
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
+
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
+ const defaultPropsComposer = {
23
+ placeholder: 'Type your message',
24
+ inputValue: '',
25
+ ariaMaxLengthMessage: '',
26
+ onChange: lodash.noop,
27
+ onResize: lodash.noop,
28
+ onSend: lodash.noop,
29
+ onFocus: lodash.noop,
30
+ onBlur: lodash.noop,
31
+ onKeyDown: lodash.noop,
32
+ maxHeight: 0,
33
+ inputMaxLength: undefined,
34
+ maxLengthMessage: undefined,
35
+ buttonDisabled: false,
36
+ dataTestid: 'ds-chat-composer',
37
+ actionRef: undefined
38
+ };
39
+ const ChatComposerPropTypes = {
40
+ placeholder: dsPropsHelpers.PropTypes.string.description('Input Placeholder').defaultValue(defaultPropsComposer.placeholder),
41
+ inputValue: dsPropsHelpers.PropTypes.string.description('Input value').defaultValue(defaultPropsComposer.inputValue),
42
+ ariaMaxLengthMessage: dsPropsHelpers.PropTypes.string.description('Aria message for Max length message when exceeded').defaultValue(defaultPropsComposer.maxLengthMessage),
43
+ maxLengthMessage: dsPropsHelpers.PropTypes.string.description('Max length message').defaultValue(defaultPropsComposer.maxLengthMessage),
44
+ onChange: dsPropsHelpers.PropTypes.func.description('Called when the user types').defaultValue(defaultPropsComposer.onChange),
45
+ onResize: dsPropsHelpers.PropTypes.func.description('Called the input changes his height').defaultValue(defaultPropsComposer.onResize),
46
+ onSend: dsPropsHelpers.PropTypes.func.description('Called when the click send').defaultValue(defaultPropsComposer.onSend),
47
+ onFocus: dsPropsHelpers.PropTypes.func.description('Input focus').defaultValue(defaultPropsComposer.onFocus),
48
+ onBlur: dsPropsHelpers.PropTypes.func.description('Input blur').defaultValue(defaultPropsComposer.onBlur),
49
+ onKeyDown: dsPropsHelpers.PropTypes.func.description('Input on key down').defaultValue(defaultPropsComposer.onKeyDown),
50
+ maxHeight: dsPropsHelpers.PropTypes.number.description('Max height of the composer. Use 0 for no limit').defaultValue(defaultPropsComposer.onBlur),
51
+ inputMaxLength: dsPropsHelpers.PropTypes.number.description('Max length of the composer. `undefined` for no limit').defaultValue(defaultPropsComposer.inputMaxLength),
52
+ buttonDisabled: dsPropsHelpers.PropTypes.bool.description('Control the disabled for the send button').defaultValue(defaultPropsComposer.buttonDisabled),
53
+ dataTestid: dsPropsHelpers.PropTypes.string.description('Data testid').defaultValue(defaultPropsComposer.placeholder),
54
+ actionRef: dsPropsHelpers.PropTypes.object.description("Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n ").defaultValue(defaultPropsComposer.actionRef)
55
+ };
56
+ const defaultPropsMessagesList = {
57
+ messages: [],
58
+ actionRef: lodash.noop,
59
+ onScrollEnds: () => [],
60
+ getMoreMessages: lodash.noop,
61
+ sendingMessages: undefined,
62
+ sendingText: 'Sending',
63
+ bannerPosition: undefined,
64
+ bannerRef: undefined
65
+ };
66
+ const ChatContainerMessagesListPropTypes = _objectSpread(_objectSpread({}, dsPropsHelpers.globalAttributesPropTypes), {}, {
67
+ messages: dsPropsHelpers.PropTypes.arrayOf(dsPropsHelpers.PropTypes.object).description('The array of out-of-the-box items you want to render inside the ChatMessageList').defaultValue(defaultPropsMessagesList.messages),
68
+ actionRef: dsPropsHelpers.PropTypes.object.description("Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToIndexWithoutScroll: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n ").defaultValue(defaultPropsMessagesList.actionRef),
69
+ onScrollEnds: dsPropsHelpers.PropTypes.func.description("Called when the scroll stops."),
70
+ isLoading: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Keeps the load more space while the loading is in progress'),
71
+ hasMoreItems: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
72
+ getMoreMessages: dsPropsHelpers.PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultPropsMessagesList.getMoreMessages),
73
+ sendingMessages: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.arrayOf(dsPropsHelpers.PropTypes.string), dsPropsHelpers.PropTypes.arrayOf(dsPropsHelpers.PropTypes.number)]).description('Array of ids of sending messages').defaultValue(defaultPropsMessagesList.sendingMessages),
74
+ sendingText: dsPropsHelpers.PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultPropsMessagesList.sendingText)
75
+ });
76
+ const defaultProps = {
77
+ messagesListProps: defaultPropsMessagesList,
78
+ composerProps: defaultPropsComposer,
79
+ actionRef: undefined,
80
+ autoScroll: false,
81
+ device: 'desktop',
82
+ isLoading: undefined,
83
+ hasMoreItems: undefined,
84
+ getMoreMessages: lodash.noop,
85
+ bannerPosition: undefined,
86
+ bannerProps: {
87
+ type: DSBanner.BANNER_TYPES.INFO,
88
+ label: 'Unread Messages',
89
+ viewLabel: 'View',
90
+ onView: lodash.noop,
91
+ onClose: lodash.noop
92
+ },
93
+ sendingMessages: undefined,
94
+ sendingText: 'Sending'
95
+ };
96
+ const ChatContainerPropTypes = _objectSpread(_objectSpread({}, dsPropsHelpers.globalAttributesPropTypes), {}, {
97
+ messagesListProps: dsPropsHelpers.PropTypes.object.description('ChatMessageList props "messages" / "onScrollEnds"').defaultValue(defaultProps.messagesListProps),
98
+ composerProps: dsPropsHelpers.PropTypes.object.description('Composer configuration').defaultValue(defaultProps.composerProps),
99
+ autoScroll: dsPropsHelpers.PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),
100
+ device: dsPropsHelpers.PropTypes.string.description('Option to render mobile or desktop style composer').defaultValue(defaultProps.device),
101
+ isLoading: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Loading messages indicator at the `top` or `bottom` of the container'),
102
+ hasMoreItems: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
103
+ getMoreMessages: dsPropsHelpers.PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultProps.getMoreMessages),
104
+ bannerPosition: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Loading messages indicator at the `top` or `bottom` of the container'),
105
+ bannerProps: dsPropsHelpers.PropTypes.object.description("Banner configuration:\n label: string;\n viewLabel: string;\n type: BANNER_TYPES;\n onView: () => void;\n onClose: () => void;\n ").defaultValue(defaultProps.bannerProps),
106
+ sendingMessages: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.arrayOf(dsPropsHelpers.PropTypes.string), dsPropsHelpers.PropTypes.arrayOf(dsPropsHelpers.PropTypes.number)]).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
107
+ sendingText: dsPropsHelpers.PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText),
108
+ actionRef: dsPropsHelpers.PropTypes.object.description("Reference: \n { \n scrollToIndex: (n: number) => void,\n getMessagesInView: () => number[],\n focusToIndex: (n: number) => void,\n focusToList: () => void,\n focusToComposer: () => void,\n focusToSend: () => void,\n }\n \n ").defaultValue(defaultProps.actionRef)
109
+ });
110
+
111
+ exports.ChatComposerPropTypes = ChatComposerPropTypes;
112
+ exports.ChatContainerMessagesListPropTypes = ChatContainerMessagesListPropTypes;
113
+ exports.ChatContainerPropTypes = ChatContainerPropTypes;
114
+ exports.defaultProps = defaultProps;
115
+ exports.defaultPropsComposer = defaultPropsComposer;
116
+ exports.defaultPropsMessagesList = defaultPropsMessagesList;
@@ -1,19 +1,18 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import 'core-js/modules/web.url.to-json.js';
3
2
  import 'core-js/modules/esnext.async-iterator.map.js';
4
3
  import 'core-js/modules/esnext.iterator.map.js';
5
4
  import React from 'react';
6
- import { describe } from 'react-desc';
5
+ import { describe, useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';
7
6
  import { WarningCircleFill } from '@elliemae/ds-icons';
8
7
  import { StyledWrapper, StyledColoredBubble, StyledTitleBubble, StyledTitleLeftBubble, StyledTitleRightBubble, StyleBodyWrapper, StyleErrorMessage, StyleHelpMessage } from './styled.js';
9
- import { propsBubbles } from './props.js';
10
- import { useValidateProps } from './config/useValidateProps.js';
8
+ import { BubblesPropTypes, defaultBubbleProps } from './props.js';
11
9
  import { ChatBubbleArrow } from './ChatBubbleArrow.js';
12
10
 
13
11
  var _br, _WarningCircleFill;
14
12
 
15
13
  const ChatBubble = props => {
16
- useValidateProps(props, ChatBubbleWithSchema.toJSON());
14
+ const propsWithDefault = useMemoMergePropsWithDefault(props, defaultBubbleProps);
15
+ useValidateTypescriptPropTypes(propsWithDefault, BubblesPropTypes);
17
16
  const {
18
17
  dsId,
19
18
  type,
@@ -22,11 +21,10 @@ const ChatBubble = props => {
22
21
  body,
23
22
  errorMessage,
24
23
  helpMessage
25
- } = props;
24
+ } = propsWithDefault;
26
25
  const bodyParts = React.useMemo(() => typeof body === 'string' ? body.split('\n') : [body], [body]);
27
26
  return /*#__PURE__*/_jsx(StyledWrapper, {
28
- "data-testid": "ds-chat-bubble-".concat(dsId),
29
- type: type
27
+ "data-testid": "ds-chat-bubble-".concat(dsId)
30
28
  }, void 0, /*#__PURE__*/_jsx(StyledColoredBubble, {
31
29
  type: type
32
30
  }, void 0, /*#__PURE__*/_jsx(StyledTitleBubble, {
@@ -59,6 +57,6 @@ const ChatBubble = props => {
59
57
  };
60
58
 
61
59
  const ChatBubbleWithSchema = describe(ChatBubble);
62
- ChatBubbleWithSchema.propTypes = propsBubbles;
60
+ ChatBubbleWithSchema.propTypes = BubblesPropTypes;
63
61
 
64
62
  export { ChatBubble, ChatBubbleWithSchema };
File without changes
@@ -1,12 +1,8 @@
1
- import propsTypes from 'prop-types';
2
- import { PropTypes } from 'react-desc';
3
- import { noop } from 'lodash';
1
+ import { PropTypes } from '@elliemae/ds-props-helpers';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
+ function noop() {}
4
5
 
5
- /**
6
- *
7
- * BUBBLE
8
- *
9
- */
10
6
  const BUBBLE_TYPES = {
11
7
  SENDER: 'SENDER',
12
8
  RECIPIENT: 'RECIPIENT',
@@ -14,33 +10,27 @@ const BUBBLE_TYPES = {
14
10
  SYSTEM: 'SYSTEM'
15
11
  };
16
12
  const defaultBubbleProps = {
17
- dsId: undefined,
13
+ dsId: '',
18
14
  type: BUBBLE_TYPES.SENDER,
19
- title: undefined,
20
- time: undefined,
21
- body: undefined,
15
+ title: '',
16
+ time: '',
17
+ body: '',
22
18
  onClick: noop,
23
- errorMessage: undefined,
24
- helpMessage: undefined
19
+ errorMessage: '',
20
+ helpMessage: ''
25
21
  };
26
- const propsBubbles = {
22
+ const BubblesPropTypes = {
27
23
  dsId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description('Unique id for bubble').defaultValue(defaultBubbleProps.dsId),
28
24
  type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER]).isRequired.description('Define bubble type ').defaultValue(defaultBubbleProps.type),
29
25
  title: PropTypes.string.isRequired.description('Title of the bubble').defaultValue(defaultBubbleProps.title),
30
26
  time: PropTypes.string.isRequired.description('Time of the bubble').defaultValue(defaultBubbleProps.title),
31
27
  body: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired.description('Bubble content').defaultValue(defaultBubbleProps.body),
32
- onClick: PropTypes.string.description('Callback when the bubble is tapped').defaultValue(defaultBubbleProps.onClick),
28
+ onClick: PropTypes.func.description('Callback when the bubble is tapped').defaultValue(defaultBubbleProps.onClick),
33
29
  errorMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).description('Error message to display at bottom of the bubble').defaultValue(defaultBubbleProps.onClick),
34
30
  helpMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).description('Help message to display at bottom of the bubble').defaultValue(defaultBubbleProps.onClick)
35
31
  };
36
- /**
37
- *
38
- * BUBBLE ARROW
39
- *
40
- */
41
-
42
32
  const propsArrowBubble = {
43
- type: propsTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER])
33
+ type: PropTypes.oneOf([BUBBLE_TYPES.RECIPIENT, BUBBLE_TYPES.SENDER])
44
34
  };
45
35
 
46
- export { BUBBLE_TYPES, defaultBubbleProps, propsArrowBubble, propsBubbles };
36
+ export { BUBBLE_TYPES, BubblesPropTypes, defaultBubbleProps, propsArrowBubble };