@elliemae/ds-chat 1.53.4-rc.3 → 1.53.5-rc.0

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 (195) hide show
  1. package/cjs/index.js +14 -1
  2. package/cjs/index.js.map +1 -1
  3. package/cjs/parts/bubble/ChatBubble.js +8 -1
  4. package/cjs/parts/bubble/ChatBubble.js.map +1 -1
  5. package/cjs/parts/bubble/config/useValidateProps.js +32 -0
  6. package/cjs/parts/bubble/config/useValidateProps.js.map +1 -0
  7. package/cjs/parts/bubble/index.js +4 -1
  8. package/cjs/parts/bubble/index.js.map +1 -1
  9. package/cjs/parts/bubble/props.js +4 -4
  10. package/cjs/parts/bubble/props.js.map +1 -1
  11. package/cjs/parts/bubble/styled.js +1 -1
  12. package/cjs/parts/bubble/styled.js.map +1 -1
  13. package/cjs/parts/chat-card/ChatCard.js +9 -6
  14. package/cjs/parts/chat-card/ChatCard.js.map +1 -1
  15. package/cjs/parts/chat-card/config/useValidateProps.js +12 -0
  16. package/cjs/parts/chat-card/config/useValidateProps.js.map +1 -0
  17. package/cjs/parts/chat-card/index.js +3 -1
  18. package/cjs/parts/chat-card/index.js.map +1 -1
  19. package/cjs/parts/chat-card/props.js +1 -1
  20. package/cjs/parts/chat-card/props.js.map +1 -1
  21. package/cjs/parts/chat-composer/ChatContainerComposer.js +19 -2
  22. package/cjs/parts/chat-composer/ChatContainerComposer.js.map +1 -1
  23. package/cjs/parts/chat-composer/config/useValidateProps.js +12 -0
  24. package/cjs/parts/chat-composer/config/useValidateProps.js.map +1 -0
  25. package/cjs/parts/chat-composer/index.js +2 -0
  26. package/cjs/parts/chat-composer/index.js.map +1 -1
  27. package/cjs/parts/chat-composer/props.js +6 -4
  28. package/cjs/parts/chat-composer/props.js.map +1 -1
  29. package/cjs/parts/chat-composer/styled.js +2 -2
  30. package/cjs/parts/chat-composer/styled.js.map +1 -1
  31. package/cjs/parts/chat-container/ChatContainer.js +10 -1
  32. package/cjs/parts/chat-container/ChatContainer.js.map +1 -1
  33. package/cjs/parts/chat-container/config/useValidateProps.js +12 -0
  34. package/cjs/parts/chat-container/config/useValidateProps.js.map +1 -0
  35. package/cjs/parts/chat-container/index.js +7 -0
  36. package/cjs/parts/chat-container/index.js.map +1 -1
  37. package/cjs/parts/chat-container/props.js +3 -2
  38. package/cjs/parts/chat-container/props.js.map +1 -1
  39. package/cjs/parts/chat-container/styled.js +3 -1
  40. package/cjs/parts/chat-container/styled.js.map +1 -1
  41. package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js +70 -11
  42. package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js.map +1 -1
  43. package/cjs/parts/chat-container-messages-list/config/useValidateProps.js +12 -0
  44. package/cjs/parts/chat-container-messages-list/config/useValidateProps.js.map +1 -0
  45. package/cjs/parts/chat-container-messages-list/index.js +5 -0
  46. package/cjs/parts/chat-container-messages-list/index.js.map +1 -1
  47. package/cjs/parts/chat-container-messages-list/props.js +1 -1
  48. package/cjs/parts/chat-container-messages-list/props.js.map +1 -1
  49. package/cjs/parts/chat-container-messages-list/styled.js +9 -1
  50. package/cjs/parts/chat-container-messages-list/styled.js.map +1 -1
  51. package/cjs/parts/chat-empty-state/ChatEmptyState.js +14 -3
  52. package/cjs/parts/chat-empty-state/ChatEmptyState.js.map +1 -1
  53. package/cjs/parts/chat-empty-state/config/useValidateProps.js +12 -0
  54. package/cjs/parts/chat-empty-state/config/useValidateProps.js.map +1 -0
  55. package/cjs/parts/chat-empty-state/props.js +2 -1
  56. package/cjs/parts/chat-empty-state/props.js.map +1 -1
  57. package/cjs/parts/chat-sidebar/SideBarChat.js +12 -8
  58. package/cjs/parts/chat-sidebar/SideBarChat.js.map +1 -1
  59. package/cjs/parts/chat-sidebar/config/useValidateProps.js +12 -0
  60. package/cjs/parts/chat-sidebar/config/useValidateProps.js.map +1 -0
  61. package/cjs/parts/chat-sidebar/index.js +4 -1
  62. package/cjs/parts/chat-sidebar/index.js.map +1 -1
  63. package/cjs/parts/floating-button/FloatingButton.js.map +1 -1
  64. package/cjs/parts/grid-influencer/InfluencerContainer.js +9 -0
  65. package/cjs/parts/grid-influencer/InfluencerContainer.js.map +1 -1
  66. package/cjs/parts/message-delimiter/MessageDelimiter.js +8 -5
  67. package/cjs/parts/message-delimiter/MessageDelimiter.js.map +1 -1
  68. package/cjs/parts/message-delimiter/config/useValidateProps.js +12 -0
  69. package/cjs/parts/message-delimiter/config/useValidateProps.js.map +1 -0
  70. package/cjs/parts/message-delimiter/index.js +2 -0
  71. package/cjs/parts/message-delimiter/index.js.map +1 -1
  72. package/cjs/parts/message-delimiter/props.js +1 -1
  73. package/cjs/parts/message-delimiter/props.js.map +1 -1
  74. package/cjs/parts/sidebar-button/SidebarButton.js.map +1 -1
  75. package/cjs/parts/sidebar-button/styled.js +3 -1
  76. package/cjs/parts/sidebar-button/styled.js.map +1 -1
  77. package/cjs/parts/system-message/SystemMessage.js +7 -4
  78. package/cjs/parts/system-message/SystemMessage.js.map +1 -1
  79. package/cjs/parts/system-message/config/useValidateProps.js +12 -0
  80. package/cjs/parts/system-message/config/useValidateProps.js.map +1 -0
  81. package/cjs/parts/system-message/index.js +2 -0
  82. package/cjs/parts/system-message/index.js.map +1 -1
  83. package/cjs/parts/tile-button/TileButton.js +3 -1
  84. package/cjs/parts/tile-button/TileButton.js.map +1 -1
  85. package/cjs/parts/tile-button/config/useValidateProps.js +12 -0
  86. package/cjs/parts/tile-button/config/useValidateProps.js.map +1 -0
  87. package/cjs/parts/tile-button/index.js +2 -1
  88. package/cjs/parts/tile-button/index.js.map +1 -1
  89. package/cjs/parts/tile-button/props.js +3 -5
  90. package/cjs/parts/tile-button/props.js.map +1 -1
  91. package/cjs/parts/tile-button/styled.js +9 -5
  92. package/cjs/parts/tile-button/styled.js.map +1 -1
  93. package/esm/index.js +14 -2
  94. package/esm/index.js.map +1 -1
  95. package/esm/parts/bubble/ChatBubble.js +8 -2
  96. package/esm/parts/bubble/ChatBubble.js.map +1 -1
  97. package/esm/parts/bubble/config/useValidateProps.js +28 -0
  98. package/esm/parts/bubble/config/useValidateProps.js.map +1 -0
  99. package/esm/parts/bubble/index.js +4 -2
  100. package/esm/parts/bubble/index.js.map +1 -1
  101. package/esm/parts/bubble/props.js +4 -4
  102. package/esm/parts/bubble/props.js.map +1 -1
  103. package/esm/parts/bubble/styled.js +1 -1
  104. package/esm/parts/bubble/styled.js.map +1 -1
  105. package/esm/parts/chat-card/ChatCard.js +9 -6
  106. package/esm/parts/chat-card/ChatCard.js.map +1 -1
  107. package/esm/parts/chat-card/config/useValidateProps.js +8 -0
  108. package/esm/parts/chat-card/config/useValidateProps.js.map +1 -0
  109. package/esm/parts/chat-card/index.js +3 -1
  110. package/esm/parts/chat-card/index.js.map +1 -1
  111. package/esm/parts/chat-card/props.js +1 -1
  112. package/esm/parts/chat-card/props.js.map +1 -1
  113. package/esm/parts/chat-composer/ChatContainerComposer.js +19 -2
  114. package/esm/parts/chat-composer/ChatContainerComposer.js.map +1 -1
  115. package/esm/parts/chat-composer/config/useValidateProps.js +8 -0
  116. package/esm/parts/chat-composer/config/useValidateProps.js.map +1 -0
  117. package/esm/parts/chat-composer/index.js +2 -0
  118. package/esm/parts/chat-composer/index.js.map +1 -1
  119. package/esm/parts/chat-composer/props.js +6 -4
  120. package/esm/parts/chat-composer/props.js.map +1 -1
  121. package/esm/parts/chat-composer/styled.js +2 -2
  122. package/esm/parts/chat-composer/styled.js.map +1 -1
  123. package/esm/parts/chat-container/ChatContainer.js +10 -1
  124. package/esm/parts/chat-container/ChatContainer.js.map +1 -1
  125. package/esm/parts/chat-container/config/useValidateProps.js +8 -0
  126. package/esm/parts/chat-container/config/useValidateProps.js.map +1 -0
  127. package/esm/parts/chat-container/index.js +7 -0
  128. package/esm/parts/chat-container/index.js.map +1 -1
  129. package/esm/parts/chat-container/props.js +3 -2
  130. package/esm/parts/chat-container/props.js.map +1 -1
  131. package/esm/parts/chat-container/styled.js +3 -1
  132. package/esm/parts/chat-container/styled.js.map +1 -1
  133. package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js +71 -12
  134. package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js.map +1 -1
  135. package/esm/parts/chat-container-messages-list/config/useValidateProps.js +8 -0
  136. package/esm/parts/chat-container-messages-list/config/useValidateProps.js.map +1 -0
  137. package/esm/parts/chat-container-messages-list/index.js +5 -0
  138. package/esm/parts/chat-container-messages-list/index.js.map +1 -1
  139. package/esm/parts/chat-container-messages-list/props.js +1 -1
  140. package/esm/parts/chat-container-messages-list/props.js.map +1 -1
  141. package/esm/parts/chat-container-messages-list/styled.js +9 -2
  142. package/esm/parts/chat-container-messages-list/styled.js.map +1 -1
  143. package/esm/parts/chat-empty-state/ChatEmptyState.js +14 -4
  144. package/esm/parts/chat-empty-state/ChatEmptyState.js.map +1 -1
  145. package/esm/parts/chat-empty-state/config/useValidateProps.js +8 -0
  146. package/esm/parts/chat-empty-state/config/useValidateProps.js.map +1 -0
  147. package/esm/parts/chat-empty-state/props.js +2 -1
  148. package/esm/parts/chat-empty-state/props.js.map +1 -1
  149. package/esm/parts/chat-sidebar/SideBarChat.js +12 -8
  150. package/esm/parts/chat-sidebar/SideBarChat.js.map +1 -1
  151. package/esm/parts/chat-sidebar/config/useValidateProps.js +8 -0
  152. package/esm/parts/chat-sidebar/config/useValidateProps.js.map +1 -0
  153. package/esm/parts/chat-sidebar/index.js +4 -1
  154. package/esm/parts/chat-sidebar/index.js.map +1 -1
  155. package/esm/parts/floating-button/FloatingButton.js.map +1 -1
  156. package/esm/parts/grid-influencer/InfluencerContainer.js +9 -0
  157. package/esm/parts/grid-influencer/InfluencerContainer.js.map +1 -1
  158. package/esm/parts/message-delimiter/MessageDelimiter.js +8 -5
  159. package/esm/parts/message-delimiter/MessageDelimiter.js.map +1 -1
  160. package/esm/parts/message-delimiter/config/useValidateProps.js +8 -0
  161. package/esm/parts/message-delimiter/config/useValidateProps.js.map +1 -0
  162. package/esm/parts/message-delimiter/index.js +2 -0
  163. package/esm/parts/message-delimiter/index.js.map +1 -1
  164. package/esm/parts/message-delimiter/props.js +1 -1
  165. package/esm/parts/message-delimiter/props.js.map +1 -1
  166. package/esm/parts/sidebar-button/SidebarButton.js.map +1 -1
  167. package/esm/parts/sidebar-button/styled.js +3 -1
  168. package/esm/parts/sidebar-button/styled.js.map +1 -1
  169. package/esm/parts/system-message/SystemMessage.js +7 -4
  170. package/esm/parts/system-message/SystemMessage.js.map +1 -1
  171. package/esm/parts/system-message/config/useValidateProps.js +8 -0
  172. package/esm/parts/system-message/config/useValidateProps.js.map +1 -0
  173. package/esm/parts/system-message/index.js +2 -0
  174. package/esm/parts/system-message/index.js.map +1 -1
  175. package/esm/parts/tile-button/TileButton.js +3 -1
  176. package/esm/parts/tile-button/TileButton.js.map +1 -1
  177. package/esm/parts/tile-button/config/useValidateProps.js +8 -0
  178. package/esm/parts/tile-button/config/useValidateProps.js.map +1 -0
  179. package/esm/parts/tile-button/index.js +2 -1
  180. package/esm/parts/tile-button/index.js.map +1 -1
  181. package/esm/parts/tile-button/props.js +3 -4
  182. package/esm/parts/tile-button/props.js.map +1 -1
  183. package/esm/parts/tile-button/styled.js +9 -5
  184. package/esm/parts/tile-button/styled.js.map +1 -1
  185. package/package.json +5 -5
  186. package/parts/bubble/config/useValidateProps/package.json +10 -0
  187. package/parts/chat-card/config/useValidateProps/package.json +10 -0
  188. package/parts/chat-composer/config/useValidateProps/package.json +10 -0
  189. package/parts/chat-container/config/useValidateProps/package.json +10 -0
  190. package/parts/chat-container-messages-list/config/useValidateProps/package.json +10 -0
  191. package/parts/chat-empty-state/config/useValidateProps/package.json +10 -0
  192. package/parts/chat-sidebar/config/useValidateProps/package.json +10 -0
  193. package/parts/message-delimiter/config/useValidateProps/package.json +10 -0
  194. package/parts/system-message/config/useValidateProps/package.json +10 -0
  195. package/parts/tile-button/config/useValidateProps/package.json +10 -0
