@elliemae/ds-chat 2.3.0-next.1 → 2.3.0-next.14
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.
- package/cjs/{parts → exported-related}/bubble/ChatBubble.js +8 -10
- package/cjs/{parts → exported-related}/bubble/ChatBubbleArrow.js +0 -0
- package/cjs/{parts → exported-related}/bubble/index.js +0 -0
- package/cjs/exported-related/bubble/props.js +43 -0
- package/cjs/{parts → exported-related}/bubble/styled.js +9 -9
- package/cjs/{parts → exported-related}/chat-card/ChatCard.js +6 -7
- package/cjs/{parts → exported-related}/chat-card/index.js +0 -0
- package/cjs/exported-related/chat-card/props.js +22 -0
- package/cjs/{parts → exported-related}/chat-card/styled.js +6 -6
- package/cjs/{parts → exported-related}/chat-container-header/ChatContainerHeader.js +21 -7
- package/cjs/exported-related/chat-container-header/props.js +16 -0
- package/cjs/{parts → exported-related}/chat-container-header/styled.js +4 -4
- package/cjs/{parts → exported-related}/chat-empty-state/ChatEmptyState.js +8 -10
- package/cjs/exported-related/chat-empty-state/props.js +18 -0
- package/cjs/{parts → exported-related}/chat-empty-state/styled.js +2 -2
- package/cjs/{parts → exported-related}/chat-sidebar/SideBarChat.js +10 -11
- package/cjs/{parts → exported-related}/chat-sidebar/index.js +0 -0
- package/cjs/{parts → exported-related}/chat-sidebar/props.js +2 -5
- package/cjs/{parts → exported-related/chat-sidebar}/sidebar-button/SidebarButton.js +1 -1
- package/cjs/{parts → exported-related/chat-sidebar}/sidebar-button/index.js +0 -0
- package/cjs/exported-related/chat-sidebar/sidebar-button/props.js +25 -0
- package/cjs/{parts → exported-related/chat-sidebar}/sidebar-button/styled.js +4 -4
- package/cjs/{parts → exported-related}/chat-sidebar/styled.js +2 -2
- package/cjs/{parts → exported-related}/floating-button/FloatingButton.js +13 -6
- package/cjs/{parts → exported-related}/floating-button/index.js +1 -0
- package/cjs/{parts → exported-related}/floating-button/props.js +0 -0
- package/cjs/{parts → exported-related}/floating-button/styled.js +1 -1
- package/cjs/{parts → exported-related}/floating-container/styled.js +1 -1
- package/cjs/{parts → exported-related}/grid-influencer/InfluencerContainer.js +1 -1
- package/cjs/{parts → exported-related}/grid-influencer/styled.js +2 -2
- package/cjs/exported-related/index.js +37 -0
- package/cjs/exported-related/message-delimiter/MessageDelimiter.js +53 -0
- package/cjs/{parts → exported-related}/message-delimiter/index.js +0 -0
- package/cjs/exported-related/message-delimiter/props.js +33 -0
- package/cjs/{parts → exported-related}/message-delimiter/styled.js +3 -3
- package/cjs/{parts → exported-related}/system-message/SystemMessage.js +6 -8
- package/cjs/{parts → exported-related}/system-message/index.js +0 -0
- package/cjs/{parts → exported-related}/system-message/props.js +0 -0
- package/cjs/{parts → exported-related}/system-message/style.js +5 -5
- package/cjs/{parts → exported-related}/tile-button/TileButton.js +7 -9
- package/cjs/{parts → exported-related}/tile-button/index.js +0 -0
- package/cjs/exported-related/tile-button/props.js +55 -0
- package/cjs/{parts → exported-related}/tile-button/styled.js +9 -9
- package/cjs/index.js +29 -18
- package/cjs/parts/chat-composer/ChatContainerComposer.js +7 -9
- package/cjs/parts/chat-container/ChatContainer.js +18 -20
- package/cjs/parts/chat-container/styled.js +2 -2
- package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js +83 -70
- package/cjs/parts/chat-container-messages-list/styled.js +9 -5
- package/cjs/parts/chat-container-messages-list/useGetNewMessages.js +28 -0
- package/cjs/parts/index.js +16 -0
- package/cjs/react-desc-prop-types.js +116 -0
- package/esm/{parts → exported-related}/bubble/ChatBubble.js +7 -9
- package/esm/{parts → exported-related}/bubble/ChatBubbleArrow.js +0 -0
- package/esm/{parts → exported-related}/bubble/index.js +0 -0
- package/esm/{parts → exported-related}/bubble/props.js +14 -24
- package/esm/{parts → exported-related}/bubble/styled.js +9 -9
- package/esm/{parts → exported-related}/chat-card/ChatCard.js +4 -5
- package/esm/{parts → exported-related}/chat-card/index.js +0 -0
- package/esm/{parts → exported-related}/chat-card/props.js +9 -2
- package/esm/{parts → exported-related}/chat-card/styled.js +6 -6
- package/esm/exported-related/chat-container-header/ChatContainerHeader.js +43 -0
- package/esm/exported-related/chat-container-header/props.js +11 -0
- package/esm/{parts → exported-related}/chat-container-header/styled.js +4 -4
- package/esm/{parts → exported-related}/chat-empty-state/ChatEmptyState.js +7 -9
- package/esm/exported-related/chat-empty-state/props.js +13 -0
- package/esm/{parts → exported-related}/chat-empty-state/styled.js +2 -2
- package/esm/{parts → exported-related}/chat-sidebar/SideBarChat.js +8 -9
- package/esm/{parts → exported-related}/chat-sidebar/index.js +0 -0
- package/esm/{parts → exported-related}/chat-sidebar/props.js +2 -5
- package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/SidebarButton.js +1 -1
- package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/index.js +0 -0
- package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/props.js +3 -4
- package/esm/{parts → exported-related/chat-sidebar}/sidebar-button/styled.js +4 -4
- package/esm/{parts → exported-related}/chat-sidebar/styled.js +2 -2
- package/esm/exported-related/floating-button/FloatingButton.js +33 -0
- package/esm/exported-related/floating-button/index.js +1 -0
- package/esm/{parts → exported-related}/floating-button/props.js +0 -0
- package/esm/{parts → exported-related}/floating-button/styled.js +1 -1
- package/esm/{parts → exported-related}/floating-container/styled.js +1 -1
- package/esm/{parts → exported-related}/grid-influencer/InfluencerContainer.js +1 -1
- package/esm/{parts → exported-related}/grid-influencer/styled.js +2 -2
- package/esm/exported-related/index.js +11 -0
- package/esm/exported-related/message-delimiter/MessageDelimiter.js +43 -0
- package/esm/{parts → exported-related}/message-delimiter/index.js +0 -0
- package/esm/exported-related/message-delimiter/props.js +24 -0
- package/esm/{parts → exported-related}/message-delimiter/styled.js +3 -3
- package/esm/{parts → exported-related}/system-message/SystemMessage.js +4 -6
- package/esm/{parts → exported-related}/system-message/index.js +0 -0
- package/esm/{parts → exported-related}/system-message/props.js +0 -0
- package/esm/{parts → exported-related}/system-message/style.js +5 -5
- package/esm/{parts → exported-related}/tile-button/TileButton.js +5 -7
- package/esm/{parts → exported-related}/tile-button/index.js +0 -0
- package/esm/{parts → exported-related}/tile-button/props.js +3 -3
- package/esm/{parts → exported-related}/tile-button/styled.js +9 -9
- package/esm/index.js +14 -12
- package/esm/parts/chat-composer/ChatContainerComposer.js +9 -11
- package/esm/parts/chat-container/ChatContainer.js +16 -18
- package/esm/parts/chat-container/styled.js +2 -2
- package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js +81 -68
- package/esm/parts/chat-container-messages-list/styled.js +9 -6
- package/esm/parts/chat-container-messages-list/useGetNewMessages.js +24 -0
- package/esm/parts/index.js +3 -0
- package/esm/react-desc-prop-types.js +103 -0
- package/package.json +173 -217
- package/types/exported-related/bubble/ChatBubble.d.ts +5 -0
- package/types/{parts → exported-related}/bubble/ChatBubbleArrow.d.ts +1 -1
- package/types/{parts → exported-related}/bubble/index.d.ts +0 -0
- package/types/exported-related/bubble/props.d.ts +33 -0
- package/types/{parts → exported-related}/bubble/styled.d.ts +11 -7
- package/types/{parts → exported-related}/bubble/tests/ChatBubble.test.d.ts +0 -0
- package/types/exported-related/chat-card/ChatCard.d.ts +5 -0
- package/types/{parts → exported-related}/chat-card/index.d.ts +0 -0
- package/types/exported-related/chat-card/props.d.ts +14 -0
- package/types/{parts → exported-related}/chat-card/styled.d.ts +0 -0
- package/types/exported-related/chat-container-header/ChatContainerHeader.d.ts +5 -0
- package/types/exported-related/chat-container-header/props.d.ts +10 -0
- package/types/{parts → exported-related}/chat-container-header/styled.d.ts +0 -0
- package/types/exported-related/chat-container-header/tests/ChatContainerHeader.test.d.ts +1 -0
- package/types/exported-related/chat-empty-state/ChatEmptyState.d.ts +5 -0
- package/types/exported-related/chat-empty-state/props.d.ts +10 -0
- package/types/{parts → exported-related}/chat-empty-state/styled.d.ts +0 -0
- package/types/exported-related/chat-sidebar/SideBarChat.d.ts +5 -0
- package/types/{parts → exported-related}/chat-sidebar/index.d.ts +0 -0
- package/types/{parts → exported-related}/chat-sidebar/props.d.ts +4 -4
- package/types/exported-related/chat-sidebar/sidebar-button/SidebarButton.d.ts +13 -0
- package/types/{parts → exported-related/chat-sidebar}/sidebar-button/index.d.ts +0 -0
- package/types/exported-related/chat-sidebar/sidebar-button/props.d.ts +18 -0
- package/types/{parts → exported-related/chat-sidebar}/sidebar-button/styled.d.ts +0 -0
- package/types/{parts → exported-related}/chat-sidebar/styled.d.ts +0 -0
- package/types/exported-related/floating-button/FloatingButton.d.ts +5 -0
- package/types/{parts → exported-related}/floating-button/index.d.ts +0 -0
- package/types/{parts → exported-related}/floating-button/props.d.ts +0 -0
- package/types/{parts → exported-related}/floating-button/styled.d.ts +0 -0
- package/types/exported-related/floating-container/styled.d.ts +2 -0
- package/types/{parts → exported-related}/grid-influencer/InfluencerContainer.d.ts +0 -0
- package/types/{parts → exported-related}/grid-influencer/styled.d.ts +0 -0
- package/types/exported-related/index.d.ts +10 -0
- package/types/exported-related/message-delimiter/MessageDelimiter.d.ts +5 -0
- package/types/{parts → exported-related}/message-delimiter/index.d.ts +0 -0
- package/types/exported-related/message-delimiter/props.d.ts +371 -0
- package/types/{parts → exported-related}/message-delimiter/styled.d.ts +0 -0
- package/types/exported-related/system-message/SystemMessage.d.ts +5 -0
- package/types/{parts → exported-related}/system-message/index.d.ts +0 -0
- package/types/{parts → exported-related}/system-message/props.d.ts +0 -0
- package/types/{parts → exported-related}/system-message/style.d.ts +0 -0
- package/types/exported-related/tile-button/TileButton.d.ts +5 -0
- package/types/{parts → exported-related}/tile-button/index.d.ts +0 -0
- package/types/exported-related/tile-button/props.d.ts +46 -0
- package/types/{parts → exported-related}/tile-button/styled.d.ts +1 -1
- package/types/index.d.ts +4 -13
- package/types/parts/chat-composer/ChatContainerComposer.d.ts +4 -59
- package/types/parts/chat-composer/styled.d.ts +4 -3
- package/types/parts/chat-container/ChatContainer.d.ts +4 -62
- package/types/parts/chat-container-messages-list/ChatContainerMessagesList.d.ts +4 -47
- package/types/parts/chat-container-messages-list/index.d.ts +1 -1
- package/types/parts/chat-container-messages-list/styled.d.ts +2 -2
- package/types/parts/chat-container-messages-list/useGetNewMessages.d.ts +2 -0
- package/types/parts/index.d.ts +3 -0
- package/types/react-desc-prop-types.d.ts +838 -0
- package/cjs/index.d.js +0 -2
- package/cjs/parts/bubble/config/useValidateProps.js +0 -31
- package/cjs/parts/bubble/props.js +0 -57
- package/cjs/parts/chat-card/config/useValidateProps.js +0 -11
- package/cjs/parts/chat-card/props.js +0 -14
- package/cjs/parts/chat-composer/config/useValidateProps.js +0 -11
- package/cjs/parts/chat-composer/props.js +0 -44
- package/cjs/parts/chat-container/config/useValidateProps.js +0 -11
- package/cjs/parts/chat-container/index.js +0 -10
- package/cjs/parts/chat-container/props.js +0 -49
- package/cjs/parts/chat-container-header/helpers.js +0 -31
- package/cjs/parts/chat-container-messages-list/config/useValidateProps.js +0 -11
- package/cjs/parts/chat-container-messages-list/props.js +0 -30
- package/cjs/parts/chat-empty-state/config/useValidateProps.js +0 -11
- package/cjs/parts/chat-empty-state/props.js +0 -17
- package/cjs/parts/chat-sidebar/config/useValidateProps.js +0 -11
- package/cjs/parts/message-delimiter/MessageDelimiter.js +0 -41
- package/cjs/parts/message-delimiter/config/useValidateProps.js +0 -11
- package/cjs/parts/message-delimiter/props.js +0 -23
- package/cjs/parts/sidebar-button/props.js +0 -30
- package/cjs/parts/system-message/config/useValidateProps.js +0 -11
- package/cjs/parts/tile-button/config/useValidateProps.js +0 -11
- package/cjs/parts/tile-button/props.js +0 -55
- package/cjs/prop-types.js +0 -33
- package/esm/index.d.js +0 -1
- package/esm/parts/bubble/config/useValidateProps.js +0 -27
- package/esm/parts/chat-card/config/useValidateProps.js +0 -7
- package/esm/parts/chat-composer/config/useValidateProps.js +0 -7
- package/esm/parts/chat-composer/props.js +0 -39
- package/esm/parts/chat-container/config/useValidateProps.js +0 -7
- package/esm/parts/chat-container/index.js +0 -1
- package/esm/parts/chat-container/props.js +0 -44
- package/esm/parts/chat-container-header/ChatContainerHeader.js +0 -31
- package/esm/parts/chat-container-header/helpers.js +0 -23
- package/esm/parts/chat-container-messages-list/config/useValidateProps.js +0 -7
- package/esm/parts/chat-container-messages-list/props.js +0 -25
- package/esm/parts/chat-empty-state/config/useValidateProps.js +0 -7
- package/esm/parts/chat-empty-state/props.js +0 -12
- package/esm/parts/chat-sidebar/config/useValidateProps.js +0 -7
- package/esm/parts/floating-button/FloatingButton.js +0 -27
- package/esm/parts/floating-button/index.js +0 -1
- package/esm/parts/message-delimiter/MessageDelimiter.js +0 -32
- package/esm/parts/message-delimiter/config/useValidateProps.js +0 -7
- package/esm/parts/message-delimiter/props.js +0 -18
- package/esm/parts/system-message/config/useValidateProps.js +0 -7
- package/esm/parts/tile-button/config/useValidateProps.js +0 -7
- package/esm/prop-types.js +0 -28
- package/types/index.d.d.ts +0 -37
- package/types/parts/bubble/ChatBubble.d.ts +0 -30
- package/types/parts/bubble/config/useValidateProps.d.ts +0 -2
- package/types/parts/bubble/props.d.ts +0 -52
- package/types/parts/chat-card/ChatCard.d.ts +0 -33
- package/types/parts/chat-card/config/useValidateProps.d.ts +0 -2
- package/types/parts/chat-card/props.d.ts +0 -29
- package/types/parts/chat-composer/config/useValidateProps.d.ts +0 -2
- package/types/parts/chat-container/config/useValidateProps.d.ts +0 -2
- package/types/parts/chat-container/index.d.ts +0 -1
- package/types/parts/chat-container-header/ChatContainerHeader.d.ts +0 -2
- package/types/parts/chat-container-header/helpers.d.ts +0 -6
- package/types/parts/chat-container-messages-list/config/useValidateProps.d.ts +0 -2
- package/types/parts/chat-empty-state/ChatEmptyState.d.ts +0 -21
- package/types/parts/chat-empty-state/config/useValidateProps.d.ts +0 -2
- package/types/parts/chat-empty-state/props.d.ts +0 -15
- package/types/parts/chat-sidebar/SideBarChat.d.ts +0 -48
- package/types/parts/chat-sidebar/config/useValidateProps.d.ts +0 -2
- package/types/parts/floating-button/FloatingButton.d.ts +0 -18
- package/types/parts/floating-container/styled.d.ts +0 -1
- package/types/parts/message-delimiter/MessageDelimiter.d.ts +0 -31
- package/types/parts/message-delimiter/config/useValidateProps.d.ts +0 -2
- package/types/parts/message-delimiter/props.d.ts +0 -26
- package/types/parts/sidebar-button/SidebarButton.d.ts +0 -24
- package/types/parts/sidebar-button/props.d.ts +0 -29
- package/types/parts/system-message/SystemMessage.d.ts +0 -23
- package/types/parts/system-message/config/useValidateProps.d.ts +0 -2
- package/types/parts/tile-button/TileButton.d.ts +0 -75
- package/types/parts/tile-button/config/useValidateProps.d.ts +0 -2
- package/types/parts/tile-button/props.d.ts +0 -88
- 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
|
|
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
|
|
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
|
|
37
|
+
const ChatContainer = props => {
|
|
39
38
|
var _messagesListProps$me2, _containerRef$current;
|
|
40
39
|
|
|
41
|
-
|
|
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
|
-
|
|
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
|
-
|
|
171
|
-
|
|
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('
|
|
7
|
+
var styled$1 = require('../../exported-related/bubble/styled.js');
|
|
8
8
|
var styled$2 = require('../chat-composer/styled.js');
|
|
9
|
-
var style = require('
|
|
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,17 @@ 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
|
|
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('
|
|
24
|
-
var props
|
|
25
|
-
var MessageDelimiter = require('
|
|
26
|
-
var SystemMessage = require('
|
|
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
|
|
28
|
+
var reactDescPropTypes = require('../../react-desc-prop-types.js');
|
|
29
|
+
var useGetNewMessages = require('./useGetNewMessages.js');
|
|
29
30
|
var jsxRuntime = require('react/jsx-runtime');
|
|
30
31
|
|
|
31
32
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -53,7 +54,10 @@ const getPadding = _ref => {
|
|
|
53
54
|
return padding;
|
|
54
55
|
};
|
|
55
56
|
|
|
56
|
-
const ChatContainerMessagesList = props => {
|
|
57
|
+
const ChatContainerMessagesList = props$1 => {
|
|
58
|
+
const propsWithDefault = dsPropsHelpers.useMemoMergePropsWithDefault(props$1, reactDescPropTypes.defaultPropsMessagesList);
|
|
59
|
+
dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefault, reactDescPropTypes.ChatContainerMessagesListPropTypes);
|
|
60
|
+
const globalAttributes = dsPropsHelpers.useGetGlobalAttributes(propsWithDefault);
|
|
57
61
|
const {
|
|
58
62
|
sendingText,
|
|
59
63
|
bannerPosition,
|
|
@@ -65,7 +69,7 @@ const ChatContainerMessagesList = props => {
|
|
|
65
69
|
hasMoreItems,
|
|
66
70
|
isLoading,
|
|
67
71
|
bannerRef
|
|
68
|
-
} =
|
|
72
|
+
} = propsWithDefault;
|
|
69
73
|
const pendingOnScroll = React__default["default"].useRef(false);
|
|
70
74
|
const loadMoreRef = React__default["default"].useRef(null);
|
|
71
75
|
const virtualListRef = React__default["default"].useRef(); // estimateSize should not be really required given what was stated on
|
|
@@ -76,7 +80,7 @@ const ChatContainerMessagesList = props => {
|
|
|
76
80
|
totalSize,
|
|
77
81
|
virtualItems
|
|
78
82
|
} = reactVirtual.useVirtual(_objectSpread(_objectSpread({
|
|
79
|
-
size: messages.length,
|
|
83
|
+
size: messages === null || messages === void 0 ? void 0 : messages.length,
|
|
80
84
|
parentRef: virtualListRef,
|
|
81
85
|
overscan: 15
|
|
82
86
|
}, getPadding({
|
|
@@ -86,6 +90,7 @@ const ChatContainerMessagesList = props => {
|
|
|
86
90
|
})), {}, {
|
|
87
91
|
estimateSize: React__default["default"].useCallback(() => 80, [])
|
|
88
92
|
}));
|
|
93
|
+
const newMessages = useGetNewMessages.useGetNewMessages(messages);
|
|
89
94
|
const debouncedScroll = React__default["default"].useMemo(() => lodash.debounce(() => {
|
|
90
95
|
var _virtualListRef$curre;
|
|
91
96
|
|
|
@@ -126,6 +131,9 @@ const ChatContainerMessagesList = props => {
|
|
|
126
131
|
onlyFocus(index);
|
|
127
132
|
onScrollStop();
|
|
128
133
|
}, [onScrollStop, onlyFocus, vScroll]);
|
|
134
|
+
const checkPendingOnScroll = React__default["default"].useCallback(() => {
|
|
135
|
+
if (pendingOnScroll.current === true) onScrollStop();
|
|
136
|
+
}, [onScrollStop]);
|
|
129
137
|
React__default["default"].useEffect(() => {
|
|
130
138
|
if (actionRef && actionRef.current) {
|
|
131
139
|
actionRef.current.scrollToIndex = function (a) {
|
|
@@ -155,6 +163,26 @@ const ChatContainerMessagesList = props => {
|
|
|
155
163
|
};
|
|
156
164
|
}
|
|
157
165
|
}, [actionRef, onScrollStop, onlyFocus, scrollAndFocus, vScroll]);
|
|
166
|
+
React__default["default"].useEffect(() => {
|
|
167
|
+
let handlerCallback = null;
|
|
168
|
+
const localVirtualRef = virtualListRef.current;
|
|
169
|
+
|
|
170
|
+
const onScroll = () => {
|
|
171
|
+
if (handlerCallback) clearTimeout(handlerCallback);
|
|
172
|
+
handlerCallback = setTimeout(onScrollStop, 300);
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
if (onScrollEnds) {
|
|
176
|
+
virtualListRef.current.addEventListener('scroll', onScroll);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
document.addEventListener('visibilitychange', checkPendingOnScroll);
|
|
180
|
+
return () => {
|
|
181
|
+
if (handlerCallback) clearTimeout(handlerCallback);
|
|
182
|
+
if (onScrollEnds) localVirtualRef.removeEventListener('scroll', onScroll);
|
|
183
|
+
document.removeEventListener('visibilitychange', checkPendingOnScroll);
|
|
184
|
+
};
|
|
185
|
+
}, [onScrollStop, onScrollEnds, checkPendingOnScroll]);
|
|
158
186
|
const handleKey = React__default["default"].useCallback(e => {
|
|
159
187
|
const {
|
|
160
188
|
key
|
|
@@ -181,7 +209,7 @@ const ChatContainerMessagesList = props => {
|
|
|
181
209
|
case 'ArrowDown':
|
|
182
210
|
e.preventDefault();
|
|
183
211
|
|
|
184
|
-
if (index < messages.length - 1) {
|
|
212
|
+
if (index < (messages === null || messages === void 0 ? void 0 : messages.length) - 1) {
|
|
185
213
|
virtualListRef.current.querySelector("[data-index=\"".concat(index + 1, "\"]")).focus();
|
|
186
214
|
}
|
|
187
215
|
|
|
@@ -194,7 +222,7 @@ const ChatContainerMessagesList = props => {
|
|
|
194
222
|
|
|
195
223
|
case 'End':
|
|
196
224
|
e.preventDefault();
|
|
197
|
-
scrollAndFocus(messages.length - 1);
|
|
225
|
+
scrollAndFocus((messages === null || messages === void 0 ? void 0 : messages.length) - 1);
|
|
198
226
|
break;
|
|
199
227
|
|
|
200
228
|
case 'Tab':
|
|
@@ -203,10 +231,17 @@ const ChatContainerMessagesList = props => {
|
|
|
203
231
|
|
|
204
232
|
e.preventDefault();
|
|
205
233
|
(_loadMoreRef$current2 = loadMoreRef.current) === null || _loadMoreRef$current2 === void 0 ? void 0 : _loadMoreRef$current2.focus();
|
|
206
|
-
} else if (hasMoreItems === 'top' && e.shiftKey)
|
|
234
|
+
} else if (hasMoreItems === 'top' && e.shiftKey) {
|
|
235
|
+
var _loadMoreRef$current3;
|
|
236
|
+
|
|
237
|
+
e.preventDefault();
|
|
238
|
+
(_loadMoreRef$current3 = loadMoreRef.current) === null || _loadMoreRef$current3 === void 0 ? void 0 : _loadMoreRef$current3.focus();
|
|
239
|
+
} else if (!e.shiftKey) {
|
|
207
240
|
if (bannerPosition) {
|
|
241
|
+
var _bannerRef$current;
|
|
242
|
+
|
|
208
243
|
e.preventDefault();
|
|
209
|
-
bannerRef.current.focusOnWrapper();
|
|
244
|
+
bannerRef === null || bannerRef === void 0 ? void 0 : (_bannerRef$current = bannerRef.current) === null || _bannerRef$current === void 0 ? void 0 : _bannerRef$current.focusOnWrapper();
|
|
210
245
|
}
|
|
211
246
|
} else {
|
|
212
247
|
var _virtualListRef$curre4;
|
|
@@ -217,7 +252,7 @@ const ChatContainerMessagesList = props => {
|
|
|
217
252
|
|
|
218
253
|
break;
|
|
219
254
|
}
|
|
220
|
-
}, [bannerRef, hasMoreItems, messages.length, bannerPosition, scrollAndFocus]);
|
|
255
|
+
}, [bannerRef, hasMoreItems, messages === null || messages === void 0 ? void 0 : messages.length, bannerPosition, scrollAndFocus]);
|
|
221
256
|
const handleListKey = React__default["default"].useCallback(e => {
|
|
222
257
|
const {
|
|
223
258
|
key
|
|
@@ -228,7 +263,9 @@ const ChatContainerMessagesList = props => {
|
|
|
228
263
|
e.preventDefault();
|
|
229
264
|
|
|
230
265
|
if (document.activeElement !== loadMoreRef.current) {
|
|
231
|
-
|
|
266
|
+
var _onScrollStop;
|
|
267
|
+
|
|
268
|
+
onlyFocus((_onScrollStop = onScrollStop()) === null || _onScrollStop === void 0 ? void 0 : _onScrollStop.shift());
|
|
232
269
|
}
|
|
233
270
|
|
|
234
271
|
break;
|
|
@@ -239,7 +276,9 @@ const ChatContainerMessagesList = props => {
|
|
|
239
276
|
if (document.activeElement === loadMoreRef.current) {
|
|
240
277
|
virtualListRef.current.querySelector("[data-index=\"0\"]").focus();
|
|
241
278
|
} else {
|
|
242
|
-
|
|
279
|
+
var _onScrollStop2;
|
|
280
|
+
|
|
281
|
+
onlyFocus((_onScrollStop2 = onScrollStop()) === null || _onScrollStop2 === void 0 ? void 0 : _onScrollStop2.pop());
|
|
243
282
|
}
|
|
244
283
|
|
|
245
284
|
break;
|
|
@@ -251,17 +290,12 @@ const ChatContainerMessagesList = props => {
|
|
|
251
290
|
|
|
252
291
|
case 'End':
|
|
253
292
|
e.preventDefault();
|
|
254
|
-
scrollAndFocus(messages.length - 1);
|
|
293
|
+
scrollAndFocus((messages === null || messages === void 0 ? void 0 : messages.length) - 1);
|
|
255
294
|
break;
|
|
256
295
|
|
|
257
296
|
case 'Tab':
|
|
258
297
|
if (document.activeElement !== loadMoreRef.current) {
|
|
259
298
|
if (hasMoreItems === 'bottom' && !e.shiftKey) {
|
|
260
|
-
var _loadMoreRef$current3;
|
|
261
|
-
|
|
262
|
-
e.preventDefault();
|
|
263
|
-
(_loadMoreRef$current3 = loadMoreRef.current) === null || _loadMoreRef$current3 === void 0 ? void 0 : _loadMoreRef$current3.focus();
|
|
264
|
-
} else if (hasMoreItems === 'top' && e.shiftKey) {
|
|
265
299
|
var _loadMoreRef$current4;
|
|
266
300
|
|
|
267
301
|
e.preventDefault();
|
|
@@ -282,30 +316,7 @@ const ChatContainerMessagesList = props => {
|
|
|
282
316
|
|
|
283
317
|
break;
|
|
284
318
|
}
|
|
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]);
|
|
319
|
+
}, [actionRef, hasMoreItems, messages === null || messages === void 0 ? void 0 : messages.length, onScrollStop, onlyFocus, scrollAndFocus]);
|
|
309
320
|
const render = React__default["default"].useMemo(() => virtualItems.map(virtualItem => {
|
|
310
321
|
const {
|
|
311
322
|
index,
|
|
@@ -331,39 +342,41 @@ const ChatContainerMessagesList = props => {
|
|
|
331
342
|
role: "listitem",
|
|
332
343
|
children: /*#__PURE__*/_jsx__default["default"](styled.StyledWrapperListItem, {
|
|
333
344
|
type: row.type
|
|
334
|
-
}, void 0, row.type === props
|
|
345
|
+
}, void 0, row.type === props.BUBBLE_TYPES.SENDER || row.type === props.BUBBLE_TYPES.RECIPIENT ?
|
|
335
346
|
/*#__PURE__*/
|
|
336
347
|
// eslint-disable-next-line eslint-comments/no-unlimited-disable
|
|
337
348
|
jsxRuntime.jsx(ChatBubble.ChatBubble, _objectSpread(_objectSpread({}, row), {}, {
|
|
338
349
|
helpMessage: isSending ? sendingText : row.helpMessage
|
|
339
|
-
})) : null, row.type === props
|
|
350
|
+
})) : 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
351
|
}, "ds-chat-bubble-".concat(index, "-").concat(row.dsId, "-").concat(row.type));
|
|
341
352
|
}), [virtualItems, messages, sendingMessages, handleKey, sendingText]);
|
|
342
|
-
return /*#__PURE__*/
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
})
|
|
353
|
+
return /*#__PURE__*/jsxRuntime.jsxs(styled.StyledWrapper, _objectSpread(_objectSpread({}, globalAttributes), {}, {
|
|
354
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(styled.StyledChatContainerContentList, {
|
|
355
|
+
"data-testid": "chat-thread-container",
|
|
356
|
+
tabIndex: 0,
|
|
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
|
+
}), /*#__PURE__*/_jsx__default["default"](styled.StyledNewMessagesHiddenContainer, {
|
|
372
|
+
"aria-live": "polite",
|
|
373
|
+
"aria-hidden": "false"
|
|
374
|
+
}, void 0, newMessages.map(newMessage => /*#__PURE__*/_jsx__default["default"]("p", {}, void 0, newMessage.title, " ", newMessage.time, " ", newMessage.body, " ", newMessage.errorMessage, " ", newMessage.helpMessage)))]
|
|
361
375
|
}));
|
|
362
376
|
};
|
|
363
377
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
ChatContainerMessagesListWithSchema.propTypes = props.listProps;
|
|
378
|
+
const ChatContainerMessagesListWithSchema = dsPropsHelpers.describe(ChatContainerMessagesList);
|
|
379
|
+
ChatContainerMessagesListWithSchema.propTypes = reactDescPropTypes.ChatContainerMessagesListPropTypes;
|
|
367
380
|
|
|
368
381
|
exports.ChatContainerMessagesList = ChatContainerMessagesList;
|
|
369
382
|
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('
|
|
7
|
-
var props = require('
|
|
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
|
|
|
@@ -20,19 +20,23 @@ const StyledWrapperListItem = /*#__PURE__*/styled__default["default"].div.withCo
|
|
|
20
20
|
const StyledChatContainerContentList = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
21
21
|
componentId: "sc-1jhprzr-2"
|
|
22
22
|
})(["width:100%;height:100%;padding:", ";padding-bottom:0;overflow-y:auto;overflow-x:hidden;"], props => props.theme.space.xs);
|
|
23
|
-
const
|
|
23
|
+
const StyledNewMessagesHiddenContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
24
24
|
componentId: "sc-1jhprzr-3"
|
|
25
|
+
})(["position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(100%);white-space:nowrap;"]);
|
|
26
|
+
const StyledChatContainerContentListScroll = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
27
|
+
componentId: "sc-1jhprzr-4"
|
|
25
28
|
})(["width:100%;height:", ";position:relative;"], props => props.height);
|
|
26
29
|
const StyledLoadMoreContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
27
|
-
componentId: "sc-1jhprzr-
|
|
30
|
+
componentId: "sc-1jhprzr-5"
|
|
28
31
|
})(["position:absolute;width:calc(100% + ", ");padding:", ";left:-", ";right:-", ";display:grid;justify-content:center;align-items:center;", " ", ""], props => props.theme.space.xxs, props => props.theme.space.xxs, props => props.theme.space.xxs, props => props.theme.space.xxs, props => props.hasMoreItems === 'top' ? 'top: 0;' : '', props => props.hasMoreItems === 'bottom' ? 'bottom: 0;' : '');
|
|
29
32
|
const ListItem = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
30
|
-
componentId: "sc-1jhprzr-
|
|
33
|
+
componentId: "sc-1jhprzr-6"
|
|
31
34
|
})(["&:focus,&:focus-visible{outline:none;&:after{content:'';display:block;position:absolute;top:0;left:-", ";pointer-events:none;border-radius:2px;background-color:#ebedf0;width:calc(100% + 24px);border:2px solid #1e79c2;height:100%;z-index:-1;}}"], props => props.theme.space.xxs);
|
|
32
35
|
|
|
33
36
|
exports.ListItem = ListItem;
|
|
34
37
|
exports.StyledChatContainerContentList = StyledChatContainerContentList;
|
|
35
38
|
exports.StyledChatContainerContentListScroll = StyledChatContainerContentListScroll;
|
|
36
39
|
exports.StyledLoadMoreContainer = StyledLoadMoreContainer;
|
|
40
|
+
exports.StyledNewMessagesHiddenContainer = StyledNewMessagesHiddenContainer;
|
|
37
41
|
exports.StyledWrapper = StyledWrapper;
|
|
38
42
|
exports.StyledWrapperListItem = StyledWrapperListItem;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
6
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.async-iterator.map.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.map.js');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
|
|
13
|
+
const useGetNewMessages = messages => {
|
|
14
|
+
const [seenMessages, setSeenMessages] = React.useState({});
|
|
15
|
+
const newMessages = React.useMemo(() => {
|
|
16
|
+
const list = [];
|
|
17
|
+
messages.forEach(message => {
|
|
18
|
+
if (!(message.dsId in seenMessages)) {
|
|
19
|
+
list.push(message);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
setSeenMessages(Object.fromEntries(messages.map(m => [m.dsId, true])));
|
|
23
|
+
return list; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
+
}, [messages]);
|
|
25
|
+
return newMessages;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.useGetNewMessages = useGetNewMessages;
|
|
@@ -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;
|