@patternfly/chatbot 6.5.0-prerelease.23 → 6.5.0-prerelease.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +12 -2
  2. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
  3. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +131 -0
  4. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +2 -0
  5. package/dist/cjs/Message/UserFeedback/UserFeedback.js +5 -5
  6. package/dist/cjs/MessageBar/MessageBar.js +18 -4
  7. package/dist/css/main.css +34 -9
  8. package/dist/css/main.css.map +1 -1
  9. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +12 -2
  10. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
  11. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +126 -0
  12. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +2 -0
  13. package/dist/esm/Message/UserFeedback/UserFeedback.js +6 -6
  14. package/dist/esm/MessageBar/MessageBar.js +18 -4
  15. package/dist/tsconfig.tsbuildinfo +1 -1
  16. package/package.json +1 -1
  17. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +14 -1
  18. package/src/Message/CodeBlockMessage/CodeBlockMessage.test.tsx +171 -0
  19. package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +12 -3
  20. package/src/Message/QuickResponse/QuickResponse.scss +3 -1
  21. package/src/Message/UserFeedback/UserFeedback.scss +28 -1
  22. package/src/Message/UserFeedback/UserFeedback.tsx +22 -12
  23. package/src/MessageBar/AttachButton.scss +0 -1
  24. package/src/MessageBar/MessageBar.scss +11 -2
  25. package/src/MessageBar/MessageBar.tsx +22 -3
  26. package/src/MessageBar/MicrophoneButton.scss +0 -1
  27. package/src/MessageBar/SendButton.scss +0 -1
  28. package/src/MessageBar/StopButton.scss +0 -1
@@ -161,6 +161,7 @@ export const MessageBarBase: FunctionComponent<MessageBarProps> = ({
161
161
  const [isListeningMessage, setIsListeningMessage] = useState<boolean>(false);
162
162
  const [hasSentMessage, setHasSentMessage] = useState(false);
163
163
  const [isComposing, setIsComposing] = useState(false);
164
+ const [isMultiline, setIsMultiline] = useState(false);
164
165
  const inputRef = useRef<HTMLTextAreaElement>(null);
165
166
  const textareaRef = (innerRef as React.RefObject<HTMLTextAreaElement>) ?? inputRef;
166
167
  const attachButtonRef = useRef<HTMLButtonElement>(null);
@@ -209,6 +210,19 @@ export const MessageBarBase: FunctionComponent<MessageBarProps> = ({
209
210
  return lines > 2;
210
211
  };
211
212
 
213
+ const checkIfMultiline = useCallback(
214
+ (field: HTMLTextAreaElement) => {
215
+ const parent = field.parentElement;
216
+ const grandparent = parent?.parentElement;
217
+ if (grandparent) {
218
+ const containerHeight = grandparent.offsetHeight;
219
+ const threshold = isCompact ? 56 : 70;
220
+ setIsMultiline(containerHeight > threshold);
221
+ }
222
+ },
223
+ [isCompact]
224
+ );
225
+
212
226
  const setAutoWidth = useCallback((field: HTMLTextAreaElement) => {
213
227
  const parent = field.parentElement;
214
228
  if (parent) {
@@ -263,12 +277,14 @@ export const MessageBarBase: FunctionComponent<MessageBarProps> = ({
263
277
  if (field) {
264
278
  if (field.value === '') {
265
279
  setInitialLineHeight(field);
280
+ setIsMultiline(false);
266
281
  } else {
267
282
  setAutoHeight(field);
268
283
  setAutoWidth(field);
284
+ checkIfMultiline(field);
269
285
  }
270
286
  }
271
- }, [displayMode, message, setAutoWidth]);
287
+ }, [displayMode, message, setAutoWidth, checkIfMultiline]);
272
288
 
273
289
  useEffect(() => {
274
290
  const field = textareaRef.current;
@@ -284,13 +300,15 @@ export const MessageBarBase: FunctionComponent<MessageBarProps> = ({
284
300
  if (textareaRef.current) {
285
301
  if (event.target.value === '') {
286
302
  setInitialLineHeight(textareaRef.current);
303
+ setIsMultiline(false);
287
304
  } else {
288
305
  setAutoHeight(textareaRef.current);
306
+ checkIfMultiline(textareaRef.current);
289
307
  }
290
308
  }
291
309
  setMessage(event.target.value);
292
310
  },
293
- [onChange]
311
+ [onChange, checkIfMultiline]
294
312
  );
295
313
 
296
314
  // Handle sending message
@@ -453,7 +471,7 @@ export const MessageBarBase: FunctionComponent<MessageBarProps> = ({
453
471
  return (
454
472
  <AttachMenu
455
473
  toggle={(toggleRef) => (
456
- <div ref={toggleRef} className={`pf-chatbot__message-bar ${className ?? ''}`}>
474
+ <div ref={toggleRef} className={css('pf-chatbot__message-bar', isMultiline && 'pf-m-multiline', className)}>
457
475
  {messageBarContents}
458
476
  </div>
459
477
  )}
@@ -481,6 +499,7 @@ export const MessageBarBase: FunctionComponent<MessageBarProps> = ({
481
499
  isPrimary && 'pf-m-primary',
482
500
  hasAiIndicator && 'pf-v6-m-ai-indicator',
483
501
  isThinking && 'pf-v6-m-thinking',
502
+ isMultiline && 'pf-m-multiline',
484
503
  className
485
504
  )}
486
505
  >
@@ -53,6 +53,5 @@
53
53
  .pf-v6-c-button.pf-chatbot__button--microphone.pf-m-compact {
54
54
  width: 1.5rem;
55
55
  height: 1.5rem;
56
- padding: var(--pf-t--global--spacer--sm);
57
56
  align-items: center;
58
57
  }
@@ -58,6 +58,5 @@
58
58
  .pf-v6-c-button.pf-chatbot__button--send.pf-m-compact {
59
59
  width: 1.5rem;
60
60
  height: 1.5rem;
61
- padding: var(--pf-t--global--spacer--sm);
62
61
  align-items: center;
63
62
  }
@@ -41,6 +41,5 @@
41
41
  .pf-v6-c-button.pf-chatbot__button--stop.pf-m-compact {
42
42
  width: 1.5rem;
43
43
  height: 1.5rem;
44
- padding: var(--pf-t--global--spacer--sm);
45
44
  align-items: center;
46
45
  }