@@ -0,0 +1,8 @@
1
+ import { useValidatePropTypes } from '@elliemae/ds-props-helpers';
2
+
3
+ var useValidateProps = function useValidateProps(props, schema) {
4
+ useValidatePropTypes(props, schema);
5
+ };
6
+
7
+ export { useValidateProps };
8
+ //# sourceMappingURL=useValidateProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-card/config/useValidateProps.tsx"],"sourcesContent":["import { useValidatePropTypes } from '@elliemae/ds-props-helpers';\nimport { CardPropTypes } from '../props';\n\nexport const useValidateProps = (props: CardPropTypes, schema: unknown): void => {\n useValidatePropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidatePropTypes"],"mappings":";;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAuBC,MAAvB,EAAiD;AAC/EC,EAAAA,oBAAoB,CAACF,KAAD,EAAQC,MAAR,CAApB;AACD;;;;"}
@@ -1,8 +1,10 @@
1
1
  export { ChatCard, ChatCardWithSchema } from './ChatCard.js';
2
2
  import 'react';
3
3
  import 'react-desc';
4
- import './props.js';
5
4
  import '@elliemae/ds-truncated-tooltip-text';
5
+ import './props.js';
6
+ import './config/useValidateProps.js';
7
+ import '@elliemae/ds-props-helpers';
6
8
  import './styled.js';
7
9
  import 'styled-components';
8
10
  import '@elliemae/ds-grid';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -4,7 +4,7 @@ var propTypes = {
4
4
  title: PropTypes.string.isRequired.description("Card's title"),
5
5
  content: PropTypes.string.description("Card's content"),
6
6
  time: PropTypes.string.description('Time'),
7
- rightAddon: PropTypes.node.description('Right addon, badge or icon')
7
+ rightAddon: PropTypes.element.description('Right addon, badge or icon')
8
8
  };
9
9
 
