@patternfly/chatbot 6.4.0-prerelease.2 → 6.4.0-prerelease.20
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/dist/cjs/Chatbot/Chatbot.js +1 -7
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -0
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +2 -2
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +22 -2
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +15 -9
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +40 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.d.ts +18 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.js +25 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +22 -0
- package/dist/cjs/ChatbotHeader/index.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/index.js +1 -0
- package/dist/cjs/DeepThinking/DeepThinking.d.ts +18 -0
- package/dist/cjs/DeepThinking/DeepThinking.js +18 -0
- package/dist/cjs/DeepThinking/DeepThinking.test.d.ts +1 -0
- package/dist/cjs/DeepThinking/DeepThinking.test.js +48 -0
- package/dist/cjs/DeepThinking/index.d.ts +2 -0
- package/dist/cjs/DeepThinking/index.js +23 -0
- package/dist/cjs/FilePreview/FilePreview.d.ts +26 -0
- package/dist/cjs/FilePreview/FilePreview.js +26 -0
- package/dist/cjs/FilePreview/FilePreview.test.d.ts +1 -0
- package/dist/cjs/FilePreview/FilePreview.test.js +97 -0
- package/dist/cjs/FilePreview/index.d.ts +2 -0
- package/dist/cjs/FilePreview/index.js +23 -0
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +3 -3
- package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +2 -1
- package/dist/cjs/Message/LinkMessage/LinkMessage.js +7 -3
- package/dist/cjs/Message/ListMessage/ListItemMessage.d.ts +1 -1
- package/dist/cjs/Message/ListMessage/ListItemMessage.js +16 -1
- package/dist/cjs/Message/Message.d.ts +15 -0
- package/dist/cjs/Message/Message.js +129 -32
- package/dist/cjs/Message/Message.test.js +71 -0
- package/dist/cjs/Message/SuperscriptMessage/SuperscriptMessage.d.ts +3 -0
- package/dist/cjs/Message/SuperscriptMessage/SuperscriptMessage.js +5 -0
- package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +15 -1
- package/dist/cjs/Message/UserFeedback/UserFeedback.js +4 -4
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +44 -0
- package/dist/cjs/MessageBar/MessageBar.js +19 -4
- package/dist/cjs/MessageBox/JumpButton.d.ts +5 -0
- package/dist/cjs/MessageBox/JumpButton.js +1 -1
- package/dist/cjs/MessageBox/JumpButton.test.js +4 -4
- package/dist/cjs/MessageBox/MessageBox.d.ts +9 -0
- package/dist/cjs/MessageBox/MessageBox.js +2 -2
- package/dist/cjs/MessageBox/MessageBox.test.js +2 -2
- package/dist/cjs/SourcesCard/SourcesCard.d.ts +13 -1
- package/dist/cjs/SourcesCard/SourcesCard.js +6 -6
- package/dist/cjs/SourcesCard/SourcesCard.test.js +49 -0
- package/dist/cjs/ToolResponse/ToolResponse.d.ts +30 -0
- package/dist/cjs/ToolResponse/ToolResponse.js +18 -0
- package/dist/cjs/ToolResponse/ToolResponse.test.d.ts +1 -0
- package/dist/cjs/ToolResponse/ToolResponse.test.js +60 -0
- package/dist/cjs/ToolResponse/index.d.ts +2 -0
- package/dist/cjs/ToolResponse/index.js +23 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +10 -1
- package/dist/css/main.css +273 -17
- package/dist/css/main.css.map +1 -1
- package/dist/dynamic/DeepThinking/package.json +1 -0
- package/dist/dynamic/FilePreview/package.json +1 -0
- package/dist/dynamic/ToolResponse/package.json +1 -0
- package/dist/esm/Chatbot/Chatbot.js +1 -7
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -0
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +2 -2
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +22 -2
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +17 -11
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +41 -3
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.d.ts +18 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.js +22 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +20 -0
- package/dist/esm/ChatbotHeader/index.d.ts +1 -0
- package/dist/esm/ChatbotHeader/index.js +1 -0
- package/dist/esm/DeepThinking/DeepThinking.d.ts +18 -0
- package/dist/esm/DeepThinking/DeepThinking.js +14 -0
- package/dist/esm/DeepThinking/DeepThinking.test.d.ts +1 -0
- package/dist/esm/DeepThinking/DeepThinking.test.js +43 -0
- package/dist/esm/DeepThinking/index.d.ts +2 -0
- package/dist/esm/DeepThinking/index.js +2 -0
- package/dist/esm/FilePreview/FilePreview.d.ts +26 -0
- package/dist/esm/FilePreview/FilePreview.js +21 -0
- package/dist/esm/FilePreview/FilePreview.test.d.ts +1 -0
- package/dist/esm/FilePreview/FilePreview.test.js +92 -0
- package/dist/esm/FilePreview/index.d.ts +2 -0
- package/dist/esm/FilePreview/index.js +2 -0
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +5 -5
- package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +2 -1
- package/dist/esm/Message/LinkMessage/LinkMessage.js +7 -3
- package/dist/esm/Message/ListMessage/ListItemMessage.d.ts +1 -1
- package/dist/esm/Message/ListMessage/ListItemMessage.js +16 -1
- package/dist/esm/Message/Message.d.ts +15 -0
- package/dist/esm/Message/Message.js +129 -32
- package/dist/esm/Message/Message.test.js +71 -0
- package/dist/esm/Message/SuperscriptMessage/SuperscriptMessage.d.ts +3 -0
- package/dist/esm/Message/SuperscriptMessage/SuperscriptMessage.js +3 -0
- package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +15 -1
- package/dist/esm/Message/UserFeedback/UserFeedback.js +4 -4
- package/dist/esm/Message/UserFeedback/UserFeedback.test.js +45 -1
- package/dist/esm/MessageBar/MessageBar.js +19 -4
- package/dist/esm/MessageBox/JumpButton.d.ts +5 -0
- package/dist/esm/MessageBox/JumpButton.js +1 -1
- package/dist/esm/MessageBox/JumpButton.test.js +4 -4
- package/dist/esm/MessageBox/MessageBox.d.ts +9 -0
- package/dist/esm/MessageBox/MessageBox.js +2 -2
- package/dist/esm/MessageBox/MessageBox.test.js +2 -2
- package/dist/esm/SourcesCard/SourcesCard.d.ts +13 -1
- package/dist/esm/SourcesCard/SourcesCard.js +6 -6
- package/dist/esm/SourcesCard/SourcesCard.test.js +50 -1
- package/dist/esm/ToolResponse/ToolResponse.d.ts +30 -0
- package/dist/esm/ToolResponse/ToolResponse.js +14 -0
- package/dist/esm/ToolResponse/ToolResponse.test.d.ts +1 -0
- package/dist/esm/ToolResponse/ToolResponse.test.js +55 -0
- package/dist/esm/ToolResponse/index.d.ts +2 -0
- package/dist/esm/ToolResponse/index.js +2 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -6
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +101 -3
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/FilePreview.tsx +33 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithDeepThinking.tsx +17 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +111 -85
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +70 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolResponse.tsx +135 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +28 -4
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +107 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +616 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotConversationEditing.tsx +202 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +17 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +36 -5
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithPin.tsx +12 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +22 -3
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +1 -1
- package/patternfly-docs/patternfly-docs.config.js +1 -1
- package/src/Chatbot/Chatbot.scss +9 -2
- package/src/Chatbot/Chatbot.tsx +18 -31
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +5 -1
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +28 -10
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +132 -3
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +80 -33
- package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +1 -1
- package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +2 -2
- package/src/ChatbotHeader/ChatbotHeaderNewChatButton.test.tsx +25 -0
- package/src/ChatbotHeader/ChatbotHeaderNewChatButton.tsx +64 -0
- package/src/ChatbotHeader/index.ts +1 -0
- package/src/ChatbotModal/ChatbotModal.scss +1 -1
- package/src/DeepThinking/DeepThinking.scss +24 -0
- package/src/DeepThinking/DeepThinking.test.tsx +61 -0
- package/src/DeepThinking/DeepThinking.tsx +68 -0
- package/src/DeepThinking/index.ts +3 -0
- package/src/FileDetails/__snapshots__/FileDetails.test.tsx.snap +6 -9
- package/src/FileDetailsLabel/__snapshots__/FileDetailsLabel.test.tsx.snap +6 -9
- package/src/FilePreview/FilePreview.scss +22 -0
- package/src/FilePreview/FilePreview.test.tsx +112 -0
- package/src/FilePreview/FilePreview.tsx +58 -0
- package/src/FilePreview/index.ts +3 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +2 -1
- package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +6 -5
- package/src/Message/LinkMessage/LinkMessage.tsx +6 -2
- package/src/Message/ListMessage/ListItemMessage.tsx +5 -1
- package/src/Message/ListMessage/ListMessage.scss +17 -0
- package/src/Message/Message.scss +44 -0
- package/src/Message/Message.test.tsx +90 -0
- package/src/Message/Message.tsx +171 -46
- package/src/Message/SuperscriptMessage/SuperscriptMessage.scss +8 -0
- package/src/Message/SuperscriptMessage/SuperscriptMessage.tsx +13 -0
- package/src/Message/TextMessage/TextMessage.scss +46 -5
- package/src/Message/UserFeedback/UserFeedback.test.tsx +107 -0
- package/src/Message/UserFeedback/UserFeedback.tsx +41 -6
- package/src/MessageBar/MessageBar.tsx +23 -3
- package/src/MessageBox/JumpButton.test.tsx +4 -4
- package/src/MessageBox/JumpButton.tsx +20 -4
- package/src/MessageBox/MessageBox.test.tsx +2 -2
- package/src/MessageBox/MessageBox.tsx +22 -1
- package/src/SourcesCard/SourcesCard.scss +17 -0
- package/src/SourcesCard/SourcesCard.test.tsx +93 -0
- package/src/SourcesCard/SourcesCard.tsx +116 -80
- package/src/ToolResponse/ToolResponse.scss +36 -0
- package/src/ToolResponse/ToolResponse.test.tsx +78 -0
- package/src/ToolResponse/ToolResponse.tsx +95 -0
- package/src/ToolResponse/index.ts +3 -0
- package/src/index.ts +9 -0
- package/src/main.scss +3 -0
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Fragment,
|
|
3
|
+
useState,
|
|
4
|
+
useRef,
|
|
5
|
+
useEffect,
|
|
6
|
+
CSSProperties,
|
|
7
|
+
FunctionComponent,
|
|
8
|
+
MouseEvent as ReactMouseEvent,
|
|
9
|
+
KeyboardEvent as ReactKeyboardEvent,
|
|
10
|
+
Ref
|
|
11
|
+
} from 'react';
|
|
2
12
|
import Message from '@patternfly/chatbot/dist/dynamic/Message';
|
|
3
13
|
import userAvatar from './user_avatar.svg';
|
|
4
14
|
import {
|
|
@@ -64,6 +74,8 @@ export const UserMessageExample: FunctionComponent = () => {
|
|
|
64
74
|
return table;
|
|
65
75
|
case 'Image':
|
|
66
76
|
return image;
|
|
77
|
+
case 'Footnote':
|
|
78
|
+
return footnote;
|
|
67
79
|
default:
|
|
68
80
|
return '';
|
|
69
81
|
}
|
|
@@ -170,6 +182,18 @@ _Italic text, formatted with single underscores_
|
|
|
170
182
|
|
|
171
183
|
const image = ``;
|
|
172
184
|
|
|
185
|
+
const footnote = `This is some text that has a short footnote[^1] and this is text with a longer footnote.[^bignote]
|
|
186
|
+
|
|
187
|
+
[^1]: This is a short footnote. To return the highlight to the original message, click the arrow.
|
|
188
|
+
|
|
189
|
+
[^bignote]: This is a long footnote with multiple paragraphs and formatting.
|
|
190
|
+
|
|
191
|
+
To break long footnotes into paragraphs, indent the text.
|
|
192
|
+
|
|
193
|
+
Add as many paragraphs as you like. You can include *italic text*, **bold text**, and \`code\`.
|
|
194
|
+
|
|
195
|
+
> You can even include blockquotes in footnotes!`;
|
|
196
|
+
|
|
173
197
|
const error = {
|
|
174
198
|
title: 'Could not load chat',
|
|
175
199
|
children: 'Wait a few minutes and check your network settings. If the issue persists: ',
|
|
@@ -185,7 +209,7 @@ _Italic text, formatted with single underscores_
|
|
|
185
209
|
)
|
|
186
210
|
};
|
|
187
211
|
|
|
188
|
-
const onSelect = (_event:
|
|
212
|
+
const onSelect = (_event: ReactMouseEvent<Element> | undefined, value: string | number | undefined) => {
|
|
189
213
|
setVariant(value);
|
|
190
214
|
setSelected(value as string);
|
|
191
215
|
setIsOpen(false);
|
|
@@ -221,6 +245,78 @@ _Italic text, formatted with single underscores_
|
|
|
221
245
|
</MenuToggle>
|
|
222
246
|
);
|
|
223
247
|
|
|
248
|
+
const handleFootnoteNavigation = (event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>) => {
|
|
249
|
+
const target = event.target as HTMLElement;
|
|
250
|
+
|
|
251
|
+
// Depending on whether it is a click event or keyboard event, target may be a link or something like a span
|
|
252
|
+
// Look for the closest anchor element (could be a parent)
|
|
253
|
+
const anchorElement = target.closest('a');
|
|
254
|
+
const href = anchorElement?.getAttribute('href');
|
|
255
|
+
|
|
256
|
+
// Check if this is a footnote link - we only have internal links in this example, so this is all we need here
|
|
257
|
+
if (href && href.startsWith('#')) {
|
|
258
|
+
// Prevent default behavior to avoid page re-render on click in PatternFly docs framework
|
|
259
|
+
event.preventDefault();
|
|
260
|
+
|
|
261
|
+
let targetElement: HTMLElement | null = null;
|
|
262
|
+
const targetId = href.replace('#', '');
|
|
263
|
+
targetElement = document.querySelector(`[id="${targetId}"]`);
|
|
264
|
+
|
|
265
|
+
if (targetElement) {
|
|
266
|
+
let focusTarget = targetElement;
|
|
267
|
+
|
|
268
|
+
// If we found a footnote definition container, focus on the parent li element
|
|
269
|
+
if (targetElement.id?.startsWith('user-message-fn-')) {
|
|
270
|
+
// Find the parent li element that contains the footnote
|
|
271
|
+
const parentLi = targetElement.closest('li');
|
|
272
|
+
if (parentLi) {
|
|
273
|
+
focusTarget = parentLi as HTMLElement;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
focusTarget.focus();
|
|
278
|
+
|
|
279
|
+
let elementToHighlight = targetElement;
|
|
280
|
+
const searchStartElement = targetElement;
|
|
281
|
+
let elementToHighlightContainer: HTMLElement | null = null;
|
|
282
|
+
|
|
283
|
+
// For footnote references, look for an appropriate container
|
|
284
|
+
if (!targetElement.id?.startsWith('user-message-fn-')) {
|
|
285
|
+
let parent = searchStartElement.parentElement;
|
|
286
|
+
while (
|
|
287
|
+
parent &&
|
|
288
|
+
!(parent.tagName.toLowerCase() === 'span' && parent.classList.contains('pf-chatbot__message-text')) &&
|
|
289
|
+
parent !== document.body
|
|
290
|
+
) {
|
|
291
|
+
parent = parent.parentElement;
|
|
292
|
+
}
|
|
293
|
+
elementToHighlightContainer = parent;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Use the found container if available, otherwise fall back to the target element
|
|
297
|
+
elementToHighlight = elementToHighlightContainer || targetElement;
|
|
298
|
+
|
|
299
|
+
// Briefly highlight the target element for fun to show what you can do
|
|
300
|
+
const originalBackground = elementToHighlight.style.backgroundColor;
|
|
301
|
+
const originalTransition = elementToHighlight.style.transition;
|
|
302
|
+
|
|
303
|
+
elementToHighlight.style.transition = 'background-color 0.3s ease';
|
|
304
|
+
elementToHighlight.style.backgroundColor = 'var(--pf-t--global--icon--color--brand--hover)';
|
|
305
|
+
|
|
306
|
+
setTimeout(() => {
|
|
307
|
+
elementToHighlight.style.backgroundColor = originalBackground;
|
|
308
|
+
setTimeout(() => {
|
|
309
|
+
elementToHighlight.style.transition = originalTransition;
|
|
310
|
+
}, 300);
|
|
311
|
+
}, 1000);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
const onClick = (event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>) => {
|
|
317
|
+
handleFootnoteNavigation(event);
|
|
318
|
+
};
|
|
319
|
+
|
|
224
320
|
return (
|
|
225
321
|
<>
|
|
226
322
|
<Message
|
|
@@ -270,6 +366,7 @@ _Italic text, formatted with single underscores_
|
|
|
270
366
|
<SelectOption value="More complex list">More complex list</SelectOption>
|
|
271
367
|
<SelectOption value="Table">Table</SelectOption>
|
|
272
368
|
<SelectOption value="Image">Image</SelectOption>
|
|
369
|
+
<SelectOption value="Footnote">Footnote</SelectOption>
|
|
273
370
|
<SelectOption value="Error">Error</SelectOption>
|
|
274
371
|
</SelectList>
|
|
275
372
|
</Select>
|
|
@@ -287,6 +384,14 @@ _Italic text, formatted with single underscores_
|
|
|
287
384
|
// The purpose of this plugin is to provide unique link names for the code blocks
|
|
288
385
|
// Because they are in the same message, this requires a custom plugin to parse the syntax tree
|
|
289
386
|
additionalRehypePlugins={[rehypeCodeBlockToggle]}
|
|
387
|
+
linkProps={{ onClick }}
|
|
388
|
+
// clobberPrefix controls the label ids
|
|
389
|
+
reactMarkdownProps={{
|
|
390
|
+
remarkRehypeOptions: {
|
|
391
|
+
footnoteLabel: 'User message footnotes',
|
|
392
|
+
clobberPrefix: 'user-message-'
|
|
393
|
+
}
|
|
394
|
+
}}
|
|
290
395
|
/>
|
|
291
396
|
</>
|
|
292
397
|
);
|