@elliemae/ds-chat 2.4.2-rc.12 → 2.4.2-rc.15
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/exported-related/bubble/ChatBubble.js +7 -7
- package/cjs/exported-related/bubble/styled.js +30 -1
- package/cjs/exported-related/chat-card/props.js +2 -2
- package/cjs/exported-related/chat-container-header/props.js +1 -1
- package/cjs/exported-related/chat-sidebar/SideBarChat.js +1 -3
- package/cjs/exported-related/chat-sidebar/props.js +5 -1
- package/cjs/exported-related/chat-sidebar/sidebar-button/SidebarButton.js +1 -1
- package/cjs/exported-related/grid-influencer/styled.js +6 -2
- package/cjs/exported-related/message-delimiter/styled.js +1 -1
- package/cjs/exported-related/tile-button/TileButton.js +4 -4
- package/cjs/exported-related/tile-button/styled.js +7 -5
- package/cjs/parts/chat-composer/ChatContainerComposer.js +8 -13
- package/cjs/parts/chat-composer/styled.js +2 -2
- package/cjs/parts/chat-container/ChatContainer.js +9 -15
- package/cjs/parts/chat-container/styled.js +11 -1
- package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js +24 -50
- package/cjs/parts/chat-container-messages-list/styled.js +5 -1
- package/cjs/parts/chat-container-messages-list/useGetNewMessages.js +0 -1
- package/cjs/react-desc-prop-types.js +42 -5
- package/cjs/styled.js +1 -1
- package/esm/exported-related/bubble/ChatBubble.js +7 -7
- package/esm/exported-related/bubble/styled.js +30 -1
- package/esm/exported-related/chat-card/props.js +2 -2
- package/esm/exported-related/chat-container-header/props.js +1 -1
- package/esm/exported-related/chat-sidebar/SideBarChat.js +1 -3
- package/esm/exported-related/chat-sidebar/props.js +5 -1
- package/esm/exported-related/chat-sidebar/sidebar-button/SidebarButton.js +1 -1
- package/esm/exported-related/grid-influencer/styled.js +6 -2
- package/esm/exported-related/message-delimiter/styled.js +1 -1
- package/esm/exported-related/tile-button/TileButton.js +4 -4
- package/esm/exported-related/tile-button/styled.js +7 -4
- package/esm/parts/chat-composer/ChatContainerComposer.js +6 -11
- package/esm/parts/chat-composer/styled.js +2 -2
- package/esm/parts/chat-container/ChatContainer.js +9 -15
- package/esm/parts/chat-container/styled.js +11 -1
- package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js +24 -50
- package/esm/parts/chat-container-messages-list/styled.js +5 -1
- package/esm/parts/chat-container-messages-list/useGetNewMessages.js +0 -1
- package/esm/react-desc-prop-types.js +42 -5
- package/esm/styled.js +1 -1
- package/package.json +10 -10
|
@@ -80,7 +80,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
80
80
|
totalSize,
|
|
81
81
|
virtualItems
|
|
82
82
|
} = reactVirtual.useVirtual(_objectSpread(_objectSpread({
|
|
83
|
-
size: messages
|
|
83
|
+
size: messages?.length,
|
|
84
84
|
parentRef: virtualListRef,
|
|
85
85
|
overscan: 15
|
|
86
86
|
}, getPadding({
|
|
@@ -92,8 +92,6 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
92
92
|
}));
|
|
93
93
|
const newMessages = useGetNewMessages.useGetNewMessages(messages);
|
|
94
94
|
const debouncedScroll = React__default["default"].useMemo(() => lodash.debounce(() => {
|
|
95
|
-
var _virtualListRef$curre;
|
|
96
|
-
|
|
97
95
|
if (document.visibilityState === 'hidden') {
|
|
98
96
|
pendingOnScroll.current = true;
|
|
99
97
|
return [];
|
|
@@ -104,7 +102,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
104
102
|
const {
|
|
105
103
|
bottom,
|
|
106
104
|
top
|
|
107
|
-
} =
|
|
105
|
+
} = virtualListRef.current?.getBoundingClientRect();
|
|
108
106
|
const list = virtualListRef.current.querySelectorAll('[data-element="chat-element-list-item"]');
|
|
109
107
|
const indexList = [];
|
|
110
108
|
list.forEach(item => {
|
|
@@ -119,7 +117,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
119
117
|
}, 500), [onScrollEnds]);
|
|
120
118
|
const onScrollStop = React__default["default"].useCallback(debouncedScroll, [debouncedScroll]);
|
|
121
119
|
const onlyFocus = React__default["default"].useCallback(index => {
|
|
122
|
-
virtualListRef.current.querySelector(
|
|
120
|
+
virtualListRef.current.querySelector(`[data-index="${index}"]`).focus();
|
|
123
121
|
}, []);
|
|
124
122
|
const scrollAndFocus = React__default["default"].useCallback(function (index) {
|
|
125
123
|
let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
@@ -157,9 +155,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
157
155
|
actionRef.current.focusToIndexWithoutScroll = onlyFocus;
|
|
158
156
|
|
|
159
157
|
actionRef.current.focusToList = () => {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
(_virtualListRef$curre2 = virtualListRef.current) === null || _virtualListRef$curre2 === void 0 ? void 0 : _virtualListRef$curre2.focus();
|
|
158
|
+
virtualListRef.current?.focus();
|
|
163
159
|
};
|
|
164
160
|
}
|
|
165
161
|
}, [actionRef, onScrollStop, onlyFocus, scrollAndFocus, vScroll]);
|
|
@@ -195,13 +191,9 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
195
191
|
e.preventDefault();
|
|
196
192
|
|
|
197
193
|
if (index > 0) {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
((_virtualListRef$curre3 = virtualListRef.current) === null || _virtualListRef$curre3 === void 0 ? void 0 : _virtualListRef$curre3.querySelector("[data-index=\"".concat(index - 1, "\"]"))).focus();
|
|
194
|
+
(virtualListRef.current?.querySelector(`[data-index="${index - 1}"]`)).focus();
|
|
201
195
|
} else if (hasMoreItems === 'top') {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
(_loadMoreRef$current = loadMoreRef.current) === null || _loadMoreRef$current === void 0 ? void 0 : _loadMoreRef$current.focus();
|
|
196
|
+
loadMoreRef.current?.focus();
|
|
205
197
|
}
|
|
206
198
|
|
|
207
199
|
break;
|
|
@@ -209,10 +201,8 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
209
201
|
case 'ArrowDown':
|
|
210
202
|
e.preventDefault();
|
|
211
203
|
|
|
212
|
-
if (index <
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
((_virtualListRef$curre4 = virtualListRef.current) === null || _virtualListRef$curre4 === void 0 ? void 0 : _virtualListRef$curre4.querySelector("[data-index=\"".concat(index + 1, "\"]"))).focus();
|
|
204
|
+
if (index < messages?.length - 1) {
|
|
205
|
+
(virtualListRef.current?.querySelector(`[data-index="${index + 1}"]`)).focus();
|
|
216
206
|
}
|
|
217
207
|
|
|
218
208
|
break;
|
|
@@ -224,37 +214,29 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
224
214
|
|
|
225
215
|
case 'End':
|
|
226
216
|
e.preventDefault();
|
|
227
|
-
scrollAndFocus(
|
|
217
|
+
scrollAndFocus(messages?.length - 1);
|
|
228
218
|
break;
|
|
229
219
|
|
|
230
220
|
case 'Tab':
|
|
231
221
|
if (hasMoreItems === 'bottom' && !e.shiftKey) {
|
|
232
|
-
var _loadMoreRef$current2;
|
|
233
|
-
|
|
234
222
|
e.preventDefault();
|
|
235
|
-
|
|
223
|
+
loadMoreRef.current?.focus();
|
|
236
224
|
} else if (hasMoreItems === 'top' && e.shiftKey) {
|
|
237
|
-
var _loadMoreRef$current3;
|
|
238
|
-
|
|
239
225
|
e.preventDefault();
|
|
240
|
-
|
|
226
|
+
loadMoreRef.current?.focus();
|
|
241
227
|
} else if (!e.shiftKey) {
|
|
242
228
|
if (bannerPosition) {
|
|
243
|
-
var _bannerRef$current;
|
|
244
|
-
|
|
245
229
|
e.preventDefault();
|
|
246
|
-
bannerRef
|
|
230
|
+
bannerRef?.current?.focusOnWrapper();
|
|
247
231
|
}
|
|
248
232
|
} else {
|
|
249
|
-
var _virtualListRef$curre5;
|
|
250
|
-
|
|
251
233
|
e.preventDefault();
|
|
252
|
-
|
|
234
|
+
virtualListRef.current?.focus();
|
|
253
235
|
}
|
|
254
236
|
|
|
255
237
|
break;
|
|
256
238
|
}
|
|
257
|
-
}, [bannerRef, hasMoreItems, messages
|
|
239
|
+
}, [bannerRef, hasMoreItems, messages?.length, bannerPosition, scrollAndFocus]);
|
|
258
240
|
const handleListKey = React__default["default"].useCallback(e => {
|
|
259
241
|
const {
|
|
260
242
|
key
|
|
@@ -265,9 +247,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
265
247
|
e.preventDefault();
|
|
266
248
|
|
|
267
249
|
if (document.activeElement !== loadMoreRef.current) {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
onlyFocus((_onScrollStop = onScrollStop()) === null || _onScrollStop === void 0 ? void 0 : _onScrollStop.shift());
|
|
250
|
+
onlyFocus(onScrollStop()?.shift());
|
|
271
251
|
}
|
|
272
252
|
|
|
273
253
|
break;
|
|
@@ -276,11 +256,9 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
276
256
|
e.preventDefault();
|
|
277
257
|
|
|
278
258
|
if (document.activeElement === loadMoreRef.current) {
|
|
279
|
-
virtualListRef.current.querySelector(
|
|
259
|
+
virtualListRef.current.querySelector(`[data-index="0"]`).focus();
|
|
280
260
|
} else {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
onlyFocus((_onScrollStop2 = onScrollStop()) === null || _onScrollStop2 === void 0 ? void 0 : _onScrollStop2.pop());
|
|
261
|
+
onlyFocus(onScrollStop()?.pop());
|
|
284
262
|
}
|
|
285
263
|
|
|
286
264
|
break;
|
|
@@ -292,16 +270,14 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
292
270
|
|
|
293
271
|
case 'End':
|
|
294
272
|
e.preventDefault();
|
|
295
|
-
scrollAndFocus(
|
|
273
|
+
scrollAndFocus(messages?.length - 1);
|
|
296
274
|
break;
|
|
297
275
|
|
|
298
276
|
case 'Tab':
|
|
299
277
|
if (document.activeElement !== loadMoreRef.current) {
|
|
300
278
|
if (hasMoreItems === 'bottom' && !e.shiftKey) {
|
|
301
|
-
var _loadMoreRef$current4;
|
|
302
|
-
|
|
303
279
|
e.preventDefault();
|
|
304
|
-
|
|
280
|
+
loadMoreRef.current?.focus();
|
|
305
281
|
} else if (!e.shiftKey) {
|
|
306
282
|
e.preventDefault();
|
|
307
283
|
actionRef.current.focusToComposer();
|
|
@@ -310,15 +286,13 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
310
286
|
e.preventDefault();
|
|
311
287
|
actionRef.current.focusToComposer();
|
|
312
288
|
} else {
|
|
313
|
-
var _virtualListRef$curre6;
|
|
314
|
-
|
|
315
289
|
e.preventDefault();
|
|
316
|
-
|
|
290
|
+
virtualListRef.current?.focus();
|
|
317
291
|
}
|
|
318
292
|
|
|
319
293
|
break;
|
|
320
294
|
}
|
|
321
|
-
}, [actionRef, hasMoreItems, messages
|
|
295
|
+
}, [actionRef, hasMoreItems, messages?.length, onScrollStop, onlyFocus, scrollAndFocus]);
|
|
322
296
|
const render = React__default["default"].useMemo(() => virtualItems.map(virtualItem => {
|
|
323
297
|
const {
|
|
324
298
|
index,
|
|
@@ -331,7 +305,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
331
305
|
position: 'absolute',
|
|
332
306
|
top: 0,
|
|
333
307
|
left: 0,
|
|
334
|
-
transform:
|
|
308
|
+
transform: `translateY(${start}px)`,
|
|
335
309
|
width: '100%'
|
|
336
310
|
};
|
|
337
311
|
return /*#__PURE__*/jsxRuntime.jsx(styled.ListItem, {
|
|
@@ -350,7 +324,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
350
324
|
jsxRuntime.jsx(ChatBubble.ChatBubble, _objectSpread(_objectSpread({}, row), {}, {
|
|
351
325
|
helpMessage: isSending ? sendingText : row.helpMessage
|
|
352
326
|
})) : 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)
|
|
353
|
-
},
|
|
327
|
+
}, `ds-chat-bubble-${index}-${row.dsId}-${row.type}`);
|
|
354
328
|
}), [virtualItems, messages, sendingMessages, handleKey, sendingText]);
|
|
355
329
|
return /*#__PURE__*/jsxRuntime.jsxs(styled.StyledWrapper, _objectSpread(_objectSpread({}, globalAttributes), {}, {
|
|
356
330
|
children: [/*#__PURE__*/jsxRuntime.jsx(styled.StyledChatContainerContentList, {
|
|
@@ -360,7 +334,7 @@ const ChatContainerMessagesList = props$1 => {
|
|
|
360
334
|
role: "list",
|
|
361
335
|
onKeyDown: handleListKey,
|
|
362
336
|
children: /*#__PURE__*/_jsx__default["default"](styled.StyledChatContainerContentListScroll, {
|
|
363
|
-
height:
|
|
337
|
+
height: `${totalSize}px`
|
|
364
338
|
}, void 0, !isLoading && hasMoreItems ? /*#__PURE__*/_jsx__default["default"](styled.StyledLoadMoreContainer, {
|
|
365
339
|
hasMoreItems: hasMoreItems
|
|
366
340
|
}, void 0, /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
|
|
@@ -16,7 +16,11 @@ const StyledWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
|
16
16
|
|
|
17
17
|
const StyledWrapperListItem = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
18
18
|
componentId: "sc-1jhprzr-1"
|
|
19
|
-
})(["min-width:100%;", ";", ";", ";"], props$1 => props$1.type === props.BUBBLE_TYPES.SENDER &&
|
|
19
|
+
})(["min-width:100%;", ";", ";", ";"], props$1 => props$1.type === props.BUBBLE_TYPES.SENDER && `padding: ${props$1.theme.space.xxs} ${props$1.theme.space.xxs} ${props$1.theme.space.xxs} 13%
|
|
20
|
+
`, props$1 => props$1.type === props.BUBBLE_TYPES.RECIPIENT && `padding: ${props$1.theme.space.xxs} 13% ${props$1.theme.space.xxs}
|
|
21
|
+
${props$1.theme.space.xxs}
|
|
22
|
+
`, props$1 => props$1.type === props.BUBBLE_TYPES.SYSTEM && `padding: ${props$1.theme.space.xxs} 0px
|
|
23
|
+
`);
|
|
20
24
|
const StyledChatContainerContentList = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
21
25
|
componentId: "sc-1jhprzr-2"
|
|
22
26
|
})(["width:100%;height:100%;padding:", ";padding-bottom:0;overflow-y:auto;overflow-x:hidden;"], props => props.theme.space.xs);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
6
5
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
7
6
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
7
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
@@ -51,7 +51,17 @@ const ChatComposerPropTypes = {
|
|
|
51
51
|
inputMaxLength: dsPropsHelpers.PropTypes.number.description('Max length of the composer. `undefined` for no limit').defaultValue(defaultPropsComposer.inputMaxLength),
|
|
52
52
|
buttonDisabled: dsPropsHelpers.PropTypes.bool.description('Control the disabled for the send button').defaultValue(defaultPropsComposer.buttonDisabled),
|
|
53
53
|
dataTestid: dsPropsHelpers.PropTypes.string.description('Data testid').defaultValue(defaultPropsComposer.placeholder),
|
|
54
|
-
actionRef: dsPropsHelpers.PropTypes.object.description(
|
|
54
|
+
actionRef: dsPropsHelpers.PropTypes.object.description(`Reference:
|
|
55
|
+
{
|
|
56
|
+
scrollToIndex: (n: number) => void,
|
|
57
|
+
getMessagesInView: () => number[],
|
|
58
|
+
focusToIndex: (n: number) => void,
|
|
59
|
+
focusToList: () => void,
|
|
60
|
+
focusToComposer: () => void,
|
|
61
|
+
focusToSend: () => void,
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
`).defaultValue(defaultPropsComposer.actionRef)
|
|
55
65
|
};
|
|
56
66
|
const defaultPropsMessagesList = {
|
|
57
67
|
messages: [],
|
|
@@ -65,8 +75,19 @@ const defaultPropsMessagesList = {
|
|
|
65
75
|
};
|
|
66
76
|
const ChatContainerMessagesListPropTypes = _objectSpread(_objectSpread({}, dsPropsHelpers.globalAttributesPropTypes), {}, {
|
|
67
77
|
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(
|
|
69
|
-
|
|
78
|
+
actionRef: dsPropsHelpers.PropTypes.object.description(`Reference:
|
|
79
|
+
{
|
|
80
|
+
scrollToIndex: (n: number) => void,
|
|
81
|
+
getMessagesInView: () => number[],
|
|
82
|
+
focusToIndex: (n: number) => void,
|
|
83
|
+
focusToIndexWithoutScroll: (n: number) => void,
|
|
84
|
+
focusToList: () => void,
|
|
85
|
+
focusToComposer: () => void,
|
|
86
|
+
focusToSend: () => void,
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
`).defaultValue(defaultPropsMessagesList.actionRef),
|
|
90
|
+
onScrollEnds: dsPropsHelpers.PropTypes.func.description(`Called when the scroll stops.`),
|
|
70
91
|
isLoading: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Keeps the load more space while the loading is in progress'),
|
|
71
92
|
hasMoreItems: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
|
|
72
93
|
getMoreMessages: dsPropsHelpers.PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultPropsMessagesList.getMoreMessages),
|
|
@@ -102,10 +123,26 @@ const ChatContainerPropTypes = _objectSpread(_objectSpread({}, dsPropsHelpers.gl
|
|
|
102
123
|
hasMoreItems: dsPropsHelpers.PropTypes.oneOf(['top', 'bottom', undefined]).description('Show Load More button at the `top` or `bottom` of the container'),
|
|
103
124
|
getMoreMessages: dsPropsHelpers.PropTypes.func.description('Called when the user clicks on load more').defaultValue(defaultProps.getMoreMessages),
|
|
104
125
|
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(
|
|
126
|
+
bannerProps: dsPropsHelpers.PropTypes.object.description(`Banner configuration:
|
|
127
|
+
label: string;
|
|
128
|
+
viewLabel: string;
|
|
129
|
+
type: BANNER_TYPES;
|
|
130
|
+
onView: () => void;
|
|
131
|
+
onClose: () => void;
|
|
132
|
+
`).defaultValue(defaultProps.bannerProps),
|
|
106
133
|
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
134
|
sendingText: dsPropsHelpers.PropTypes.string.description('Label description for messages in sending status').defaultValue(defaultProps.sendingText),
|
|
108
|
-
actionRef: dsPropsHelpers.PropTypes.object.description(
|
|
135
|
+
actionRef: dsPropsHelpers.PropTypes.object.description(`Reference:
|
|
136
|
+
{
|
|
137
|
+
scrollToIndex: (n: number) => void,
|
|
138
|
+
getMessagesInView: () => number[],
|
|
139
|
+
focusToIndex: (n: number) => void,
|
|
140
|
+
focusToList: () => void,
|
|
141
|
+
focusToComposer: () => void,
|
|
142
|
+
focusToSend: () => void,
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
`).defaultValue(defaultProps.actionRef)
|
|
109
146
|
});
|
|
110
147
|
|
|
111
148
|
exports.ChatComposerPropTypes = ChatComposerPropTypes;
|
package/cjs/styled.js
CHANGED
|
@@ -7,7 +7,7 @@ const BUTTON_SIDEBAR_HEIGHT = 48;
|
|
|
7
7
|
const BUTTON_FLOATING = 56;
|
|
8
8
|
const BOX_SHADOW = '0 5px 8px 0 rgba(53,60,70,0.55)';
|
|
9
9
|
const BOX_SHADOW_FLOATING = '0 5px 8px 0 rgba(53,60,70,0.35)';
|
|
10
|
-
const BOX_SHADOW_INSET =
|
|
10
|
+
const BOX_SHADOW_INSET = `inset 100px 3px 4px 0 rgba(53,60,70,0.50)`;
|
|
11
11
|
|
|
12
12
|
exports.BOX_SHADOW = BOX_SHADOW;
|
|
13
13
|
exports.BOX_SHADOW_FLOATING = BOX_SHADOW_FLOATING;
|
|
@@ -24,7 +24,7 @@ const ChatBubble = props => {
|
|
|
24
24
|
} = propsWithDefault;
|
|
25
25
|
const bodyParts = React.useMemo(() => typeof body === 'string' ? body.split('\n') : [body], [body]);
|
|
26
26
|
return /*#__PURE__*/_jsx(StyledWrapper, {
|
|
27
|
-
"data-testid":
|
|
27
|
+
"data-testid": `ds-chat-bubble-${dsId}`
|
|
28
28
|
}, void 0, /*#__PURE__*/_jsx(StyledColoredBubble, {
|
|
29
29
|
type: type
|
|
30
30
|
}, void 0, /*#__PURE__*/_jsx(StyledTitleBubble, {
|
|
@@ -34,22 +34,22 @@ const ChatBubble = props => {
|
|
|
34
34
|
className: "sr-only"
|
|
35
35
|
}, void 0, /*#__PURE__*/_jsx(StyledTitleLeftBubble, {
|
|
36
36
|
alignItems: "center",
|
|
37
|
-
"data-testid":
|
|
37
|
+
"data-testid": `chat-bubble-title-${dsId}`
|
|
38
38
|
}, void 0, title), /*#__PURE__*/_jsx(StyledTitleRightBubble, {
|
|
39
39
|
alignItems: "center",
|
|
40
40
|
type: type,
|
|
41
|
-
"data-testid":
|
|
41
|
+
"data-testid": `chat-bubble-time-${dsId}`
|
|
42
42
|
}, void 0, time)), /*#__PURE__*/_jsx(StyleBodyWrapper, {
|
|
43
|
-
"data-testid":
|
|
44
|
-
}, void 0, bodyParts.map((item, index) => /*#__PURE__*/_jsx(React.Fragment, {},
|
|
43
|
+
"data-testid": `chat-bubble-body-${dsId}`
|
|
44
|
+
}, void 0, bodyParts.map((item, index) => /*#__PURE__*/_jsx(React.Fragment, {}, `${item}-${dsId}`, item, index < bodyParts.length - 1 ? _br || (_br = /*#__PURE__*/_jsx("br", {})) : null))), /*#__PURE__*/_jsx(ChatBubbleArrow, {
|
|
45
45
|
type: type
|
|
46
46
|
})), errorMessage ? /*#__PURE__*/_jsx(StyleErrorMessage, {
|
|
47
|
-
"data-testid":
|
|
47
|
+
"data-testid": `chat-bubble-error-message-${dsId}`,
|
|
48
48
|
p: "xxs",
|
|
49
49
|
gutter: "xxs",
|
|
50
50
|
cols: [1, 'auto']
|
|
51
51
|
}, void 0, /*#__PURE__*/_jsx("span", {}, void 0, errorMessage), _WarningCircleFill || (_WarningCircleFill = /*#__PURE__*/_jsx(WarningCircleFill, {}))) : null, helpMessage ? /*#__PURE__*/_jsx(StyleHelpMessage, {
|
|
52
|
-
"data-testid":
|
|
52
|
+
"data-testid": `chat-bubble-help-message-${dsId}`,
|
|
53
53
|
p: "xxs",
|
|
54
54
|
gutter: "xxs",
|
|
55
55
|
cols: [1, 'auto']
|
|
@@ -32,6 +32,35 @@ const StyledBubbleArrow = /*#__PURE__*/styled.div.withConfig({
|
|
|
32
32
|
})(["display:block;content:'';position:absolute;bottom:10px;height:15px;"]);
|
|
33
33
|
const StyledColoredBubble = /*#__PURE__*/styled.div.withConfig({
|
|
34
34
|
componentId: "sc-57v3aa-8"
|
|
35
|
-
})(["min-width:224px;border-radius:10px;position:relative;", ""], props => props.type === BUBBLE_TYPES.SENDER ?
|
|
35
|
+
})(["min-width:224px;border-radius:10px;position:relative;", ""], props => props.type === BUBBLE_TYPES.SENDER ? `
|
|
36
|
+
border: 1px solid ${props.theme.colors.brand['700']};
|
|
37
|
+
background: ${props.theme.colors.brand[600]};
|
|
38
|
+
color: ${props.theme.colors.neutral['000']};
|
|
39
|
+
${StyledBubbleArrow}{
|
|
40
|
+
right: -9px;
|
|
41
|
+
bottom: 6px;
|
|
42
|
+
svg{
|
|
43
|
+
fill: ${props.theme.colors.brand[600]};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
a {
|
|
48
|
+
color: #FFF;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
` : `
|
|
52
|
+
box-shadow: 0 1px 3px 0 rgba(53,60,70,0.80);
|
|
53
|
+
background: ${props.theme.colors.neutral['000']};
|
|
54
|
+
color: ${props.theme.colors.neutral[700]};
|
|
55
|
+
|
|
56
|
+
${StyledBubbleArrow}{
|
|
57
|
+
left: -11px;
|
|
58
|
+
bottom: 6px;
|
|
59
|
+
svg{
|
|
60
|
+
fill: ${props.theme.colors.neutral['000']};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
`);
|
|
36
65
|
|
|
37
66
|
export { StyleBodyWrapper, StyleErrorMessage, StyleHelpMessage, StyledBubbleArrow, StyledColoredBubble, StyledTitleBubble, StyledTitleLeftBubble, StyledTitleRightBubble, StyledWrapper };
|
|
@@ -8,8 +8,8 @@ const defaultProps = {
|
|
|
8
8
|
rightAddon: /*#__PURE__*/jsx(Fragment, {})
|
|
9
9
|
};
|
|
10
10
|
const propTypes = {
|
|
11
|
-
title: PropTypes.string.isRequired.description(
|
|
12
|
-
content: PropTypes.string.description(
|
|
11
|
+
title: PropTypes.string.isRequired.description(`Card's title`),
|
|
12
|
+
content: PropTypes.string.description(`Card's content`),
|
|
13
13
|
time: PropTypes.string.description('Time'),
|
|
14
14
|
rightAddon: PropTypes.element.description('Right addon, badge or icon')
|
|
15
15
|
};
|
|
@@ -57,9 +57,7 @@ const SideBarChat = props => {
|
|
|
57
57
|
if (ref) listRef[ref.dataset.key] = ref;
|
|
58
58
|
}, [listRef]);
|
|
59
59
|
React.useEffect(() => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if ((_actionRef$current = actionRef.current) !== null && _actionRef$current !== void 0 && _actionRef$current.listRef) {
|
|
60
|
+
if (actionRef.current?.listRef) {
|
|
63
61
|
actionRef.current.listRef = listRef;
|
|
64
62
|
}
|
|
65
63
|
}, [sidebarItems, expanded, actionRef, listRef]);
|
|
@@ -28,7 +28,11 @@ const chatSidebarProps = {
|
|
|
28
28
|
onHeaderExpand: PropTypes.func.description('The function to call when the chat is opened via the header').defaultValue(defaultProps.onHeaderExpand),
|
|
29
29
|
onHeaderClose: PropTypes.func.description('The function to call when the chat is closed via the header').defaultValue(defaultProps.onHeaderClose),
|
|
30
30
|
footerButtonExtraProps: PropTypes.object.description('Expand/collapse footer button extra props').defaultValue(defaultProps.footerButtonExtraProps),
|
|
31
|
-
actionRef: PropTypes.object.description(
|
|
31
|
+
actionRef: PropTypes.object.description(`Action ref for sidebar
|
|
32
|
+
{
|
|
33
|
+
listRef: references to Tiles
|
|
34
|
+
}
|
|
35
|
+
`).defaultValue(defaultProps.actionRef)
|
|
32
36
|
};
|
|
33
37
|
|
|
34
38
|
export { chatSidebarProps, defaultProps };
|
|
@@ -29,7 +29,7 @@ const SidebarButton = _ref => {
|
|
|
29
29
|
if (dsId) onClick(dsId);
|
|
30
30
|
}, [onClick, dsId]);
|
|
31
31
|
return /*#__PURE__*/jsxs(StyledSidebarButton, _objectSpread(_objectSpread({
|
|
32
|
-
"data-testid":
|
|
32
|
+
"data-testid": `sidebar-button-${dsId}`,
|
|
33
33
|
onClick: handleClick
|
|
34
34
|
}, rest), {}, {
|
|
35
35
|
children: [/*#__PURE__*/_jsx(StyledSidebarButtonIcon, {
|
|
@@ -4,9 +4,13 @@ import { MIN_WIDTH_SIDEBAR } from '../../styled.js';
|
|
|
4
4
|
|
|
5
5
|
const StyledChatContainer = /*#__PURE__*/styled(Grid).withConfig({
|
|
6
6
|
componentId: "sc-15373cc-0"
|
|
7
|
-
})(["height:100%;width:", ";background:", ";box-shadow:-1px 0 0 0 ", ";transition:width ", " 350ms;"], props => props.expanded ?
|
|
7
|
+
})(["height:100%;width:", ";background:", ";box-shadow:-1px 0 0 0 ", ";transition:width ", " 350ms;"], props => props.expanded ? `${props.expandedWidth}px` : `${MIN_WIDTH_SIDEBAR}px`, props => props.theme.colors.neutral['050'], props => props.theme.colors.neutral[100], props => props.expanded ? 'ease-out' : 'ease-in');
|
|
8
8
|
const StyledChatContainerContent = /*#__PURE__*/styled(Grid).withConfig({
|
|
9
9
|
componentId: "sc-15373cc-1"
|
|
10
|
-
})(["height:100%;overflow:hidden;background:", ";", ""], props => props.theme.colors.neutral['050'], props => props.floating ?
|
|
10
|
+
})(["height:100%;overflow:hidden;background:", ";", ""], props => props.theme.colors.neutral['050'], props => props.floating ? `
|
|
11
|
+
width: ${props.expandedWidth}px;
|
|
12
|
+
` : `
|
|
13
|
+
width: ${props.expandedWidth - MIN_WIDTH_SIDEBAR}px;
|
|
14
|
+
`);
|
|
11
15
|
|
|
12
16
|
export { StyledChatContainer, StyledChatContainerContent };
|
|
@@ -9,6 +9,6 @@ const Line = /*#__PURE__*/styled.span.withConfig({
|
|
|
9
9
|
})(["border-top:1px solid ", ";"], props => props.theme.colors.neutral['400']);
|
|
10
10
|
const Text = /*#__PURE__*/styled.p.withConfig({
|
|
11
11
|
componentId: "sc-1oelxl4-2"
|
|
12
|
-
})(["color:", ";font-size:", ";font-weight:", ";margin:", ";"], props => props.theme.colors.neutral['600'], props => props.size === 's' ? '12px' : '14px', props => props.theme.fontWeights.semibold, props => typeof props.verticalMargin === 'number' ?
|
|
12
|
+
})(["color:", ";font-size:", ";font-weight:", ";margin:", ";"], props => props.theme.colors.neutral['600'], props => props.size === 's' ? '12px' : '14px', props => props.theme.fontWeights.semibold, props => typeof props.verticalMargin === 'number' ? `${props.verticalMargin}px 8px` : `${props.verticalMargin} 8px`);
|
|
13
13
|
|
|
14
14
|
export { Line, Text, Wrapper };
|
|
@@ -53,7 +53,7 @@ const TileButton = props => {
|
|
|
53
53
|
})), badge ? /*#__PURE__*/_jsx(StyledStatusBadge, {
|
|
54
54
|
badgeColor: badgeColor,
|
|
55
55
|
badgePosition: badgePosition,
|
|
56
|
-
"data-testid":
|
|
56
|
+
"data-testid": `tile-badge-${dsId}`
|
|
57
57
|
}) : null)), !isHeader ? /*#__PURE__*/_jsx(Grid, {
|
|
58
58
|
width: "100%",
|
|
59
59
|
justifyContent: "center"
|
|
@@ -61,7 +61,7 @@ const TileButton = props => {
|
|
|
61
61
|
const Btn = React.useMemo(() => /*#__PURE__*/jsx(StyledTileButton, {
|
|
62
62
|
isHeader: isHeader,
|
|
63
63
|
value: dsId,
|
|
64
|
-
"data-testid":
|
|
64
|
+
"data-testid": `tile-button-${dsId}`,
|
|
65
65
|
"data-key": dsId,
|
|
66
66
|
onClick: handleClick,
|
|
67
67
|
onFocus: onFocus,
|
|
@@ -79,11 +79,11 @@ const TileButton = props => {
|
|
|
79
79
|
}, void 0, _span || (_span = /*#__PURE__*/_jsx("span", {}, void 0, MainContent)), _StyledWrapperLeftBor || (_StyledWrapperLeftBor = /*#__PURE__*/_jsx(StyledWrapperLeftBorder, {})), showClose && !disabled ? /*#__PURE__*/_jsx(CloseButton, {
|
|
80
80
|
onClick: onClose,
|
|
81
81
|
value: dsId,
|
|
82
|
-
"data-testid":
|
|
82
|
+
"data-testid": `tile-close-btn-${dsId}`
|
|
83
83
|
}, void 0, _CloseXsmall || (_CloseXsmall = /*#__PURE__*/_jsx(CloseXsmall, {}))) : null)
|
|
84
84
|
}, dsId), [MainContent, ariaLabel, badgeColor, badgePosition, disabled, dsId, handleClick, isHeader, onBlur, onClose, onFocus, selected, showClose, innerRef]);
|
|
85
85
|
return title && !disableTooltip ? /*#__PURE__*/_jsx(StyledTooltipV3ButtonWrapper, {}, void 0, /*#__PURE__*/_jsx(DSTooltipV3, {
|
|
86
|
-
id:
|
|
86
|
+
id: `ds-chat-tile-tooltip-button-${dsId}`,
|
|
87
87
|
text: title,
|
|
88
88
|
startPlacementPreference: tooltipPlacement
|
|
89
89
|
}, void 0, Btn)) : Btn;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';
|
|
2
1
|
import styled from 'styled-components';
|
|
3
2
|
import { css } from '@elliemae/ds-system';
|
|
4
3
|
import { Grid } from '@elliemae/ds-grid';
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
/* eslint-disable indent */
|
|
7
6
|
const MIN_WIDTH_SIDEBAR = 48;
|
|
8
7
|
const BUTTON_SIDEBAR_HEIGHT = 48; // Buttons
|
|
9
8
|
|
|
@@ -53,7 +52,7 @@ const StyledTooltipV3ButtonWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
|
53
52
|
})(["height:", "px;width:", "px;"], BUTTON_SIDEBAR_HEIGHT, MIN_WIDTH_SIDEBAR);
|
|
54
53
|
const StyledTileButton = /*#__PURE__*/styled.button.withConfig({
|
|
55
54
|
componentId: "sc-b69sbu-7"
|
|
56
|
-
})(["outline:none;background:transparent;height:", "px;width:", "px;position:relative;padding:0;border:none;cursor:pointer;border-bottom:", ";&:focus,&:hover,&:active,&:disabled{background:", ";& ", "{border:2px solid ", ";margin-top:-2px;", ";}}&:focus,&:hover{& ", "{background:", ";}& ", "{color:", ";}& svg{fill:", ";}}&:active:not(:disabled){background:", ";& ", "{background:", ";}& ", "{color:", ";font-weight:600;}& svg{fill:", ";}& ", "{border:2px solid ", ";}}&:disabled{background:", ";", "{background:", ";}& ", "{background:", ";border:2px solid ", ";}", "{svg{fill:", ";}}", "{color:", ";}}", ""], BUTTON_SIDEBAR_HEIGHT, MIN_WIDTH_SIDEBAR, props => props.isHeader ?
|
|
55
|
+
})(["outline:none;background:transparent;height:", "px;width:", "px;position:relative;padding:0;border:none;cursor:pointer;border-bottom:", ";&:focus,&:hover,&:active,&:disabled{background:", ";& ", "{border:2px solid ", ";margin-top:-2px;", ";}}&:focus,&:hover{& ", "{background:", ";}& ", "{color:", ";}& svg{fill:", ";}}&:active:not(:disabled){background:", ";& ", "{background:", ";}& ", "{color:", ";font-weight:600;}& svg{fill:", ";}& ", "{border:2px solid ", ";}}&:disabled{background:", ";", "{background:", ";}& ", "{background:", ";border:2px solid ", ";}", "{svg{fill:", ";}}", "{color:", ";}}", ""], BUTTON_SIDEBAR_HEIGHT, MIN_WIDTH_SIDEBAR, props => props.isHeader ? `1px solid ${props.theme.colors.neutral['200']}` : 'none', props => props.theme.colors.neutral['080'], StyledStatusBadge, props => props.theme.colors.neutral['080'], props => {
|
|
57
56
|
switch (props.badgePosition) {
|
|
58
57
|
case 'left':
|
|
59
58
|
return 'margin-left: -2px;';
|
|
@@ -66,7 +65,11 @@ const StyledTileButton = /*#__PURE__*/styled.button.withConfig({
|
|
|
66
65
|
}
|
|
67
66
|
}, StyledWrapperLeftBorder, props => props.theme.colors.brand[800], StyledTileButtonLabel, props => props.theme.colors.neutral[600], props => props.theme.colors.brand[800], props => props.theme.colors.neutral['050'], StyledWrapperLeftBorder, props => props.theme.colors.brand[600], StyledTileButtonLabel, props => props.theme.colors.neutral[600], props => props.theme.colors.brand[600], StyledStatusBadge, props => props.theme.colors.neutral['050'], props => props.theme.colors.neutral['080'], StyledWrapperLeftBorder, props => props.theme.colors.neutral['400'], StyledStatusBadge, props => props.theme.colors.neutral['500'], props => props.theme.colors.neutral['080'], StyledTileButtonIcon, props => props.theme.colors.neutral[400], StyledTileButtonLabel, props => props.theme.colors.neutral[400], props => {
|
|
68
67
|
if (props.selected) {
|
|
69
|
-
return css
|
|
68
|
+
return css`
|
|
69
|
+
& ${StyledWrapperLeftBorder} {
|
|
70
|
+
background: ${nestedProps => nestedProps.theme.colors.brand[600]};
|
|
71
|
+
}
|
|
72
|
+
`;
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
return '';
|
|
@@ -5,7 +5,6 @@ import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
|
5
5
|
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
6
6
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
7
7
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
8
|
-
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
9
8
|
import React from 'react';
|
|
10
9
|
import { Grid } from '@elliemae/ds-grid';
|
|
11
10
|
import { PaperAirplane } from '@elliemae/ds-icons';
|
|
@@ -21,8 +20,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
21
20
|
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(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
21
|
|
|
23
22
|
const ChatComposer = props => {
|
|
24
|
-
var _input$current;
|
|
25
|
-
|
|
26
23
|
const propsWithDefault = useMemoMergePropsWithDefault(props, defaultPropsComposer);
|
|
27
24
|
useValidateTypescriptPropTypes(propsWithDefault, ChatComposerPropTypes);
|
|
28
25
|
const {
|
|
@@ -50,12 +47,10 @@ const ChatComposer = props => {
|
|
|
50
47
|
const internalMaxHeight = React.useMemo(() => maxHeight - 24, [maxHeight]);
|
|
51
48
|
const [showScroll, setShowScroll] = React.useState(true);
|
|
52
49
|
React.useEffect(() => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const newHeight = ((_inputSize$current = inputSize.current) === null || _inputSize$current === void 0 ? void 0 : _inputSize$current.scrollHeight) > internalMaxHeight ? internalMaxHeight : (_inputSize$current2 = inputSize.current) === null || _inputSize$current2 === void 0 ? void 0 : _inputSize$current2.scrollHeight;
|
|
50
|
+
const newHeight = inputSize.current?.scrollHeight > internalMaxHeight ? internalMaxHeight : inputSize.current?.scrollHeight;
|
|
56
51
|
if (newHeight !== height && newHeight > COMPOSER_MIN_HEIGHT) onResize(newHeight);
|
|
57
52
|
setHeight(newHeight);
|
|
58
|
-
setShowScroll(
|
|
53
|
+
setShowScroll(inputSize.current?.scrollHeight - inputSize.current?.clientHeight > 5);
|
|
59
54
|
}, [inputValue, internalMaxHeight, height, onResize]);
|
|
60
55
|
React.useEffect(() => {
|
|
61
56
|
if (actionRef && actionRef.current) {
|
|
@@ -79,7 +74,7 @@ const ChatComposer = props => {
|
|
|
79
74
|
const hasError = React.useMemo(() => inputLength > inputMaxLength, [inputLength, inputMaxLength]);
|
|
80
75
|
return /*#__PURE__*/_jsx(StyledChatContainerContentComposer, {
|
|
81
76
|
rows: ['auto', '15px'],
|
|
82
|
-
maxHeight:
|
|
77
|
+
maxHeight: `${maxHeight}px`,
|
|
83
78
|
"data-testid": dataTestid
|
|
84
79
|
}, void 0, /*#__PURE__*/_jsx(Grid, {
|
|
85
80
|
cols: ['1fr', '24px'],
|
|
@@ -125,7 +120,7 @@ const ChatComposer = props => {
|
|
|
125
120
|
pointerEvents: 'none',
|
|
126
121
|
position: 'absolute',
|
|
127
122
|
top: 0,
|
|
128
|
-
width:
|
|
123
|
+
width: input.current?.clientWidth
|
|
129
124
|
},
|
|
130
125
|
onChange: handleChange,
|
|
131
126
|
value: inputValue
|
|
@@ -141,8 +136,8 @@ const ChatComposer = props => {
|
|
|
141
136
|
}, void 0, inputMaxLength && hasError ? /*#__PURE__*/jsxs(Fragment, {
|
|
142
137
|
children: [/*#__PURE__*/_jsx(StyledCounterErrorA11y, {
|
|
143
138
|
role: "alert"
|
|
144
|
-
}, void 0, ariaMaxLengthMessage ||
|
|
145
|
-
}) : '', inputMaxLength ?
|
|
139
|
+
}, void 0, ariaMaxLengthMessage || `You have entered ${inputLength} characters and have exceeded the limit by ${inputLength - inputMaxLength}. Please limit to less than ${inputMaxLength} characters. `), maxLengthMessage || `Please limit to less than ${inputMaxLength} characters. `]
|
|
140
|
+
}) : '', inputMaxLength ? ` ${inputLength} / ${inputMaxLength}` : ''), _Grid || (_Grid = /*#__PURE__*/_jsx(Grid, {}))));
|
|
146
141
|
};
|
|
147
142
|
|
|
148
143
|
const ChatComposerWithSchema = describe(ChatComposer);
|
|
@@ -8,13 +8,13 @@ const StyledChatContainerContentComposer = /*#__PURE__*/styled(Grid).withConfig(
|
|
|
8
8
|
})(["width:100%;min-height:56px;background:", ";padding:", ";padding-bottom:3px;padding-top:6px;padding-left:", ";max-height:", ";border-top:1px solid #cbcfd7;"], props => props.theme.colors.neutral['050'], props => props.theme.space.xxs, props => props.theme.space.xs, props => props.maxHeight);
|
|
9
9
|
const StyledComposerInput = /*#__PURE__*/styled.textarea.withConfig({
|
|
10
10
|
componentId: "sc-1ahwpce-1"
|
|
11
|
-
})(["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.05s;&:focus{outline:none;border:1px solid ", ";box-shadow:inset 0 0 0 1px #8cc2ed;border-radius:2px;}"], props => props.theme.space.xxs, props => typeof props.height === 'number' ?
|
|
11
|
+
})(["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.05s;&:focus{outline:none;border:1px solid ", ";box-shadow:inset 0 0 0 1px #8cc2ed;border-radius:2px;}"], props => props.theme.space.xxs, props => typeof props.height === 'number' ? `${props.height}px` : props.height, props => props.theme.colors.brand[600]);
|
|
12
12
|
const StyledComposerButton = /*#__PURE__*/styled(DSButton).withConfig({
|
|
13
13
|
componentId: "sc-1ahwpce-2"
|
|
14
14
|
})(["&:disabled{background:none;svg{fill:#5d6775;}}svg{fill:", ";}&:focus{background:", ";}"], props => props.theme.colors.brand[600], props => props.theme.colors.brand[200]);
|
|
15
15
|
const StyledCounterArea = /*#__PURE__*/styled(Grid).withConfig({
|
|
16
16
|
componentId: "sc-1ahwpce-3"
|
|
17
|
-
})(["text-align:right;font-size:11px;height:15px;align-items:center;font-style:italic;", " position:relative;"], props => props.hasError ?
|
|
17
|
+
})(["text-align:right;font-size:11px;height:15px;align-items:center;font-style:italic;", " position:relative;"], props => props.hasError ? `color:${props.theme.colors.danger[900]};` : '');
|
|
18
18
|
const StyledCounterErrorA11y = /*#__PURE__*/styled.span.withConfig({
|
|
19
19
|
componentId: "sc-1ahwpce-4"
|
|
20
20
|
})(["width:1px;height:1px;position:absolute;clip:rect(1px,1px,1px,1px);"]);
|