10
10
  export { propTypes };
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-card/props.tsx"],"sourcesContent":["import { PropTypes } from 'react-desc';\n\nexport const propTypes = {\n title: PropTypes.string.isRequired.description(`Card's title`),\n content: PropTypes.string.description(`Card's content`),\n time: PropTypes.string.description('Time'),\n rightAddon: PropTypes.node.description('Right addon, badge or icon'),\n};\n\nexport interface CardPropTypes {\n title: string;\n content: string;\n time: string;\n rightAddon: JSX.Element;\n}\n"],"names":["propTypes","title","PropTypes","string","isRequired","description","content","time","rightAddon","node"],"mappings":";;IAEaA,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAEC,SAAS,CAACC,MAAV,CAAiBC,UAAjB,CAA4BC,WAA5B,gBADgB;AAEvBC,EAAAA,OAAO,EAAEJ,SAAS,CAACC,MAAV,CAAiBE,WAAjB,kBAFc;AAGvBE,EAAAA,IAAI,EAAEL,SAAS,CAACC,MAAV,CAAiBE,WAAjB,CAA6B,MAA7B,CAHiB;AAIvBG,EAAAA,UAAU,EAAEN,SAAS,CAACO,IAAV,CAAeJ,WAAf,CAA2B,4BAA3B;AAJW;;;;"}
1
+ {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-card/props.tsx"],"sourcesContent":["import { PropTypes } from 'react-desc';\n\nexport const propTypes = {\n title: PropTypes.string.isRequired.description(`Card's title`),\n content: PropTypes.string.description(`Card's content`),\n time: PropTypes.string.description('Time'),\n rightAddon: PropTypes.element.description('Right addon, badge or icon'),\n};\n\nexport interface CardPropTypes {\n title: string;\n content: string;\n time: string;\n rightAddon: JSX.Element;\n}\n"],"names":["propTypes","title","PropTypes","string","isRequired","description","content","time","rightAddon","element"],"mappings":";;IAEaA,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAEC,SAAS,CAACC,MAAV,CAAiBC,UAAjB,CAA4BC,WAA5B,gBADgB;AAEvBC,EAAAA,OAAO,EAAEJ,SAAS,CAACC,MAAV,CAAiBE,WAAjB,kBAFc;AAGvBE,EAAAA,IAAI,EAAEL,SAAS,CAACC,MAAV,CAAiBE,WAAjB,CAA6B,MAA7B,CAHiB;AAIvBG,EAAAA,UAAU,EAAEN,SAAS,CAACO,OAAV,CAAkBJ,WAAlB,CAA8B,4BAA9B;AAJW;;;;"}
@@ -5,9 +5,11 @@ import { Grid } from '@elliemae/ds-grid';
5
5
  import { describe } from 'react-desc';
6
6
  import PaperAirplane from '@elliemae/ds-icons/PaperAirplane';
7
7
  import { StyledChatContainerContentComposer, StyledComposerInput, StyledComposerButton, StyledCounterArea, StyledCounterErrorA11y } from './styled.js';
8
+ import { useValidateProps } from './config/useValidateProps.js';
8
9
  import { composerProps, defaultComposerPros } from './props.js';
9
10
  import 'styled-components';
10
11
  import '@elliemae/ds-button';
12
+ import '@elliemae/ds-props-helpers';
11
13
  import 'lodash';
12
14
 
13
15
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -17,6 +19,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
17
19
  var ChatComposer = function ChatComposer(props) {
18
20
  var _input$current;
19
21
 
22
+ useValidateProps(props, ChatComposerWithSchema.toJSON());
20
23
  var inputValue = props.inputValue,
21
24
  onChange = props.onChange,
22
25
  onResize = props.onResize,
@@ -28,9 +31,11 @@ var ChatComposer = function ChatComposer(props) {
28
31
  placeholder = props.placeholder,
29
32
  inputMaxLength = props.inputMaxLength,
30
33
  buttonDisabled = props.buttonDisabled,
31
- dataTestid = props.dataTestid;
34
+ dataTestid = props.dataTestid,
35
+ actionRef = props.actionRef;
32
36
  var input = React.useRef();
33
37
  var inputSize = React.useRef();
38
+ var inputSend = React.useRef();
34
39
 
35
40
  var _React$useState = React.useState(32),
36
41
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -54,6 +59,17 @@ var ChatComposer = function ChatComposer(props) {
54
59
  setHeight(newHeight);
55
60
  setShowScroll(((_inputSize$current3 = inputSize.current) === null || _inputSize$current3 === void 0 ? void 0 : _inputSize$current3.scrollHeight) - ((_inputSize$current4 = inputSize.current) === null || _inputSize$current4 === void 0 ? void 0 : _inputSize$current4.clientHeight) > 5);
56
61
  }, [inputValue, internalMaxHeight]);
62
+ React.useEffect(function () {
63
+ if (actionRef && actionRef.current) {
64
+ actionRef.current.focusToComposer = function () {
65
+ input.current.focus();
66
+ };
67
+
68
+ actionRef.current.focusToSend = function () {
69
+ inputSend.current.focus();
70
+ };
71
+ }
72
+ }, [actionRef.current]);
57
73
  var handleChange = React.useCallback(function (e) {
58
74
  onChange(e.target.value);
59
75
  }, [onChange]);
@@ -97,7 +113,8 @@ var ChatComposer = function ChatComposer(props) {
97
113
  size: "s",
98
114
  disabled: !inputValue || buttonDisabled || hasError,
99
115
  "data-testid": "chat-composer-send-button",
100
- "aria-label": "Send"
116
+ "aria-label": "Send",
117
+ innerRef: inputSend
101
118
  }))), /*#__PURE__*/React.createElement(StyledComposerInput, {
102
119
  ref: inputSize,
103
120
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContainerComposer.js","sources":["../../../../src/parts/chat-composer/ChatContainerComposer.tsx"],"sourcesContent":["import React from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { describe } from 'react-desc';\nimport PaperAirplane from '@elliemae/ds-icons/PaperAirplane';\nimport {\n StyledChatContainerContentComposer,\n StyledComposerInput,\n StyledComposerButton,\n StyledCounterArea,\n StyledCounterErrorA11y,\n} from './styled';\nimport { defaultComposerPros, composerProps, ChatComposerProps } from './props';\n\nconst ChatComposer = (props: ChatComposerProps): JSX.Element => {\n const {\n inputValue,\n onChange,\n onResize,\n onSend,\n onFocus,\n onBlur,\n maxHeight = 300,\n placeholder,\n inputMaxLength,\n buttonDisabled,\n dataTestid,\n } = props;\n\n const input = React.useRef<HTMLTextAreaElement>();\n const inputSize = React.useRef<HTMLTextAreaElement>();\n const [height, setHeight] = React.useState(32);\n const internalMaxHeight = React.useMemo(() => maxHeight - 24, [maxHeight]);\n const [showScroll, setShowScroll] = React.useState(true);\n\n React.useEffect(() => {\n const newHeight =\n inputSize.current?.scrollHeight > internalMaxHeight ? internalMaxHeight : inputSize.current?.scrollHeight;\n onResize(newHeight);\n setHeight(newHeight);\n setShowScroll(inputSize.current?.scrollHeight - inputSize.current?.clientHeight > 5);\n }, [inputValue, internalMaxHeight]);\n\n const handleChange = React.useCallback(\n (e) => {\n onChange(e.target.value);\n },\n [onChange],\n );\n const heightProps = { height, overflow: showScroll ? 'auto' : 'hidden' };\n\n const inputLength = String(inputValue || '').length;\n const hasError = React.useMemo(() => inputLength > inputMaxLength, [inputLength, inputMaxLength]);\n\n return (\n <StyledChatContainerContentComposer rows={['auto', '15px']} maxHeight={`${maxHeight}px`} data-testid={dataTestid}>\n <Grid cols={['1fr', '24px']} justifyContent=\"center\" alignItems=\"flex-end\" gutter=\"xxs\">\n <StyledComposerInput\n ref={input}\n onChange={handleChange}\n style={{ ...heightProps }}\n value={inputValue}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n aria-label=\"Message to send\"\n data-testid=\"chat-composer-textarea\"\n />\n\n <Grid height=\"32px\" alignItems=\"center\">\n <StyledComposerButton\n buttonType=\"text\"\n icon={<PaperAirplane width={18} height={18} />}\n onClick={onSend}\n size=\"s\"\n disabled={!inputValue || buttonDisabled || hasError}\n data-testid=\"chat-composer-send-button\"\n aria-label=\"Send\"\n />\n </Grid>\n </Grid>\n <StyledComposerInput\n ref={inputSize}\n style={{\n height: 32,\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n width: input.current?.clientWidth,\n }}\n onChange={handleChange}\n value={inputValue}\n // maxLength={inputMaxLength}\n />\n <Grid cols={['1fr', '24px']} justifyContent=\"flex-end\" alignItems=\"center\" gutter=\"xxs\" pb=\"xxs\">\n <StyledCounterArea hasError={hasError} data-testid=\"composer-counter-area\">\n {inputMaxLength && hasError ? (\n <>\n <StyledCounterErrorA11y role=\"alert\">\n You have exceeded the character limit by {inputLength - inputMaxLength}\n </StyledCounterErrorA11y>\n Please limit to less than {inputMaxLength} characters.{' '}\n </>\n ) : (\n ''\n )}\n {inputMaxLength ? `${inputLength} / ${inputMaxLength}` : ''}\n </StyledCounterArea>\n <Grid />\n </Grid>\n </StyledChatContainerContentComposer>\n );\n};\n\nChatComposer.propTypes = composerProps;\nChatComposer.defaultProps = defaultComposerPros;\nconst ChatComposerWithSchema = describe(ChatComposer);\nChatComposerWithSchema.propTypes = composerProps;\n\nexport { ChatComposer, ChatComposerWithSchema };\n"],"names":["ChatComposer","props","inputValue","onChange","onResize","onSend","onFocus","onBlur","maxHeight","placeholder","inputMaxLength","buttonDisabled","dataTestid","input","React","useRef","inputSize","useState","height","setHeight","internalMaxHeight","useMemo","showScroll","setShowScroll","useEffect","newHeight","current","scrollHeight","clientHeight","handleChange","useCallback","e","target","value","heightProps","overflow","inputLength","String","length","hasError","visibility","pointerEvents","position","top","width","clientWidth","propTypes","composerProps","defaultProps","defaultComposerPros","ChatComposerWithSchema","describe"],"mappings":"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"}
1
+ {"version":3,"file":"ChatContainerComposer.js","sources":["../../../../src/parts/chat-composer/ChatContainerComposer.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport React from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { describe } from 'react-desc';\nimport PaperAirplane from '@elliemae/ds-icons/PaperAirplane';\nimport {\n StyledChatContainerContentComposer,\n StyledComposerInput,\n StyledComposerButton,\n StyledCounterArea,\n StyledCounterErrorA11y,\n} from './styled';\nimport { useValidateProps } from './config/useValidateProps';\n\nimport { defaultComposerPros, composerProps, ChatComposerProps } from './props';\n\nconst ChatComposer = (props: ChatComposerProps): JSX.Element => {\n useValidateProps(props, ChatComposerWithSchema.toJSON());\n\n const {\n inputValue,\n onChange,\n onResize,\n onSend,\n onFocus,\n onBlur,\n maxHeight = 300,\n placeholder,\n inputMaxLength,\n buttonDisabled,\n dataTestid,\n actionRef,\n } = props;\n\n const input = React.useRef<HTMLTextAreaElement>();\n const inputSize = React.useRef<HTMLTextAreaElement>();\n const inputSend = React.useRef<HTMLButtonElement>();\n const [height, setHeight] = React.useState(32);\n const internalMaxHeight = React.useMemo(() => maxHeight - 24, [maxHeight]);\n const [showScroll, setShowScroll] = React.useState(true);\n\n React.useEffect(() => {\n const newHeight =\n inputSize.current?.scrollHeight > internalMaxHeight ? internalMaxHeight : inputSize.current?.scrollHeight;\n onResize(newHeight);\n setHeight(newHeight);\n setShowScroll(inputSize.current?.scrollHeight - inputSize.current?.clientHeight > 5);\n }, [inputValue, internalMaxHeight]);\n\n React.useEffect(() => {\n if (actionRef && actionRef.current) {\n actionRef.current.focusToComposer = () => {\n input.current.focus();\n };\n actionRef.current.focusToSend = () => {\n inputSend.current.focus();\n };\n }\n }, [actionRef.current]);\n\n const handleChange = React.useCallback(\n (e) => {\n onChange(e.target.value);\n },\n [onChange],\n );\n const heightProps = { height, overflow: showScroll ? 'auto' : 'hidden' };\n\n const inputLength = String(inputValue || '').length;\n const hasError = React.useMemo(() => inputLength > inputMaxLength, [inputLength, inputMaxLength]);\n\n return (\n <StyledChatContainerContentComposer rows={['auto', '15px']} maxHeight={`${maxHeight}px`} data-testid={dataTestid}>\n <Grid cols={['1fr', '24px']} justifyContent=\"center\" alignItems=\"flex-end\" gutter=\"xxs\">\n <StyledComposerInput\n ref={input}\n onChange={handleChange}\n style={{ ...heightProps }}\n value={inputValue}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n aria-label=\"Message to send\"\n data-testid=\"chat-composer-textarea\"\n />\n\n <Grid height=\"32px\" alignItems=\"center\">\n <StyledComposerButton\n buttonType=\"text\"\n icon={<PaperAirplane width={18} height={18} />}\n onClick={onSend}\n size=\"s\"\n disabled={!inputValue || buttonDisabled || hasError}\n data-testid=\"chat-composer-send-button\"\n aria-label=\"Send\"\n innerRef={inputSend}\n />\n </Grid>\n </Grid>\n <StyledComposerInput\n ref={inputSize}\n style={{\n height: 32,\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n width: input.current?.clientWidth,\n }}\n onChange={handleChange}\n value={inputValue}\n // maxLength={inputMaxLength}\n />\n <Grid cols={['1fr', '24px']} justifyContent=\"flex-end\" alignItems=\"center\" gutter=\"xxs\" pb=\"xxs\">\n <StyledCounterArea hasError={hasError} data-testid=\"composer-counter-area\">\n {inputMaxLength && hasError ? (\n <>\n <StyledCounterErrorA11y role=\"alert\">\n You have exceeded the character limit by {inputLength - inputMaxLength}\n </StyledCounterErrorA11y>\n Please limit to less than {inputMaxLength} characters.{' '}\n </>\n ) : (\n ''\n )}\n {inputMaxLength ? `${inputLength} / ${inputMaxLength}` : ''}\n </StyledCounterArea>\n <Grid />\n </Grid>\n </StyledChatContainerContentComposer>\n );\n};\n\nChatComposer.propTypes = composerProps;\nChatComposer.defaultProps = defaultComposerPros;\nconst ChatComposerWithSchema = describe(ChatComposer);\nChatComposerWithSchema.propTypes = composerProps;\n\nexport { ChatComposer, ChatComposerWithSchema };\n"],"names":["ChatComposer","props","useValidateProps","ChatComposerWithSchema","toJSON","inputValue","onChange","onResize","onSend","onFocus","onBlur","maxHeight","placeholder","inputMaxLength","buttonDisabled","dataTestid","actionRef","input","React","useRef","inputSize","inputSend","useState","height","setHeight","internalMaxHeight","useMemo","showScroll","setShowScroll","useEffect","newHeight","current","scrollHeight","clientHeight","focusToComposer","focus","focusToSend","handleChange","useCallback","e","target","value","heightProps","overflow","inputLength","String","length","hasError","visibility","pointerEvents","position","top","width","clientWidth","propTypes","composerProps","defaultProps","defaultComposerPros","describe"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { useValidatePropTypes } from '@elliemae/ds-props-helpers';
2
+
3
+ var useValidateProps = function useValidateProps(props, schema) {
4
+ useValidatePropTypes(props, schema);
5
+ };
6
+
7
+ export { useValidateProps };
8
+ //# sourceMappingURL=useValidateProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-composer/config/useValidateProps.tsx"],"sourcesContent":["import { useValidatePropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatComposerProps } from '../props';\n\nexport const useValidateProps = (props: ChatComposerProps, schema: unknown): void => {\n useValidatePropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidatePropTypes"],"mappings":";;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAA2BC,MAA3B,EAAqD;AACnFC,EAAAA,oBAAoB,CAACF,KAAD,EAAQC,MAAR,CAApB;AACD;;;;"}
@@ -8,6 +8,8 @@ import '@elliemae/ds-icons/PaperAirplane';
8
8
  import './styled.js';
9
9
  import 'styled-components';
10
10
  import '@elliemae/ds-button';
11
+ import './config/useValidateProps.js';
12
+ import '@elliemae/ds-props-helpers';
11
13
  import './props.js';
12
14
  import 'lodash';
13
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -12,7 +12,8 @@ var defaultComposerPros = {
12
12
  maxHeight: 0,
13
13
  inputMaxLength: undefined,
14
14
  buttonDisabled: false,
15
- dataTestid: 'ds-chat-composer'
15
+ dataTestid: 'ds-chat-composer',
16
+ actionRef: noop
16
17
  };
17
18
  var composerProps = {
18
19
  placeholder: PropTypes.string.description('Input Placeholder').defaultValue(defaultComposerPros.placeholder),
@@ -21,11 +22,12 @@ var composerProps = {
21
22
  onResize: PropTypes.func.description('Called the input changes his height').defaultValue(defaultComposerPros.onResize),
22
23
  onSend: PropTypes.func.description('Called when the click send').defaultValue(defaultComposerPros.onSend),
23
24
  onFocus: PropTypes.func.description('Input focus').defaultValue(defaultComposerPros.onFocus),
24
- onBlur: PropTypes.string.description('Input blur').defaultValue(defaultComposerPros.onBlur),
25
+ onBlur: PropTypes.func.description('Input blur').defaultValue(defaultComposerPros.onBlur),
25
26
  maxHeight: PropTypes.number.description('Max height of the composer. Use 0 for no limit').defaultValue(defaultComposerPros.onBlur),
26
27
  inputMaxLength: PropTypes.number.description('Max length of the composer. `undefined` for no limit').defaultValue(defaultComposerPros.inputMaxLength),
27
- buttonDisabled: PropTypes.number.description('Control the disabled for the send button').defaultValue(defaultComposerPros.buttonDisabled),
28
- dataTestid: PropTypes.string.description('Data testid').defaultValue(defaultComposerPros.placeholder)
28
+ buttonDisabled: PropTypes.bool.description('Control the disabled for the send button').defaultValue(defaultComposerPros.buttonDisabled),
29
+ dataTestid: PropTypes.string.description('Data testid').defaultValue(defaultComposerPros.placeholder),
30
+ actionRef: 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(defaultComposerPros.actionRef)
29
31
  };
30
32
 
31
33
  export { composerProps, defaultComposerPros };
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-composer/props.tsx"],"sourcesContent":["import React from 'react';\nimport { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\n\nexport interface TextAreaProps {\n height: string | number;\n style: React.CSSProperties;\n}\n\nexport const defaultComposerPros: ChatComposerProps = {\n placeholder: 'Type your message',\n inputValue: '',\n onChange: noop,\n onResize: noop,\n onSend: noop,\n onFocus: noop,\n onBlur: noop,\n maxHeight: 0,\n inputMaxLength: undefined,\n buttonDisabled: false,\n dataTestid: 'ds-chat-composer',\n};\n\nexport interface ChatComposerProps {\n placeholder: 'Type your message';\n inputValue: '';\n onChange: (value: string) => void;\n onResize: (value: number) => void;\n onSend: (value: string) => void;\n onFocus: (e: React.ChangeEvent<HTMLTextAreaElement>, value: string) => void;\n onBlur: (e: React.ChangeEvent<HTMLTextAreaElement>, value: string) => void;\n maxHeight: number;\n inputMaxLength: number | undefined;\n buttonDisabled: boolean;\n dataTestid?: string;\n}\n\nexport const composerProps = {\n placeholder: PropTypes.string.description('Input Placeholder').defaultValue(defaultComposerPros.placeholder),\n inputValue: PropTypes.string.description('Input value').defaultValue(defaultComposerPros.inputValue),\n onChange: PropTypes.func.description('Called when the user types').defaultValue(defaultComposerPros.onChange),\n onResize: PropTypes.func\n .description('Called the input changes his height')\n .defaultValue(defaultComposerPros.onResize),\n onSend: PropTypes.func.description('Called when the click send').defaultValue(defaultComposerPros.onSend),\n onFocus: PropTypes.func.description('Input focus').defaultValue(defaultComposerPros.onFocus),\n onBlur: PropTypes.string.description('Input blur').defaultValue(defaultComposerPros.onBlur),\n maxHeight: PropTypes.number\n .description('Max height of the composer. Use 0 for no limit')\n .defaultValue(defaultComposerPros.onBlur),\n inputMaxLength: PropTypes.number\n .description('Max length of the composer. `undefined` for no limit')\n .defaultValue(defaultComposerPros.inputMaxLength),\n buttonDisabled: PropTypes.number\n .description('Control the disabled for the send button')\n .defaultValue(defaultComposerPros.buttonDisabled),\n dataTestid: PropTypes.string.description('Data testid').defaultValue(defaultComposerPros.placeholder),\n};\n"],"names":["defaultComposerPros","placeholder","inputValue","onChange","noop","onResize","onSend","onFocus","onBlur","maxHeight","inputMaxLength","undefined","buttonDisabled","dataTestid","composerProps","PropTypes","string","description","defaultValue","func","number"],"mappings":";;;IASaA,mBAAsC,GAAG;AACpDC,EAAAA,WAAW,EAAE,mBADuC;AAEpDC,EAAAA,UAAU,EAAE,EAFwC;AAGpDC,EAAAA,QAAQ,EAAEC,IAH0C;AAIpDC,EAAAA,QAAQ,EAAED,IAJ0C;AAKpDE,EAAAA,MAAM,EAAEF,IAL4C;AAMpDG,EAAAA,OAAO,EAAEH,IAN2C;AAOpDI,EAAAA,MAAM,EAAEJ,IAP4C;AAQpDK,EAAAA,SAAS,EAAE,CARyC;AASpDC,EAAAA,cAAc,EAAEC,SAToC;AAUpDC,EAAAA,cAAc,EAAE,KAVoC;AAWpDC,EAAAA,UAAU,EAAE;AAXwC;IA4BzCC,aAAa,GAAG;AAC3Bb,EAAAA,WAAW,EAAEc,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,mBAA7B,EAAkDC,YAAlD,CAA+DlB,mBAAmB,CAACC,WAAnF,CADc;AAE3BC,EAAAA,UAAU,EAAEa,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,aAA7B,EAA4CC,YAA5C,CAAyDlB,mBAAmB,CAACE,UAA7E,CAFe;AAG3BC,EAAAA,QAAQ,EAAEY,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,4BAA3B,EAAyDC,YAAzD,CAAsElB,mBAAmB,CAACG,QAA1F,CAHiB;AAI3BE,EAAAA,QAAQ,EAAEU,SAAS,CAACI,IAAV,CACPF,WADO,CACK,qCADL,EAEPC,YAFO,CAEMlB,mBAAmB,CAACK,QAF1B,CAJiB;AAO3BC,EAAAA,MAAM,EAAES,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,4BAA3B,EAAyDC,YAAzD,CAAsElB,mBAAmB,CAACM,MAA1F,CAPmB;AAQ3BC,EAAAA,OAAO,EAAEQ,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,aAA3B,EAA0CC,YAA1C,CAAuDlB,mBAAmB,CAACO,OAA3E,CARkB;AAS3BC,EAAAA,MAAM,EAAEO,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,YAA7B,EAA2CC,YAA3C,CAAwDlB,mBAAmB,CAACQ,MAA5E,CATmB;AAU3BC,EAAAA,SAAS,EAAEM,SAAS,CAACK,MAAV,CACRH,WADQ,CACI,gDADJ,EAERC,YAFQ,CAEKlB,mBAAmB,CAACQ,MAFzB,CAVgB;AAa3BE,EAAAA,cAAc,EAAEK,SAAS,CAACK,MAAV,CACbH,WADa,CACD,sDADC,EAEbC,YAFa,CAEAlB,mBAAmB,CAACU,cAFpB,CAbW;AAgB3BE,EAAAA,cAAc,EAAEG,SAAS,CAACK,MAAV,CACbH,WADa,CACD,0CADC,EAEbC,YAFa,CAEAlB,mBAAmB,CAACY,cAFpB,CAhBW;AAmB3BC,EAAAA,UAAU,EAAEE,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,aAA7B,EAA4CC,YAA5C,CAAyDlB,mBAAmB,CAACC,WAA7E;AAnBe;;;;"}
1
+ {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-composer/props.tsx"],"sourcesContent":["import React from 'react';\nimport { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\n\nexport interface TextAreaProps {\n height: string | number;\n style: React.CSSProperties;\n}\n\nexport const defaultComposerPros: ChatComposerProps = {\n placeholder: 'Type your message',\n inputValue: '',\n onChange: noop,\n onResize: noop,\n onSend: noop,\n onFocus: noop,\n onBlur: noop,\n maxHeight: 0,\n inputMaxLength: undefined,\n buttonDisabled: false,\n dataTestid: 'ds-chat-composer',\n actionRef: noop,\n};\n\nexport interface ChatComposerProps {\n placeholder: 'Type your message';\n inputValue: '';\n onChange: (value: string) => void;\n onResize: (value: number) => void;\n onSend: (value: string) => void;\n onFocus: (e: React.ChangeEvent<HTMLTextAreaElement>, value: string) => void;\n onBlur: (e: React.ChangeEvent<HTMLTextAreaElement>, value: string) => void;\n maxHeight: number;\n inputMaxLength: number | undefined;\n buttonDisabled: boolean;\n dataTestid?: string;\n actionRef: PropTypes.func;\n}\n\nexport const composerProps = {\n placeholder: PropTypes.string.description('Input Placeholder').defaultValue(defaultComposerPros.placeholder),\n inputValue: PropTypes.string.description('Input value').defaultValue(defaultComposerPros.inputValue),\n onChange: PropTypes.func.description('Called when the user types').defaultValue(defaultComposerPros.onChange),\n onResize: PropTypes.func\n .description('Called the input changes his height')\n .defaultValue(defaultComposerPros.onResize),\n onSend: PropTypes.func.description('Called when the click send').defaultValue(defaultComposerPros.onSend),\n onFocus: PropTypes.func.description('Input focus').defaultValue(defaultComposerPros.onFocus),\n onBlur: PropTypes.func.description('Input blur').defaultValue(defaultComposerPros.onBlur),\n maxHeight: PropTypes.number\n .description('Max height of the composer. Use 0 for no limit')\n .defaultValue(defaultComposerPros.onBlur),\n inputMaxLength: PropTypes.number\n .description('Max length of the composer. `undefined` for no limit')\n .defaultValue(defaultComposerPros.inputMaxLength),\n buttonDisabled: PropTypes.bool\n .description('Control the disabled for the send button')\n .defaultValue(defaultComposerPros.buttonDisabled),\n dataTestid: PropTypes.string.description('Data testid').defaultValue(defaultComposerPros.placeholder),\n actionRef: PropTypes.object\n .description(\n `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 `,\n )\n .defaultValue(defaultComposerPros.actionRef),\n};\n"],"names":["defaultComposerPros","placeholder","inputValue","onChange","noop","onResize","onSend","onFocus","onBlur","maxHeight","inputMaxLength","undefined","buttonDisabled","dataTestid","actionRef","composerProps","PropTypes","string","description","defaultValue","func","number","bool","object"],"mappings":";;;IASaA,mBAAsC,GAAG;AACpDC,EAAAA,WAAW,EAAE,mBADuC;AAEpDC,EAAAA,UAAU,EAAE,EAFwC;AAGpDC,EAAAA,QAAQ,EAAEC,IAH0C;AAIpDC,EAAAA,QAAQ,EAAED,IAJ0C;AAKpDE,EAAAA,MAAM,EAAEF,IAL4C;AAMpDG,EAAAA,OAAO,EAAEH,IAN2C;AAOpDI,EAAAA,MAAM,EAAEJ,IAP4C;AAQpDK,EAAAA,SAAS,EAAE,CARyC;AASpDC,EAAAA,cAAc,EAAEC,SAToC;AAUpDC,EAAAA,cAAc,EAAE,KAVoC;AAWpDC,EAAAA,UAAU,EAAE,kBAXwC;AAYpDC,EAAAA,SAAS,EAAEV;AAZyC;IA8BzCW,aAAa,GAAG;AAC3Bd,EAAAA,WAAW,EAAEe,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,mBAA7B,EAAkDC,YAAlD,CAA+DnB,mBAAmB,CAACC,WAAnF,CADc;AAE3BC,EAAAA,UAAU,EAAEc,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,aAA7B,EAA4CC,YAA5C,CAAyDnB,mBAAmB,CAACE,UAA7E,CAFe;AAG3BC,EAAAA,QAAQ,EAAEa,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,4BAA3B,EAAyDC,YAAzD,CAAsEnB,mBAAmB,CAACG,QAA1F,CAHiB;AAI3BE,EAAAA,QAAQ,EAAEW,SAAS,CAACI,IAAV,CACPF,WADO,CACK,qCADL,EAEPC,YAFO,CAEMnB,mBAAmB,CAACK,QAF1B,CAJiB;AAO3BC,EAAAA,MAAM,EAAEU,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,4BAA3B,EAAyDC,YAAzD,CAAsEnB,mBAAmB,CAACM,MAA1F,CAPmB;AAQ3BC,EAAAA,OAAO,EAAES,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,aAA3B,EAA0CC,YAA1C,CAAuDnB,mBAAmB,CAACO,OAA3E,CARkB;AAS3BC,EAAAA,MAAM,EAAEQ,SAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,YAA3B,EAAyCC,YAAzC,CAAsDnB,mBAAmB,CAACQ,MAA1E,CATmB;AAU3BC,EAAAA,SAAS,EAAEO,SAAS,CAACK,MAAV,CACRH,WADQ,CACI,gDADJ,EAERC,YAFQ,CAEKnB,mBAAmB,CAACQ,MAFzB,CAVgB;AAa3BE,EAAAA,cAAc,EAAEM,SAAS,CAACK,MAAV,CACbH,WADa,CACD,sDADC,EAEbC,YAFa,CAEAnB,mBAAmB,CAACU,cAFpB,CAbW;AAgB3BE,EAAAA,cAAc,EAAEI,SAAS,CAACM,IAAV,CACbJ,WADa,CACD,0CADC,EAEbC,YAFa,CAEAnB,mBAAmB,CAACY,cAFpB,CAhBW;AAmB3BC,EAAAA,UAAU,EAAEG,SAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,aAA7B,EAA4CC,YAA5C,CAAyDnB,mBAAmB,CAACC,WAA7E,CAnBe;AAoB3Ba,EAAAA,SAAS,EAAEE,SAAS,CAACO,MAAV,CACRL,WADQ,oTAcRC,YAdQ,CAcKnB,mBAAmB,CAACc,SAdzB;AApBgB;;;;"}
@@ -16,7 +16,7 @@ var StyledChatContainerContentComposer = /*#__PURE__*/styled(Grid).withConfig({
16
16
  });
17
17
  var StyledComposerInput = /*#__PURE__*/styled.textarea.withConfig({
18
18
  componentId: "sc-1ahwpce-1"
19
- })(["padding:", ";resize:none;min-height:32px;border-radius:2px;border:solid 1px #cbcfd7;color:#25292f;height:", ";min-width:244px;overflow-y:auto;font-size:1rem;font-weight:400;line-height:1;transition:height 0.3s;&:focus{outline:none;border:1px solid ", ";box-shadow:inset 0 0 0 1px #8cc2ed;border-radius:2px;}"], function (props) {
19
+ })(["padding:", ";resize:none;min-height:32px;border-radius:2px;border:solid 1px #cbcfd7;color:#25292f;height:", ";min-width:244px;overflow-y:auto;font-size:13px;font-weight:400;line-height:1;transition:height 0.3s;&:focus{outline:none;border:1px solid ", ";box-shadow:inset 0 0 0 1px #8cc2ed;border-radius:2px;}"], function (props) {
20
20
  return props.theme.space.xxs;
21
21
  }, function (props) {
22
22
  return typeof props.height === 'number' ? "".concat(props.height, "px") : props.height;
@@ -25,7 +25,7 @@ var StyledComposerInput = /*#__PURE__*/styled.textarea.withConfig({
25
25
  });
26
26
  var StyledComposerButton = /*#__PURE__*/styled(DSButton).withConfig({
27
27
  componentId: "sc-1ahwpce-2"
28
- })(["background:none;&:disabled{svg{fill:#5d6775;}}svg{fill:", ";}&:focus{background:", ";}"], function (props) {
28
+ })(["&:disabled{background:none;svg{fill:#5d6775;}}svg{fill:", ";}&:focus{background:", ";}"], function (props) {
29
29
  return props.theme.colors.brand[600];
30
30
  }, function (props) {
31
31
  return props.theme.colors.brand[200];
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../src/parts/chat-composer/styled.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSButton } from '@elliemae/ds-button';\nimport { TextAreaProps } from './props';\n\n// Composer\nexport const StyledChatContainerContentComposer = styled(Grid)`\n width: 100%;\n min-height: 56px;\n background: ${(props) => props.theme.colors.neutral['050']};\n padding: ${(props) => props.theme.space.xxs};\n padding-bottom: 3px;\n padding-top: 6px;\n padding-left: ${(props) => props.theme.space.xs};\n max-height: ${(props) => props.maxHeight};\n border-top: 1px solid #cbcfd7;\n`;\n\nexport const StyledComposerInput = styled.textarea<any>`\n padding: ${(props) => props.theme.space.xxs};\n resize: none;\n min-height: 32px;\n border-radius: 2px;\n border: solid 1px #cbcfd7;\n color: #25292f;\n height: ${(props: TextAreaProps) => (typeof props.height === 'number' ? `${props.height}px` : props.height)};\n min-width: 244px;\n overflow-y: auto;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1;\n transition: height 0.3s;\n &:focus {\n outline: none;\n border: 1px solid ${(props) => props.theme.colors.brand[600]};\n box-shadow: inset 0 0 0 1px #8cc2ed;\n border-radius: 2px;\n }\n`;\nexport const StyledComposerButton = styled(DSButton)`\n background: none;\n &:disabled {\n svg {\n fill: #5d6775;\n }\n }\n svg {\n fill: ${(props) => props.theme.colors.brand[600]};\n }\n &:focus {\n background: ${(props) => props.theme.colors.brand[200]};\n }\n`;\n\nexport const StyledCounterArea = styled(Grid)`\n text-align: right;\n font-size: 11px;\n height: 15px;\n align-items: center;\n font-style: italic;\n ${(props) => (props.hasError ? `color:${props.theme.colors.danger[900]};` : '')}\n position:relative;\n`;\n\nexport const StyledCounterErrorA11y = styled.span`\n width: 1px;\n height: 1px;\n position: absolute;\n clip: rect(1px, 1px, 1px, 1px);\n`;\n"],"names":["StyledChatContainerContentComposer","styled","Grid","props","theme","colors","neutral","space","xxs","xs","maxHeight","StyledComposerInput","textarea","height","brand","StyledComposerButton","DSButton","StyledCounterArea","hasError","danger","StyledCounterErrorA11y","span"],"mappings":";;;;AAKA;IACaA,kCAAkC,gBAAGC,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA,mKAG/B,UAACC,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,OAAnB,CAA2B,KAA3B,CAAX;AAAA,CAH+B,EAIlC,UAACH,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYG,KAAZ,CAAkBC,GAA7B;AAAA,CAJkC,EAO7B,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYG,KAAZ,CAAkBE,EAA7B;AAAA,CAP6B,EAQ/B,UAACN,KAAD;AAAA,SAAWA,KAAK,CAACO,SAAjB;AAAA,CAR+B;IAYlCC,mBAAmB,gBAAGV,MAAM,CAACW,QAAV;AAAA;AAAA,4TACnB,UAACT,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYG,KAAZ,CAAkBC,GAA7B;AAAA,CADmB,EAOpB,UAACL,KAAD;AAAA,SAA2B,OAAOA,KAAK,CAACU,MAAb,KAAwB,QAAxB,aAAsCV,KAAK,CAACU,MAA5C,UAAyDV,KAAK,CAACU,MAA1F;AAAA,CAPoB,EAgBR,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBS,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CAhBQ;IAqBnBC,oBAAoB,gBAAGd,MAAM,CAACe,QAAD,CAAT;AAAA;AAAA,+FAQrB,UAACb,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBS,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CARqB,EAWf,UAACX,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBS,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CAXe;IAepBG,iBAAiB,gBAAGhB,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA,iHAM1B,UAACC,KAAD;AAAA,SAAYA,KAAK,CAACe,QAAN,mBAA0Bf,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBc,MAAnB,CAA0B,GAA1B,CAA1B,SAA8D,EAA1E;AAAA,CAN0B;IAUjBC,sBAAsB,gBAAGnB,MAAM,CAACoB,IAAV;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../src/parts/chat-composer/styled.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSButton } from '@elliemae/ds-button';\nimport { TextAreaProps } from './props';\n\n// Composer\nexport const StyledChatContainerContentComposer = styled(Grid)`\n width: 100%;\n min-height: 56px;\n background: ${(props) => props.theme.colors.neutral['050']};\n padding: ${(props) => props.theme.space.xxs};\n padding-bottom: 3px;\n padding-top: 6px;\n padding-left: ${(props) => props.theme.space.xs};\n max-height: ${(props) => props.maxHeight};\n border-top: 1px solid #cbcfd7;\n`;\n\nexport const StyledComposerInput = styled.textarea<any>`\n padding: ${(props) => props.theme.space.xxs};\n resize: none;\n min-height: 32px;\n border-radius: 2px;\n border: solid 1px #cbcfd7;\n color: #25292f;\n height: ${(props: TextAreaProps) => (typeof props.height === 'number' ? `${props.height}px` : props.height)};\n min-width: 244px;\n overflow-y: auto;\n font-size: 13px;\n font-weight: 400;\n line-height: 1;\n transition: height 0.3s;\n &:focus {\n outline: none;\n border: 1px solid ${(props) => props.theme.colors.brand[600]};\n box-shadow: inset 0 0 0 1px #8cc2ed;\n border-radius: 2px;\n }\n`;\nexport const StyledComposerButton = styled(DSButton)`\n &:disabled {\n background: none;\n svg {\n fill: #5d6775;\n }\n }\n svg {\n fill: ${(props) => props.theme.colors.brand[600]};\n }\n &:focus {\n background: ${(props) => props.theme.colors.brand[200]};\n }\n`;\n\nexport const StyledCounterArea = styled(Grid)`\n text-align: right;\n font-size: 11px;\n height: 15px;\n align-items: center;\n font-style: italic;\n ${(props) => (props.hasError ? `color:${props.theme.colors.danger[900]};` : '')}\n position:relative;\n`;\n\nexport const StyledCounterErrorA11y = styled.span`\n width: 1px;\n height: 1px;\n position: absolute;\n clip: rect(1px, 1px, 1px, 1px);\n`;\n"],"names":["StyledChatContainerContentComposer","styled","Grid","props","theme","colors","neutral","space","xxs","xs","maxHeight","StyledComposerInput","textarea","height","brand","StyledComposerButton","DSButton","StyledCounterArea","hasError","danger","StyledCounterErrorA11y","span"],"mappings":";;;;AAKA;IACaA,kCAAkC,gBAAGC,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA,mKAG/B,UAACC,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,OAAnB,CAA2B,KAA3B,CAAX;AAAA,CAH+B,EAIlC,UAACH,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYG,KAAZ,CAAkBC,GAA7B;AAAA,CAJkC,EAO7B,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYG,KAAZ,CAAkBE,EAA7B;AAAA,CAP6B,EAQ/B,UAACN,KAAD;AAAA,SAAWA,KAAK,CAACO,SAAjB;AAAA,CAR+B;IAYlCC,mBAAmB,gBAAGV,MAAM,CAACW,QAAV;AAAA;AAAA,4TACnB,UAACT,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYG,KAAZ,CAAkBC,GAA7B;AAAA,CADmB,EAOpB,UAACL,KAAD;AAAA,SAA2B,OAAOA,KAAK,CAACU,MAAb,KAAwB,QAAxB,aAAsCV,KAAK,CAACU,MAA5C,UAAyDV,KAAK,CAACU,MAA1F;AAAA,CAPoB,EAgBR,UAACV,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBS,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CAhBQ;IAqBnBC,oBAAoB,gBAAGd,MAAM,CAACe,QAAD,CAAT;AAAA;AAAA,+FAQrB,UAACb,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBS,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CARqB,EAWf,UAACX,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBS,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CAXe;IAepBG,iBAAiB,gBAAGhB,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA,iHAM1B,UAACC,KAAD;AAAA,SAAYA,KAAK,CAACe,QAAN,mBAA0Bf,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBc,MAAnB,CAA0B,GAA1B,CAA1B,SAA8D,EAA1E;AAAA,CAN0B;IAUjBC,sBAAsB,gBAAGnB,MAAM,CAACoB,IAAV;AAAA;AAAA;;;;"}
@@ -8,6 +8,7 @@ import { ChatComposer } from '../chat-composer/ChatContainerComposer.js';
8
8
  import { ChatContainerMessagesList } from '../chat-container-messages-list/ChatContainerMessagesList.js';
9
9
  import { containerProps, defaultProps } from './props.js';
10
10
  import { StyledIndicatorContainer, StyledChatContainerContent, MobileStyledChatContainerContent } from './styled.js';
11
+ import { useValidateProps } from './config/useValidateProps.js';
11
12
  import '@babel/runtime/helpers/esm/defineProperty';
12
13
  import '@babel/runtime/helpers/esm/slicedToArray';
13
14
  import '@elliemae/ds-grid';
@@ -15,6 +16,8 @@ import '@elliemae/ds-icons/PaperAirplane';
15
16
  import '../chat-composer/styled.js';
16
17
  import 'styled-components';
17
18
  import '@elliemae/ds-button';
19
+ import '../chat-composer/config/useValidateProps.js';
20
+ import '@elliemae/ds-props-helpers';
18
21
  import '../chat-composer/props.js';
19
22
  import 'react-virtual';
20
23
  import '@elliemae/ds-basic/Button';
@@ -23,19 +26,24 @@ import '@elliemae/ds-icons/WarningCircleFill';
23
26
  import '../bubble/styled.js';
24
27
  import '../bubble/props.js';
25
28
  import 'prop-types';
29
+ import '../bubble/config/useValidateProps.js';
26
30
  import '../bubble/ChatBubbleArrow.js';
27
31
  import '../message-delimiter/MessageDelimiter.js';
28
32
  import '../message-delimiter/styled.js';
29
33
  import '../message-delimiter/props.js';
34
+ import '../message-delimiter/config/useValidateProps.js';
30
35
  import '../system-message/SystemMessage.js';
31
36
  import '../system-message/style.js';
32
37
  import '../system-message/props.js';
38
+ import '../system-message/config/useValidateProps.js';
33
39
  import '../chat-container-messages-list/styled.js';
34
40
  import '../chat-container-messages-list/props.js';
41
+ import '../chat-container-messages-list/config/useValidateProps.js';
35
42
 
36
43
  var ChatContainer = function ChatContainer(props) {
37
44
  var _containerRef$current;
38
45
 
46
+ useValidateProps(props, ChatContainerWithSchema.toJSON());
39
47
  var sendingText = props.sendingText,
40
48
  sendingMessages = props.sendingMessages,
41
49
  bannerPosition = props.bannerPosition,
@@ -108,7 +116,8 @@ var ChatContainer = function ChatContainer(props) {
108
116
  lineOnly: true
109
117
  })) : null), /*#__PURE__*/React.createElement(ChatComposer, _extends({}, composerProps, {
110
118
  onResize: onResize,
111
- maxHeight: (((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.clientHeight) || 0) / 2
119
+ maxHeight: (((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.clientHeight) || 0) / 2,
120
+ actionRef: actionRef || listRef
112
121
  })));
113
122
  };
114
123
 
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContainer.js","sources":["../../../../src/parts/chat-container/ChatContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { noop } from 'lodash';\nimport { describe } from 'react-desc';\nimport DSIndeterminateProgressIndicator from '@elliemae/ds-basic/IndeterminateProgressIndicator';\nimport DSBanner, { BANNER_TYPES } from '@elliemae/ds-banner';\nimport { ChatComposer } from '../chat-composer';\nimport { ChatContainerMessagesList } from '../chat-container-messages-list';\nimport { ChatContainerProps, defaultProps, containerProps } from './props';\nimport { StyledChatContainerContent, StyledIndicatorContainer, MobileStyledChatContainerContent } from './styled';\n\nconst ChatContainer = (props: ChatContainerProps): JSX.Element => {\n const {\n sendingText,\n sendingMessages,\n bannerPosition,\n bannerProps,\n messagesListProps,\n composerProps,\n composerProps: { onResize: onComposerResize },\n actionRef,\n autoScroll,\n device,\n isLoading,\n hasMoreItems,\n getMoreMessages,\n } = props;\n\n const containerRef = React.useRef<HTMLElement>();\n const listRef = React.useRef({ scrollToIndex: noop });\n const onResize = React.useCallback(\n (height: number) => {\n if (onComposerResize) onComposerResize(height);\n if (autoScroll) {\n listRef.current.scrollToIndex(messagesListProps.messages.length - 1, {\n align: 'end',\n });\n }\n },\n [onComposerResize, messagesListProps.messages, autoScroll],\n );\n const Container = device === 'desktop' ? StyledChatContainerContent : MobileStyledChatContainerContent;\n\n return (\n <Container rows={['minmax(0, 1fr)', 'auto']} ref={containerRef} role=\"region\" aria-label=\"chat window\">\n <div style={{ position: 'relative' }}>\n <ChatContainerMessagesList\n {...messagesListProps}\n actionRef={actionRef || listRef}\n isLoading={isLoading}\n hasMoreItems={hasMoreItems}\n getMoreMessages={getMoreMessages}\n sendingMessages={sendingMessages}\n sendingText={sendingText}\n />\n {['top', 'bottom'].includes(isLoading) ? (\n <StyledIndicatorContainer isLoading={isLoading}>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" />\n </StyledIndicatorContainer>\n ) : null}\n {['top', 'bottom'].includes(bannerPosition) ? (\n <StyledIndicatorContainer isLoading={bannerPosition}>\n <DSBanner\n showCloseButton\n label={bannerProps.label || 'Unread messages'}\n containerProps={{ id: 'ds-chat-banner' }}\n actionLink={{\n label: bannerProps.viewLabel || 'View',\n onClick: bannerProps.onView,\n }}\n onClose={bannerProps.onClose}\n isOpen\n type={BANNER_TYPES.INFO}\n />\n </StyledIndicatorContainer>\n ) : null}\n {sendingMessages && sendingMessages.length > 0 ? (\n <StyledIndicatorContainer isLoading=\"bottom\" linear>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" lineOnly />\n </StyledIndicatorContainer>\n ) : null}\n </div>\n <ChatComposer {...composerProps} onResize={onResize} maxHeight={(containerRef.current?.clientHeight || 0) / 2} />\n </Container>\n );\n};\n\nChatContainer.propTypes = containerProps;\nChatContainer.defaultProps = defaultProps;\nconst ChatContainerWithSchema = describe(ChatContainer);\nChatContainerWithSchema.propTypes = containerProps;\n\nexport { ChatContainer, ChatContainerWithSchema };\n"],"names":["ChatContainer","props","sendingText","sendingMessages","bannerPosition","bannerProps","messagesListProps","composerProps","onComposerResize","onResize","actionRef","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","containerRef","React","useRef","listRef","scrollToIndex","noop","useCallback","height","current","messages","length","align","Container","StyledChatContainerContent","MobileStyledChatContainerContent","position","includes","label","id","viewLabel","onClick","onView","onClose","BANNER_TYPES","INFO","clientHeight","propTypes","containerProps","defaultProps","ChatContainerWithSchema","describe"],"mappings":"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"}
1
+ {"version":3,"file":"ChatContainer.js","sources":["../../../../src/parts/chat-container/ChatContainer.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React from 'react';\nimport { noop } from 'lodash';\nimport { describe } from 'react-desc';\nimport DSIndeterminateProgressIndicator from '@elliemae/ds-basic/IndeterminateProgressIndicator';\nimport DSBanner, { BANNER_TYPES } from '@elliemae/ds-banner';\nimport { ChatComposer } from '../chat-composer';\nimport { ChatContainerMessagesList } from '../chat-container-messages-list';\nimport { ChatContainerProps, defaultProps, containerProps } from './props';\nimport { StyledChatContainerContent, StyledIndicatorContainer, MobileStyledChatContainerContent } from './styled';\nimport { useValidateProps } from './config/useValidateProps';\n\nconst ChatContainer = (props: ChatContainerProps): JSX.Element => {\n useValidateProps(props, ChatContainerWithSchema.toJSON());\n\n const {\n sendingText,\n sendingMessages,\n bannerPosition,\n bannerProps,\n messagesListProps,\n composerProps,\n composerProps: { onResize: onComposerResize },\n actionRef,\n autoScroll,\n device,\n isLoading,\n hasMoreItems,\n getMoreMessages,\n } = props;\n\n const containerRef = React.useRef<HTMLElement>();\n const listRef = React.useRef({ scrollToIndex: noop });\n const onResize = React.useCallback(\n (height: number) => {\n if (onComposerResize) onComposerResize(height);\n if (autoScroll) {\n listRef.current.scrollToIndex(messagesListProps.messages.length - 1, {\n align: 'end',\n });\n }\n },\n [onComposerResize, messagesListProps.messages, autoScroll],\n );\n const Container = device === 'desktop' ? StyledChatContainerContent : MobileStyledChatContainerContent;\n\n return (\n <Container rows={['minmax(0, 1fr)', 'auto']} ref={containerRef} role=\"region\" aria-label=\"chat window\">\n <div style={{ position: 'relative' }}>\n <ChatContainerMessagesList\n {...messagesListProps}\n actionRef={actionRef || listRef}\n isLoading={isLoading}\n hasMoreItems={hasMoreItems}\n getMoreMessages={getMoreMessages}\n sendingMessages={sendingMessages}\n sendingText={sendingText}\n />\n {['top', 'bottom'].includes(isLoading) ? (\n <StyledIndicatorContainer isLoading={isLoading}>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" />\n </StyledIndicatorContainer>\n ) : null}\n {['top', 'bottom'].includes(bannerPosition) ? (\n <StyledIndicatorContainer isLoading={bannerPosition}>\n <DSBanner\n showCloseButton\n label={bannerProps.label || 'Unread messages'}\n containerProps={{ id: 'ds-chat-banner' }}\n actionLink={{\n label: bannerProps.viewLabel || 'View',\n onClick: bannerProps.onView,\n }}\n onClose={bannerProps.onClose}\n isOpen\n type={BANNER_TYPES.INFO}\n />\n </StyledIndicatorContainer>\n ) : null}\n {sendingMessages && sendingMessages.length > 0 ? (\n <StyledIndicatorContainer isLoading=\"bottom\" linear>\n <DSIndeterminateProgressIndicator processing title=\"Loading\" lineOnly />\n </StyledIndicatorContainer>\n ) : null}\n </div>\n <ChatComposer\n {...composerProps}\n onResize={onResize}\n maxHeight={(containerRef.current?.clientHeight || 0) / 2}\n actionRef={actionRef || listRef}\n />\n </Container>\n );\n};\n\nChatContainer.propTypes = containerProps;\nChatContainer.defaultProps = defaultProps;\nconst ChatContainerWithSchema = describe(ChatContainer);\nChatContainerWithSchema.propTypes = containerProps;\n\nexport { ChatContainer, ChatContainerWithSchema };\n"],"names":["ChatContainer","props","useValidateProps","ChatContainerWithSchema","toJSON","sendingText","sendingMessages","bannerPosition","bannerProps","messagesListProps","composerProps","onComposerResize","onResize","actionRef","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","containerRef","React","useRef","listRef","scrollToIndex","noop","useCallback","height","current","messages","length","align","Container","StyledChatContainerContent","MobileStyledChatContainerContent","position","includes","label","id","viewLabel","onClick","onView","onClose","BANNER_TYPES","INFO","clientHeight","propTypes","containerProps","defaultProps","describe"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { useValidatePropTypes } from '@elliemae/ds-props-helpers';
2
+
3
+ var useValidateProps = function useValidateProps(props, schema) {
4
+ useValidatePropTypes(props, schema);
5
+ };
6
+
7
+ export { useValidateProps };
8
+ //# sourceMappingURL=useValidateProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidateProps.js","sources":["../../../../../src/parts/chat-container/config/useValidateProps.tsx"],"sourcesContent":["import { useValidatePropTypes } from '@elliemae/ds-props-helpers';\nimport { ChatContainerProps } from '../props';\n\nexport const useValidateProps = (props: ChatContainerProps, schema: unknown): void => {\n useValidatePropTypes(props, schema);\n};\n"],"names":["useValidateProps","props","schema","useValidatePropTypes"],"mappings":";;IAGaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAA4BC,MAA5B,EAAsD;AACpFC,EAAAA,oBAAoB,CAACF,KAAD,EAAQC,MAAR,CAApB;AACD;;;;"}
@@ -13,6 +13,8 @@ import '@elliemae/ds-icons/PaperAirplane';
13
13
  import '../chat-composer/styled.js';
14
14
  import 'styled-components';
15
15
  import '@elliemae/ds-button';
16
+ import '../chat-composer/config/useValidateProps.js';
17
+ import '@elliemae/ds-props-helpers';
16
18
  import '../chat-composer/props.js';
17
19
  import '../chat-container-messages-list/ChatContainerMessagesList.js';
18
20
  import 'react-virtual';
@@ -22,15 +24,20 @@ import '@elliemae/ds-icons/WarningCircleFill';
22
24
  import '../bubble/styled.js';
23
25
  import '../bubble/props.js';
24
26
  import 'prop-types';
27
+ import '../bubble/config/useValidateProps.js';
25
28
  import '../bubble/ChatBubbleArrow.js';
26
29
  import '../message-delimiter/MessageDelimiter.js';
27
30
  import '../message-delimiter/styled.js';
28
31
  import '../message-delimiter/props.js';
32
+ import '../message-delimiter/config/useValidateProps.js';
29
33
  import '../system-message/SystemMessage.js';
30
34
  import '../system-message/style.js';
31
35
  import '../system-message/props.js';
36
+ import '../system-message/config/useValidateProps.js';
32
37
  import '../chat-container-messages-list/styled.js';
33
38
  import '../chat-container-messages-list/props.js';
39
+ import '../chat-container-messages-list/config/useValidateProps.js';
34
40
  import './props.js';
35
41
  import './styled.js';
42
+ import './config/useValidateProps.js';
36
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,7 +6,7 @@ import { defaultComposerPros } from '../chat-composer/props.js';
6
6
  var defaultProps = {
7
7
  messagesListProps: defaultProps$1,
8
8
  composerProps: defaultComposerPros,
9
- actionRef: noop,
9
+ actionRef: undefined,
10
10
  autoScroll: false,
11
11
  device: 'desktop',
12
12
  isLoading: undefined,
@@ -33,7 +33,8 @@ var containerProps = {
33
33
  bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Loading messages indicator at the `top` or `bottom` of the container'),
34
34
  bannerProps: PropTypes.arrayOf(PropTypes.object).description('Banner configuration').defaultValue(defaultProps.bannerProps),
35
35
  sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).description('Array of ids of sending messages').defaultValue(defaultProps.sendingMessages),
36
- sendingText: PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText)
36
+ sendingText: PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText),
37
+ actionRef: 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)
37
38
  };
38
39
 
39
40
  export { containerProps, defaultProps };
@@ -1 +1 @@
1
- {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container/props.ts"],"sourcesContent":["import { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport {\n ChatContainerMessagesListProps,\n defaultProps as defaultListProps,\n} from '../chat-container-messages-list/props';\nimport { defaultComposerPros, ChatComposerProps } from '../chat-composer/props';\n\ninterface ChatBannerProps {\n label: string;\n viewLabel: string;\n onView: () => void;\n onClose: () => void;\n}\nexport interface ChatContainerProps {\n messagesListProps: Pick<ChatContainerMessagesListProps, 'messages' | 'onScrollEnds'>;\n composerProps: ChatComposerProps;\n actionRef: PropTypes.func;\n autoScroll: boolean;\n device: 'desktop' | 'mobile';\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n bannerPosition?: 'top' | 'bottom';\n bannerProps?: ChatBannerProps;\n sendingMessages?: string[] | number[];\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerProps = {\n messagesListProps: defaultListProps,\n composerProps: defaultComposerPros,\n actionRef: noop,\n autoScroll: false,\n device: 'desktop',\n isLoading: undefined,\n hasMoreItems: undefined,\n getMoreMessages: noop,\n bannerPosition: undefined,\n bannerProps: {\n label: 'Unread Messages',\n viewLabel: 'View',\n onView: noop,\n onClose: noop,\n },\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const containerProps = {\n messagesListProps: PropTypes.arrayOf(PropTypes.object)\n .description('ChatMessageList props \"messages\" / \"onScrollEnds\"')\n .defaultValue(defaultProps.messagesListProps),\n composerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Composer configuration')\n .defaultValue(defaultProps.composerProps),\n autoScroll: PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),\n device: PropTypes.string\n .description('Option to render mobile or desktop style composer')\n .defaultValue(defaultProps.device),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n bannerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Banner configuration')\n .defaultValue(defaultProps.bannerProps),\n sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n};\n"],"names":["defaultProps","messagesListProps","defaultListProps","composerProps","defaultComposerPros","actionRef","noop","autoScroll","device","isLoading","undefined","hasMoreItems","getMoreMessages","bannerPosition","bannerProps","label","viewLabel","onView","onClose","sendingMessages","sendingText","containerProps","PropTypes","arrayOf","object","description","defaultValue","bool","string","oneOf","func","oneOfType","number"],"mappings":";;;;;IA6BaA,YAAgC,GAAG;AAC9CC,EAAAA,iBAAiB,EAAEC,cAD2B;AAE9CC,EAAAA,aAAa,EAAEC,mBAF+B;AAG9CC,EAAAA,SAAS,EAAEC,IAHmC;AAI9CC,EAAAA,UAAU,EAAE,KAJkC;AAK9CC,EAAAA,MAAM,EAAE,SALsC;AAM9CC,EAAAA,SAAS,EAAEC,SANmC;AAO9CC,EAAAA,YAAY,EAAED,SAPgC;AAQ9CE,EAAAA,eAAe,EAAEN,IAR6B;AAS9CO,EAAAA,cAAc,EAAEH,SAT8B;AAU9CI,EAAAA,WAAW,EAAE;AACXC,IAAAA,KAAK,EAAE,iBADI;AAEXC,IAAAA,SAAS,EAAE,MAFA;AAGXC,IAAAA,MAAM,EAAEX,IAHG;AAIXY,IAAAA,OAAO,EAAEZ;AAJE,GAViC;AAgB9Ca,EAAAA,eAAe,EAAET,SAhB6B;AAiB9CU,EAAAA,WAAW,EAAE;AAjBiC;IAoBnCC,cAAc,GAAG;AAC5BpB,EAAAA,iBAAiB,EAAEqB,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EAChBC,WADgB,CACJ,mDADI,EAEhBC,YAFgB,CAEH1B,YAAY,CAACC,iBAFV,CADS;AAI5BE,EAAAA,aAAa,EAAEmB,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACZC,WADY,CACA,wBADA,EAEZC,YAFY,CAEC1B,YAAY,CAACG,aAFd,CAJa;AAO5BI,EAAAA,UAAU,EAAEe,SAAS,CAACK,IAAV,CAAeF,WAAf,CAA2B,iCAA3B,EAA8DC,YAA9D,CAA2E1B,YAAY,CAACO,UAAxF,CAPgB;AAQ5BC,EAAAA,MAAM,EAAEc,SAAS,CAACM,MAAV,CACLH,WADK,CACO,mDADP,EAELC,YAFK,CAEQ1B,YAAY,CAACQ,MAFrB,CARoB;AAW5BC,EAAAA,SAAS,EAAEa,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBnB,SAAlB,CAAhB,EAA8Ce,WAA9C,CACT,2EADS,CAXiB;AAc5Bd,EAAAA,YAAY,EAAEW,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBnB,SAAlB,CAAhB,EAA8Ce,WAA9C,CACZ,iEADY,CAdc;AAiB5Bb,EAAAA,eAAe,EAAEU,SAAS,CAACQ,IAAV,CACdL,WADc,CACF,0CADE,EAEdC,YAFc,CAED1B,YAAY,CAACY,eAFZ,CAjBW;AAoB5BC,EAAAA,cAAc,EAAES,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBnB,SAAlB,CAAhB,EAA8Ce,WAA9C,CACd,2EADc,CApBY;AAuB5BX,EAAAA,WAAW,EAAEQ,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACVC,WADU,CACE,sBADF,EAEVC,YAFU,CAEG1B,YAAY,CAACc,WAFhB,CAvBe;AA0B5BK,EAAAA,eAAe,EAAEG,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACS,SAAV,CAAoB,CAACT,SAAS,CAACM,MAAX,EAAmBN,SAAS,CAACU,MAA7B,CAApB,CAAlB,EACdP,WADc,CACF,kCADE,EAEdC,YAFc,CAED1B,YAAY,CAACmB,eAFZ,CA1BW;AA6B5BC,EAAAA,WAAW,EAAEE,SAAS,CAACM,MAAV,CACVH,WADU,CACE,kDADF,EAEVC,YAFU,CAEG1B,YAAY,CAACoB,WAFhB;AA7Be;;;;"}
1
+ {"version":3,"file":"props.js","sources":["../../../../src/parts/chat-container/props.ts"],"sourcesContent":["import { PropTypes } from 'react-desc';\nimport { noop } from 'lodash';\nimport {\n ChatContainerMessagesListProps,\n defaultProps as defaultListProps,\n} from '../chat-container-messages-list/props';\nimport { defaultComposerPros, ChatComposerProps } from '../chat-composer/props';\n\ninterface ChatBannerProps {\n label: string;\n viewLabel: string;\n onView: () => void;\n onClose: () => void;\n}\nexport interface ChatContainerProps {\n messagesListProps: Pick<ChatContainerMessagesListProps, 'messages' | 'onScrollEnds'>;\n composerProps: ChatComposerProps;\n actionRef: PropTypes.func;\n autoScroll: boolean;\n device: 'desktop' | 'mobile';\n isLoading?: 'top' | 'bottom';\n hasMoreItems?: 'top' | 'bottom';\n getMoreMessages: PropTypes.func;\n bannerPosition?: 'top' | 'bottom';\n bannerProps?: ChatBannerProps;\n sendingMessages?: string[] | number[];\n sendingText: string;\n}\n\nexport const defaultProps: ChatContainerProps = {\n messagesListProps: defaultListProps,\n composerProps: defaultComposerPros,\n actionRef: undefined,\n autoScroll: false,\n device: 'desktop',\n isLoading: undefined,\n hasMoreItems: undefined,\n getMoreMessages: noop,\n bannerPosition: undefined,\n bannerProps: {\n label: 'Unread Messages',\n viewLabel: 'View',\n onView: noop,\n onClose: noop,\n },\n sendingMessages: undefined,\n sendingText: 'Sending',\n};\n\nexport const containerProps = {\n messagesListProps: PropTypes.arrayOf(PropTypes.object)\n .description('ChatMessageList props \"messages\" / \"onScrollEnds\"')\n .defaultValue(defaultProps.messagesListProps),\n composerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Composer configuration')\n .defaultValue(defaultProps.composerProps),\n autoScroll: PropTypes.bool.description('Auto scroll to bottom on resize').defaultValue(defaultProps.autoScroll),\n device: PropTypes.string\n .description('Option to render mobile or desktop style composer')\n .defaultValue(defaultProps.device),\n isLoading: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n hasMoreItems: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Load More button at the `top` or `bottom` of the container',\n ),\n getMoreMessages: PropTypes.func\n .description('Called when the user clicks on load more')\n .defaultValue(defaultProps.getMoreMessages),\n bannerPosition: PropTypes.oneOf(['top', 'bottom', undefined]).description(\n 'Show Loading messages indicator at the `top` or `bottom` of the container',\n ),\n bannerProps: PropTypes.arrayOf(PropTypes.object)\n .description('Banner configuration')\n .defaultValue(defaultProps.bannerProps),\n sendingMessages: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n .description('Array of ids of sending messages')\n .defaultValue(defaultProps.sendingMessages),\n sendingText: PropTypes.string\n .description('Label description for messages in sending status')\n .defaultValue(defaultProps.sendingText),\n actionRef: PropTypes.object\n .description(\n `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 `,\n )\n .defaultValue(defaultProps.actionRef),\n};\n"],"names":["defaultProps","messagesListProps","defaultListProps","composerProps","defaultComposerPros","actionRef","undefined","autoScroll","device","isLoading","hasMoreItems","getMoreMessages","noop","bannerPosition","bannerProps","label","viewLabel","onView","onClose","sendingMessages","sendingText","containerProps","PropTypes","arrayOf","object","description","defaultValue","bool","string","oneOf","func","oneOfType","number"],"mappings":";;;;;IA6BaA,YAAgC,GAAG;AAC9CC,EAAAA,iBAAiB,EAAEC,cAD2B;AAE9CC,EAAAA,aAAa,EAAEC,mBAF+B;AAG9CC,EAAAA,SAAS,EAAEC,SAHmC;AAI9CC,EAAAA,UAAU,EAAE,KAJkC;AAK9CC,EAAAA,MAAM,EAAE,SALsC;AAM9CC,EAAAA,SAAS,EAAEH,SANmC;AAO9CI,EAAAA,YAAY,EAAEJ,SAPgC;AAQ9CK,EAAAA,eAAe,EAAEC,IAR6B;AAS9CC,EAAAA,cAAc,EAAEP,SAT8B;AAU9CQ,EAAAA,WAAW,EAAE;AACXC,IAAAA,KAAK,EAAE,iBADI;AAEXC,IAAAA,SAAS,EAAE,MAFA;AAGXC,IAAAA,MAAM,EAAEL,IAHG;AAIXM,IAAAA,OAAO,EAAEN;AAJE,GAViC;AAgB9CO,EAAAA,eAAe,EAAEb,SAhB6B;AAiB9Cc,EAAAA,WAAW,EAAE;AAjBiC;IAoBnCC,cAAc,GAAG;AAC5BpB,EAAAA,iBAAiB,EAAEqB,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EAChBC,WADgB,CACJ,mDADI,EAEhBC,YAFgB,CAEH1B,YAAY,CAACC,iBAFV,CADS;AAI5BE,EAAAA,aAAa,EAAEmB,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACZC,WADY,CACA,wBADA,EAEZC,YAFY,CAEC1B,YAAY,CAACG,aAFd,CAJa;AAO5BI,EAAAA,UAAU,EAAEe,SAAS,CAACK,IAAV,CAAeF,WAAf,CAA2B,iCAA3B,EAA8DC,YAA9D,CAA2E1B,YAAY,CAACO,UAAxF,CAPgB;AAQ5BC,EAAAA,MAAM,EAAEc,SAAS,CAACM,MAAV,CACLH,WADK,CACO,mDADP,EAELC,YAFK,CAEQ1B,YAAY,CAACQ,MAFrB,CARoB;AAW5BC,EAAAA,SAAS,EAAEa,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACT,2EADS,CAXiB;AAc5Bf,EAAAA,YAAY,EAAEY,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACZ,iEADY,CAdc;AAiB5Bd,EAAAA,eAAe,EAAEW,SAAS,CAACQ,IAAV,CACdL,WADc,CACF,0CADE,EAEdC,YAFc,CAED1B,YAAY,CAACW,eAFZ,CAjBW;AAoB5BE,EAAAA,cAAc,EAAES,SAAS,CAACO,KAAV,CAAgB,CAAC,KAAD,EAAQ,QAAR,EAAkBvB,SAAlB,CAAhB,EAA8CmB,WAA9C,CACd,2EADc,CApBY;AAuB5BX,EAAAA,WAAW,EAAEQ,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,EACVC,WADU,CACE,sBADF,EAEVC,YAFU,CAEG1B,YAAY,CAACc,WAFhB,CAvBe;AA0B5BK,EAAAA,eAAe,EAAEG,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACS,SAAV,CAAoB,CAACT,SAAS,CAACM,MAAX,EAAmBN,SAAS,CAACU,MAA7B,CAApB,CAAlB,EACdP,WADc,CACF,kCADE,EAEdC,YAFc,CAED1B,YAAY,CAACmB,eAFZ,CA1BW;AA6B5BC,EAAAA,WAAW,EAAEE,SAAS,CAACM,MAAV,CACVH,WADU,CACE,kDADF,EAEVC,YAFU,CAEG1B,YAAY,CAACoB,WAFhB,CA7Be;AAgC5Bf,EAAAA,SAAS,EAAEiB,SAAS,CAACE,MAAV,CACRC,WADQ,oTAcRC,YAdQ,CAcK1B,YAAY,CAACK,SAdlB;AAhCiB;;;;"}
@@ -1,11 +1,13 @@
1
1
  import styled from 'styled-components';
2
2
  import { Grid } from '@elliemae/ds-grid';
3
3
  import { StyledTitleLeftBubble, StyleBodyWrapper, StyledTitleRightBubble } from '../bubble/styled.js';
4
+ import { StyledComposerInput } from '../chat-composer/styled.js';
4
5
  import { Wrapper, Title, Message, Time } from '../system-message/style.js';
5
6
  import '../bubble/props.js';
6
7
  import 'prop-types';
7
8
  import 'react-desc';
8
9
  import 'lodash';
10
+ import '@elliemae/ds-button';
9
11
 
10
12
  var CONTAINER_WIDTH = 300;
11
13
  var StyledChatContainerContent = /*#__PURE__*/styled(Grid).withConfig({
@@ -32,7 +34,7 @@ var StyledIndicatorContainer = /*#__PURE__*/styled.div.withConfig({
32
34
  });
33
35
  var MobileStyledChatContainerContent = /*#__PURE__*/styled(StyledChatContainerContent).withConfig({
34
36
  componentId: "sc-d732wo-2"
35
- })(["", ",", "{font-size:16px;}", "{font-size:13px;}", "{background-color:#fff;box-shadow:-0 1px 3px rgba(53,60,70,0.8);}", ",", "{font-size:16px;text-align:left;}", "{font-size:13px;}"], StyledTitleLeftBubble, StyleBodyWrapper, StyledTitleRightBubble, Wrapper, Title, Message, Time);
37
+ })(["", ",", "{font-size:16px;}", "{font-size:13px;}", "{background-color:#fff;box-shadow:-0 1px 3px rgba(53,60,70,0.8);}", ",", "{font-size:16px;text-align:left;}", "{font-size:13px;}", "{font-size:16px;}"], StyledTitleLeftBubble, StyleBodyWrapper, StyledTitleRightBubble, Wrapper, Title, Message, Time, StyledComposerInput);
36
38
 
37
39
  export { CONTAINER_WIDTH, MobileStyledChatContainerContent, StyledChatContainerContent, StyledIndicatorContainer };
38
40
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../src/parts/chat-container/styled.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { StyledTitleRightBubble, StyledTitleLeftBubble, StyleBodyWrapper } from '../bubble/styled';\nimport { Wrapper, Title, Time, Message } from '../system-message/style';\nexport const CONTAINER_WIDTH = 300;\n\nexport const StyledChatContainerContent = styled(Grid)`\n height: 100%;\n min-width: ${CONTAINER_WIDTH}px;\n overflow: hidden;\n background: ${(props) => props.theme.colors.neutral['050']};\n position: relative;\n`;\nexport const StyledIndicatorContainer = styled.div<{\n isLoading?: 'top' | 'bottom';\n linear?: boolean;\n}>`\n position: absolute;\n width: calc(100% + ${(props) => props.theme.space.xxs});\n padding: ${(props) => (!props.linear ? props.theme.space.xxs : 0)};\n left: -${(props) => props.theme.space.xxs};\n right: -${(props) => props.theme.space.xxs};\n background: ${(props) => props.theme.colors.neutral['000']};\n ${(props) => (props.isLoading === 'top' ? 'top: 0;' : '')}\n ${(props) => (props.isLoading === 'bottom' ? 'bottom: 0;' : '')}\n`;\n\nexport const MobileStyledChatContainerContent = styled(StyledChatContainerContent)`\n ${StyledTitleLeftBubble},\n ${StyleBodyWrapper} {\n font-size: 16px;\n }\n\n ${StyledTitleRightBubble} {\n font-size: 13px;\n }\n\n ${Wrapper} {\n background-color: #fff;\n box-shadow: -0 1px 3px rgba(53, 60, 70, 0.8);\n }\n\n ${Title},\n ${Message} {\n font-size: 16px;\n text-align: left;\n }\n\n ${Time} {\n font-size: 13px;\n }\n`;\n"],"names":["CONTAINER_WIDTH","StyledChatContainerContent","styled","Grid","props","theme","colors","neutral","StyledIndicatorContainer","div","space","xxs","linear","isLoading","MobileStyledChatContainerContent","StyledTitleLeftBubble","StyleBodyWrapper","StyledTitleRightBubble","Wrapper","Title","Message","Time"],"mappings":";;;;;;;;;IAIaA,eAAe,GAAG;IAElBC,0BAA0B,gBAAGC,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA,wFAExBH,eAFwB,EAIvB,UAACI,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,OAAnB,CAA2B,KAA3B,CAAX;AAAA,CAJuB;IAO1BC,wBAAwB,gBAAGN,MAAM,CAACO,GAAV;AAAA;AAAA,gHAKd,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAA7B;AAAA,CALc,EAMxB,UAACP,KAAD;AAAA,SAAY,CAACA,KAAK,CAACQ,MAAP,GAAgBR,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAAlC,GAAwC,CAApD;AAAA,CANwB,EAO1B,UAACP,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAA7B;AAAA,CAP0B,EAQzB,UAACP,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAA7B;AAAA,CARyB,EASrB,UAACP,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,OAAnB,CAA2B,KAA3B,CAAX;AAAA,CATqB,EAUjC,UAACH,KAAD;AAAA,SAAYA,KAAK,CAACS,SAAN,KAAoB,KAApB,GAA4B,SAA5B,GAAwC,EAApD;AAAA,CAViC,EAWjC,UAACT,KAAD;AAAA,SAAYA,KAAK,CAACS,SAAN,KAAoB,QAApB,GAA+B,YAA/B,GAA8C,EAA1D;AAAA,CAXiC;IAcxBC,gCAAgC,gBAAGZ,MAAM,CAACD,0BAAD,CAAT;AAAA;AAAA,4LACzCc,qBADyC,EAEzCC,gBAFyC,EAMzCC,sBANyC,EAUzCC,OAVyC,EAezCC,KAfyC,EAgBzCC,OAhByC,EAqBzCC,IArByC;;;;"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../src/parts/chat-container/styled.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { Grid } from '@elliemae/ds-grid';\nimport { StyledTitleRightBubble, StyledTitleLeftBubble, StyleBodyWrapper } from '../bubble/styled';\nimport { StyledComposerInput } from '../chat-composer/styled';\nimport { Wrapper, Title, Time, Message } from '../system-message/style';\nexport const CONTAINER_WIDTH = 300;\n\nexport const StyledChatContainerContent = styled(Grid)`\n height: 100%;\n min-width: ${CONTAINER_WIDTH}px;\n overflow: hidden;\n background: ${(props) => props.theme.colors.neutral['050']};\n position: relative;\n`;\nexport const StyledIndicatorContainer = styled.div<{\n isLoading?: 'top' | 'bottom';\n linear?: boolean;\n}>`\n position: absolute;\n width: calc(100% + ${(props) => props.theme.space.xxs});\n padding: ${(props) => (!props.linear ? props.theme.space.xxs : 0)};\n left: -${(props) => props.theme.space.xxs};\n right: -${(props) => props.theme.space.xxs};\n background: ${(props) => props.theme.colors.neutral['000']};\n ${(props) => (props.isLoading === 'top' ? 'top: 0;' : '')}\n ${(props) => (props.isLoading === 'bottom' ? 'bottom: 0;' : '')}\n`;\n\nexport const MobileStyledChatContainerContent = styled(StyledChatContainerContent)`\n ${StyledTitleLeftBubble},\n ${StyleBodyWrapper} {\n font-size: 16px;\n }\n\n ${StyledTitleRightBubble} {\n font-size: 13px;\n }\n\n ${Wrapper} {\n background-color: #fff;\n box-shadow: -0 1px 3px rgba(53, 60, 70, 0.8);\n }\n\n ${Title},\n ${Message} {\n font-size: 16px;\n text-align: left;\n }\n\n ${Time} {\n font-size: 13px;\n }\n\n ${StyledComposerInput} {\n font-size: 16px;\n }\n`;\n"],"names":["CONTAINER_WIDTH","StyledChatContainerContent","styled","Grid","props","theme","colors","neutral","StyledIndicatorContainer","div","space","xxs","linear","isLoading","MobileStyledChatContainerContent","StyledTitleLeftBubble","StyleBodyWrapper","StyledTitleRightBubble","Wrapper","Title","Message","Time","StyledComposerInput"],"mappings":";;;;;;;;;;;IAKaA,eAAe,GAAG;IAElBC,0BAA0B,gBAAGC,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA,wFAExBH,eAFwB,EAIvB,UAACI,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,OAAnB,CAA2B,KAA3B,CAAX;AAAA,CAJuB;IAO1BC,wBAAwB,gBAAGN,MAAM,CAACO,GAAV;AAAA;AAAA,gHAKd,UAACL,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAA7B;AAAA,CALc,EAMxB,UAACP,KAAD;AAAA,SAAY,CAACA,KAAK,CAACQ,MAAP,GAAgBR,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAAlC,GAAwC,CAApD;AAAA,CANwB,EAO1B,UAACP,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAA7B;AAAA,CAP0B,EAQzB,UAACP,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYK,KAAZ,CAAkBC,GAA7B;AAAA,CARyB,EASrB,UAACP,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,OAAnB,CAA2B,KAA3B,CAAX;AAAA,CATqB,EAUjC,UAACH,KAAD;AAAA,SAAYA,KAAK,CAACS,SAAN,KAAoB,KAApB,GAA4B,SAA5B,GAAwC,EAApD;AAAA,CAViC,EAWjC,UAACT,KAAD;AAAA,SAAYA,KAAK,CAACS,SAAN,KAAoB,QAApB,GAA+B,YAA/B,GAA8C,EAA1D;AAAA,CAXiC;IAcxBC,gCAAgC,gBAAGZ,MAAM,CAACD,0BAAD,CAAT;AAAA;AAAA,iNACzCc,qBADyC,EAEzCC,gBAFyC,EAMzCC,sBANyC,EAUzCC,OAVyC,EAezCC,KAfyC,EAgBzCC,OAhByC,EAqBzCC,IArByC,EAyBzCC,mBAzByC;;;;"}