@patternfly/chatbot 6.5.0-prerelease.8 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +9 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +9 -2
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +38 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +29 -2
- package/dist/cjs/CodeModal/CodeModal.d.ts +2 -0
- package/dist/cjs/CodeModal/CodeModal.js +53 -12
- package/dist/cjs/DeepThinking/DeepThinking.d.ts +13 -0
- package/dist/cjs/DeepThinking/DeepThinking.js +31 -3
- package/dist/cjs/DeepThinking/DeepThinking.test.js +80 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.d.ts +44 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.js +181 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.test.d.ts +1 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.test.js +192 -0
- package/dist/cjs/MarkdownContent/index.d.ts +2 -0
- package/dist/cjs/MarkdownContent/index.js +23 -0
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +3 -1
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +15 -4
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +131 -0
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +15 -1
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +5 -3
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.js +30 -0
- package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +5 -1
- package/dist/cjs/Message/LinkMessage/LinkMessage.js +4 -3
- package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +9 -1
- package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -1
- package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +7 -1
- package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +2 -1
- package/dist/cjs/Message/Message.d.ts +20 -3
- package/dist/cjs/Message/Message.js +7 -160
- package/dist/cjs/Message/Message.test.js +129 -2
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.js +22 -0
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.js +25 -0
- package/dist/cjs/Message/MessageAndActions/index.d.ts +1 -0
- package/dist/cjs/Message/MessageAndActions/index.js +17 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.js +22 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.js +25 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.js +22 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.js +25 -0
- package/dist/cjs/Message/MessageAttachments/index.d.ts +2 -0
- package/dist/cjs/Message/MessageAttachments/index.js +18 -0
- package/dist/cjs/Message/MessageInput.d.ts +1 -1
- package/dist/cjs/Message/MessageInput.js +3 -1
- package/dist/cjs/Message/MessageLoading.d.ts +13 -4
- package/dist/cjs/Message/MessageLoading.js +19 -5
- package/dist/cjs/Message/MessageLoading.test.d.ts +1 -0
- package/dist/cjs/Message/MessageLoading.test.js +25 -0
- package/dist/cjs/Message/QuickResponse/QuickResponse.js +3 -2
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.js +109 -0
- package/dist/cjs/Message/QuickResponse/index.d.ts +1 -0
- package/dist/cjs/Message/QuickResponse/index.js +17 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +1 -1
- package/dist/cjs/Message/QuickStarts/QuickStartTile.js +3 -2
- package/dist/cjs/Message/QuickStarts/index.d.ts +2 -0
- package/dist/cjs/Message/QuickStarts/index.js +18 -0
- package/dist/cjs/Message/TableMessage/TableMessage.d.ts +6 -1
- package/dist/cjs/Message/TableMessage/TableMessage.js +3 -2
- package/dist/cjs/Message/TextMessage/TextMessage.d.ts +8 -1
- package/dist/cjs/Message/TextMessage/TextMessage.js +3 -2
- package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +3 -1
- package/dist/cjs/Message/UserFeedback/UserFeedback.js +8 -6
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +1 -1
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +3 -2
- package/dist/cjs/Message/UserFeedback/index.d.ts +2 -0
- package/dist/cjs/Message/UserFeedback/index.js +18 -0
- package/dist/cjs/Message/index.d.ts +8 -0
- package/dist/cjs/Message/index.js +8 -0
- package/dist/cjs/MessageBar/MessageBar.d.ts +4 -0
- package/dist/cjs/MessageBar/MessageBar.js +20 -5
- package/dist/cjs/MessageBar/MessageBar.test.js +8 -0
- package/dist/cjs/Onboarding/Onboarding.d.ts +36 -0
- package/dist/cjs/Onboarding/Onboarding.js +37 -0
- package/dist/cjs/Onboarding/Onboarding.test.d.ts +1 -0
- package/dist/cjs/Onboarding/Onboarding.test.js +80 -0
- package/dist/cjs/Onboarding/index.d.ts +2 -0
- package/dist/cjs/Onboarding/index.js +23 -0
- package/dist/cjs/ResponseActions/ResponseActions.d.ts +7 -0
- package/dist/cjs/ResponseActions/ResponseActions.js +28 -7
- package/dist/cjs/ResponseActions/ResponseActions.test.js +67 -12
- package/dist/cjs/ResponseActions/ResponseActionsGroups.d.ts +13 -0
- package/dist/cjs/ResponseActions/ResponseActionsGroups.js +22 -0
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.js +25 -0
- package/dist/cjs/ResponseActions/index.d.ts +1 -0
- package/dist/cjs/ResponseActions/index.js +1 -0
- package/dist/cjs/ToolCall/ToolCall.d.ts +11 -0
- package/dist/cjs/ToolCall/ToolCall.js +24 -3
- package/dist/cjs/ToolCall/ToolCall.test.js +57 -0
- package/dist/cjs/ToolResponse/ToolResponse.d.ts +17 -0
- package/dist/cjs/ToolResponse/ToolResponse.js +49 -3
- package/dist/cjs/ToolResponse/ToolResponse.test.js +100 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +7 -1
- package/dist/css/main.css +268 -30
- package/dist/css/main.css.map +1 -1
- package/dist/dynamic/MarkdownContent/package.json +1 -0
- package/dist/dynamic/Onboarding/package.json +1 -0
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +9 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +10 -3
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +38 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +30 -3
- package/dist/esm/CodeModal/CodeModal.d.ts +2 -0
- package/dist/esm/CodeModal/CodeModal.js +54 -13
- package/dist/esm/DeepThinking/DeepThinking.d.ts +13 -0
- package/dist/esm/DeepThinking/DeepThinking.js +28 -3
- package/dist/esm/DeepThinking/DeepThinking.test.js +80 -0
- package/dist/esm/MarkdownContent/MarkdownContent.d.ts +44 -0
- package/dist/esm/MarkdownContent/MarkdownContent.js +174 -0
- package/dist/esm/MarkdownContent/MarkdownContent.test.d.ts +1 -0
- package/dist/esm/MarkdownContent/MarkdownContent.test.js +187 -0
- package/dist/esm/MarkdownContent/index.d.ts +2 -0
- package/dist/esm/MarkdownContent/index.js +2 -0
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +3 -1
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +15 -4
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +126 -0
- package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +15 -1
- package/dist/esm/Message/ErrorMessage/ErrorMessage.js +3 -3
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.js +25 -0
- package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +5 -1
- package/dist/esm/Message/LinkMessage/LinkMessage.js +4 -3
- package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +9 -1
- package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -1
- package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +7 -1
- package/dist/esm/Message/ListMessage/UnorderedListMessage.js +2 -1
- package/dist/esm/Message/Message.d.ts +20 -3
- package/dist/esm/Message/Message.js +8 -161
- package/dist/esm/Message/Message.test.js +129 -2
- package/dist/esm/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
- package/dist/esm/Message/MessageAndActions/MessageAndActions.js +18 -0
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.js +20 -0
- package/dist/esm/Message/MessageAndActions/index.d.ts +1 -0
- package/dist/esm/Message/MessageAndActions/index.js +1 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.js +18 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.js +20 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.js +18 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.js +20 -0
- package/dist/esm/Message/MessageAttachments/index.d.ts +2 -0
- package/dist/esm/Message/MessageAttachments/index.js +2 -0
- package/dist/esm/Message/MessageInput.d.ts +1 -1
- package/dist/esm/Message/MessageInput.js +1 -1
- package/dist/esm/Message/MessageLoading.d.ts +13 -4
- package/dist/esm/Message/MessageLoading.js +16 -4
- package/dist/esm/Message/MessageLoading.test.d.ts +1 -0
- package/dist/esm/Message/MessageLoading.test.js +20 -0
- package/dist/esm/Message/QuickResponse/QuickResponse.js +3 -2
- package/dist/esm/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
- package/dist/esm/Message/QuickResponse/QuickResponse.test.js +104 -0
- package/dist/esm/Message/QuickResponse/index.d.ts +1 -0
- package/dist/esm/Message/QuickResponse/index.js +1 -0
- package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +1 -1
- package/dist/esm/Message/QuickStarts/QuickStartTile.js +1 -1
- package/dist/esm/Message/QuickStarts/index.d.ts +2 -0
- package/dist/esm/Message/QuickStarts/index.js +2 -0
- package/dist/esm/Message/TableMessage/TableMessage.d.ts +6 -1
- package/dist/esm/Message/TableMessage/TableMessage.js +3 -2
- package/dist/esm/Message/TextMessage/TextMessage.d.ts +8 -1
- package/dist/esm/Message/TextMessage/TextMessage.js +3 -2
- package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +3 -1
- package/dist/esm/Message/UserFeedback/UserFeedback.js +7 -7
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +1 -1
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +1 -2
- package/dist/esm/Message/UserFeedback/index.d.ts +2 -0
- package/dist/esm/Message/UserFeedback/index.js +2 -0
- package/dist/esm/Message/index.d.ts +8 -0
- package/dist/esm/Message/index.js +8 -0
- package/dist/esm/MessageBar/MessageBar.d.ts +4 -0
- package/dist/esm/MessageBar/MessageBar.js +20 -5
- package/dist/esm/MessageBar/MessageBar.test.js +8 -0
- package/dist/esm/Onboarding/Onboarding.d.ts +36 -0
- package/dist/esm/Onboarding/Onboarding.js +30 -0
- package/dist/esm/Onboarding/Onboarding.test.d.ts +1 -0
- package/dist/esm/Onboarding/Onboarding.test.js +75 -0
- package/dist/esm/Onboarding/index.d.ts +2 -0
- package/dist/esm/Onboarding/index.js +2 -0
- package/dist/esm/ResponseActions/ResponseActions.d.ts +7 -0
- package/dist/esm/ResponseActions/ResponseActions.js +28 -7
- package/dist/esm/ResponseActions/ResponseActions.test.js +67 -12
- package/dist/esm/ResponseActions/ResponseActionsGroups.d.ts +13 -0
- package/dist/esm/ResponseActions/ResponseActionsGroups.js +18 -0
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.js +20 -0
- package/dist/esm/ResponseActions/index.d.ts +1 -0
- package/dist/esm/ResponseActions/index.js +1 -0
- package/dist/esm/ToolCall/ToolCall.d.ts +11 -0
- package/dist/esm/ToolCall/ToolCall.js +21 -3
- package/dist/esm/ToolCall/ToolCall.test.js +57 -0
- package/dist/esm/ToolResponse/ToolResponse.d.ts +17 -0
- package/dist/esm/ToolResponse/ToolResponse.js +46 -3
- package/dist/esm/ToolResponse/ToolResponse.test.js +100 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -3
- package/patternfly-docs/content/extensions/chatbot/chatbot.md +57 -0
- package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +12 -12
- package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +1 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomStructure.tsx +102 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithDeepThinking.tsx +25 -11
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +14 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownDeepThinking.tsx +26 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolCall.tsx +29 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolResponse.tsx +200 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMultipleActionGroups.tsx +61 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithPersistedActions.tsx +22 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +11 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolCall.tsx +14 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolResponse.tsx +222 -105
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +123 -14
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +1 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSearchActions.tsx +198 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarIndicatorThinking.tsx +15 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactOnboarding.tsx +141 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/Onboarding.tsx +151 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/RH-Hat-Image.svg +9 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +67 -29
- package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +18 -18
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +33 -19
- package/patternfly-docs/patternfly-docs.config.js +1 -1
- package/patternfly-docs/patternfly-docs.source.js +1 -1
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +43 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +95 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +51 -15
- package/src/ChatbotHeader/ChatbotHeader.scss +4 -0
- package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +56 -14
- package/src/ChatbotModal/ChatbotModal.scss +3 -0
- package/src/CodeModal/CodeModal.tsx +71 -26
- package/src/DeepThinking/DeepThinking.scss +1 -1
- package/src/DeepThinking/DeepThinking.test.tsx +109 -0
- package/src/DeepThinking/DeepThinking.tsx +54 -5
- package/src/MarkdownContent/MarkdownContent.test.tsx +207 -0
- package/src/MarkdownContent/MarkdownContent.tsx +269 -0
- package/src/MarkdownContent/index.ts +2 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +13 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.test.tsx +171 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +17 -4
- package/src/Message/ErrorMessage/ErrorMessage.test.tsx +38 -0
- package/src/Message/ErrorMessage/ErrorMessage.tsx +17 -2
- package/src/Message/LinkMessage/LinkMessage.scss +5 -0
- package/src/Message/LinkMessage/LinkMessage.tsx +24 -2
- package/src/Message/ListMessage/ListMessage.scss +8 -0
- package/src/Message/ListMessage/OrderedListMessage.tsx +16 -2
- package/src/Message/ListMessage/UnorderedListMessage.tsx +12 -2
- package/src/Message/Message.scss +11 -7
- package/src/Message/Message.test.tsx +202 -2
- package/src/Message/Message.tsx +129 -241
- package/src/Message/MessageAndActions/MessageAndActions.test.tsx +23 -0
- package/src/Message/MessageAndActions/MessageAndActions.tsx +22 -0
- package/src/Message/MessageAndActions/index.ts +1 -0
- package/src/Message/MessageAttachments/MessageAttachmentItem.test.tsx +23 -0
- package/src/Message/MessageAttachments/MessageAttachmentItem.tsx +25 -0
- package/src/Message/MessageAttachments/MessageAttachmentsContainer.test.tsx +23 -0
- package/src/Message/MessageAttachments/MessageAttachmentsContainer.tsx +25 -0
- package/src/Message/MessageAttachments/index.ts +2 -0
- package/src/Message/MessageInput.tsx +1 -1
- package/src/Message/MessageLoading.test.tsx +23 -0
- package/src/Message/MessageLoading.tsx +17 -2
- package/src/Message/QuickResponse/QuickResponse.scss +3 -1
- package/src/Message/QuickResponse/QuickResponse.test.tsx +131 -0
- package/src/Message/QuickResponse/QuickResponse.tsx +3 -2
- package/src/Message/QuickResponse/index.ts +1 -0
- package/src/Message/QuickStarts/QuickStartTile.tsx +1 -1
- package/src/Message/QuickStarts/index.ts +2 -0
- package/src/Message/TableMessage/TableMessage.scss +13 -1
- package/src/Message/TableMessage/TableMessage.tsx +18 -2
- package/src/Message/TextMessage/TextMessage.scss +12 -0
- package/src/Message/TextMessage/TextMessage.tsx +29 -2
- package/src/Message/UserFeedback/UserFeedback.scss +28 -1
- package/src/Message/UserFeedback/UserFeedback.tsx +23 -13
- package/src/Message/UserFeedback/UserFeedbackComplete.tsx +1 -4
- package/src/Message/UserFeedback/index.ts +2 -0
- package/src/Message/index.ts +8 -0
- package/src/MessageBar/AttachButton.scss +0 -1
- package/src/MessageBar/MessageBar.scss +48 -6
- package/src/MessageBar/MessageBar.test.tsx +12 -0
- package/src/MessageBar/MessageBar.tsx +38 -4
- package/src/MessageBar/MicrophoneButton.scss +0 -1
- package/src/MessageBar/SendButton.scss +0 -1
- package/src/MessageBar/StopButton.scss +0 -1
- package/src/Onboarding/Onboarding.scss +101 -0
- package/src/Onboarding/Onboarding.test.tsx +148 -0
- package/src/Onboarding/Onboarding.tsx +126 -0
- package/src/Onboarding/index.ts +3 -0
- package/src/ResponseActions/ResponseActions.scss +12 -1
- package/src/ResponseActions/ResponseActions.test.tsx +111 -12
- package/src/ResponseActions/ResponseActions.tsx +44 -10
- package/src/ResponseActions/ResponseActionsGroups.test.tsx +23 -0
- package/src/ResponseActions/ResponseActionsGroups.tsx +28 -0
- package/src/ResponseActions/index.ts +1 -0
- package/src/ToolCall/ToolCall.scss +1 -1
- package/src/ToolCall/ToolCall.test.tsx +91 -0
- package/src/ToolCall/ToolCall.tsx +49 -4
- package/src/ToolResponse/ToolResponse.scss +13 -3
- package/src/ToolResponse/ToolResponse.test.tsx +119 -0
- package/src/ToolResponse/ToolResponse.tsx +82 -7
- package/src/index.ts +6 -0
- package/src/main.scss +2 -0
- package/tsconfig.json +1 -1
- package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +0 -44
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
require("@testing-library/jest-dom");
|
|
8
|
+
const react_1 = require("@testing-library/react");
|
|
9
|
+
const MessageAndActions_1 = __importDefault(require("./MessageAndActions"));
|
|
10
|
+
test('Renders with children', () => {
|
|
11
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAndActions_1.default, { children: "Test content" }));
|
|
12
|
+
expect(react_1.screen.getByText('Test content')).toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
test('Renders with pf-chatbot__message-and-actions class by default', () => {
|
|
15
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAndActions_1.default, { children: "Test content" }));
|
|
16
|
+
expect(react_1.screen.getByText('Test content')).toHaveClass('pf-chatbot__message-and-actions', { exact: true });
|
|
17
|
+
});
|
|
18
|
+
test('Renders with custom className', () => {
|
|
19
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAndActions_1.default, { className: "custom-class", children: "Test content" }));
|
|
20
|
+
expect(react_1.screen.getByText('Test content')).toHaveClass('custom-class');
|
|
21
|
+
});
|
|
22
|
+
test('Spreads additional props', () => {
|
|
23
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAndActions_1.default, { id: "test-id", children: "Test content" }));
|
|
24
|
+
expect(react_1.screen.getByText('Test content')).toHaveAttribute('id', 'test-id');
|
|
25
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MessageAndActions';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./MessageAndActions"), exports);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FunctionComponent, HTMLProps, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The container for a single message attachment item, typically the FileDetailsLabel component. You must wrap any attachment components in this container.
|
|
4
|
+
* Use this component within MessageAttachmentsContainer when passing children to Message to customize its structure.
|
|
5
|
+
*/
|
|
6
|
+
export interface MessageAttachmentItemProps extends HTMLProps<HTMLDivElement> {
|
|
7
|
+
/** Content to render inside a single attachment container */
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
/** Additional classes applied to the attachment container. */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const MessageAttachmentItem: FunctionComponent<MessageAttachmentItemProps>;
|
|
13
|
+
export default MessageAttachmentItem;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.MessageAttachmentItem = void 0;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_styles_1 = require("@patternfly/react-styles");
|
|
17
|
+
const MessageAttachmentItem = (_a) => {
|
|
18
|
+
var { children, className } = _a, props = __rest(_a, ["children", "className"]);
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, react_styles_1.css)('pf-chatbot__message-attachment', className) }, props, { children: children })));
|
|
20
|
+
};
|
|
21
|
+
exports.MessageAttachmentItem = MessageAttachmentItem;
|
|
22
|
+
exports.default = exports.MessageAttachmentItem;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
require("@testing-library/jest-dom");
|
|
8
|
+
const react_1 = require("@testing-library/react");
|
|
9
|
+
const MessageAttachmentItem_1 = __importDefault(require("./MessageAttachmentItem"));
|
|
10
|
+
test('Renders with children', () => {
|
|
11
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentItem_1.default, { children: "Test content" }));
|
|
12
|
+
expect(react_1.screen.getByText('Test content')).toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
test('Renders with pf-chatbot__message-attachment class by default', () => {
|
|
15
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentItem_1.default, { children: "Test content" }));
|
|
16
|
+
expect(react_1.screen.getByText('Test content')).toHaveClass('pf-chatbot__message-attachment', { exact: true });
|
|
17
|
+
});
|
|
18
|
+
test('Renders with custom className', () => {
|
|
19
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentItem_1.default, { className: "custom-class", children: "Test content" }));
|
|
20
|
+
expect(react_1.screen.getByText('Test content')).toHaveClass('custom-class');
|
|
21
|
+
});
|
|
22
|
+
test('Spreads additional props', () => {
|
|
23
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentItem_1.default, { id: "test-id", children: "Test content" }));
|
|
24
|
+
expect(react_1.screen.getByText('Test content')).toHaveAttribute('id', 'test-id');
|
|
25
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FunctionComponent, HTMLProps, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The container to wrap MessageAttachment components. You must wrap any MessageAttachment components in this container.
|
|
4
|
+
* Use this component when passing children to Message to customize its structure.
|
|
5
|
+
*/
|
|
6
|
+
export interface MessageAttachmentsContainerProps extends HTMLProps<HTMLDivElement> {
|
|
7
|
+
/** Content to render inside the attachments container */
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
/** Additional classes applied to the attachments container. */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const MessageAttachmentsContainer: FunctionComponent<MessageAttachmentsContainerProps>;
|
|
13
|
+
export default MessageAttachmentsContainer;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.MessageAttachmentsContainer = void 0;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_styles_1 = require("@patternfly/react-styles");
|
|
17
|
+
const MessageAttachmentsContainer = (_a) => {
|
|
18
|
+
var { children, className } = _a, props = __rest(_a, ["children", "className"]);
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, react_styles_1.css)('pf-chatbot__message-attachments-container', className) }, props, { children: children })));
|
|
20
|
+
};
|
|
21
|
+
exports.MessageAttachmentsContainer = MessageAttachmentsContainer;
|
|
22
|
+
exports.default = exports.MessageAttachmentsContainer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
require("@testing-library/jest-dom");
|
|
8
|
+
const react_1 = require("@testing-library/react");
|
|
9
|
+
const MessageAttachmentsContainer_1 = __importDefault(require("./MessageAttachmentsContainer"));
|
|
10
|
+
test('Renders with children', () => {
|
|
11
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentsContainer_1.default, { children: "Test content" }));
|
|
12
|
+
expect(react_1.screen.getByText('Test content')).toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
test('Renders with pf-chatbot__message-attachments-container class by default', () => {
|
|
15
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentsContainer_1.default, { children: "Test content" }));
|
|
16
|
+
expect(react_1.screen.getByText('Test content')).toHaveClass('pf-chatbot__message-attachments-container', { exact: true });
|
|
17
|
+
});
|
|
18
|
+
test('Renders with custom className', () => {
|
|
19
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentsContainer_1.default, { className: "custom-class", children: "Test content" }));
|
|
20
|
+
expect(react_1.screen.getByText('Test content')).toHaveClass('custom-class');
|
|
21
|
+
});
|
|
22
|
+
test('Spreads additional props', () => {
|
|
23
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageAttachmentsContainer_1.default, { id: "test-id", children: "Test content" }));
|
|
24
|
+
expect(react_1.screen.getByText('Test content')).toHaveAttribute('id', 'test-id');
|
|
25
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./MessageAttachmentItem"), exports);
|
|
18
|
+
__exportStar(require("./MessageAttachmentsContainer"), exports);
|
|
@@ -16,5 +16,5 @@ export interface MessageInputProps extends FormProps {
|
|
|
16
16
|
/** Message text */
|
|
17
17
|
content?: string;
|
|
18
18
|
}
|
|
19
|
-
declare const MessageInput: FunctionComponent<MessageInputProps>;
|
|
19
|
+
export declare const MessageInput: FunctionComponent<MessageInputProps>;
|
|
20
20
|
export default MessageInput;
|
|
@@ -11,6 +11,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.MessageInput = void 0;
|
|
14
15
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
15
16
|
const react_1 = require("react");
|
|
16
17
|
const react_core_1 = require("@patternfly/react-core");
|
|
@@ -22,4 +23,5 @@ const MessageInput = (_a) => {
|
|
|
22
23
|
};
|
|
23
24
|
return ((0, jsx_runtime_1.jsxs)(react_core_1.Form, Object.assign({}, props, { children: [(0, jsx_runtime_1.jsx)(react_core_1.TextArea, { placeholder: editPlaceholder, value: messageText, onChange: onChange, "aria-label": editPlaceholder, autoResize: true, ref: inputRef }), (0, jsx_runtime_1.jsxs)(react_core_1.ActionGroup, { className: "pf-chatbot__message-edit-buttons", children: [(0, jsx_runtime_1.jsx)(react_core_1.Button, { variant: "primary", onClick: (event) => onEditUpdate && onEditUpdate(event, messageText), children: updateWord }), (0, jsx_runtime_1.jsx)(react_core_1.Button, { variant: "secondary", onClick: onEditCancel, children: cancelWord })] })] })));
|
|
24
25
|
};
|
|
25
|
-
exports.
|
|
26
|
+
exports.MessageInput = MessageInput;
|
|
27
|
+
exports.default = exports.MessageInput;
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { FunctionComponent } from 'react';
|
|
2
|
+
import type { HTMLProps } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* MessageLoading displays a loading animation for messages.
|
|
5
|
+
* Use this component when passing children to Message to show a loading state.
|
|
6
|
+
*/
|
|
7
|
+
export interface MessageLoadingProps extends HTMLProps<HTMLDivElement> {
|
|
8
|
+
/** Text announced to screen readers during loading. */
|
|
9
|
+
loadingWord?: string;
|
|
10
|
+
/** Flag indicating whether primary styling is applied */
|
|
11
|
+
isPrimary?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const MessageLoading: FunctionComponent<MessageLoadingProps>;
|
|
5
14
|
export default MessageLoading;
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
2
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.MessageLoading = void 0;
|
|
3
15
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
16
|
+
const react_styles_1 = require("@patternfly/react-styles");
|
|
17
|
+
const MessageLoading = (_a) => {
|
|
18
|
+
var { loadingWord, isPrimary } = _a, props = __rest(_a, ["loadingWord", "isPrimary"]);
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, react_styles_1.css)('pf-chatbot__message-loading', isPrimary && 'pf-m-primary') }, props, { children: (0, jsx_runtime_1.jsx)("span", { className: "pf-chatbot__message-loading-dots", children: (0, jsx_runtime_1.jsx)("span", { className: "pf-v6-screen-reader", children: loadingWord }) }) })));
|
|
20
|
+
};
|
|
21
|
+
exports.MessageLoading = MessageLoading;
|
|
22
|
+
exports.default = exports.MessageLoading;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
require("@testing-library/jest-dom");
|
|
8
|
+
const react_1 = require("@testing-library/react");
|
|
9
|
+
const MessageLoading_1 = __importDefault(require("./MessageLoading"));
|
|
10
|
+
test('Renders with pf-chatbot__message-loading class by default', () => {
|
|
11
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageLoading_1.default, { "data-testid": "test-id" }));
|
|
12
|
+
expect(react_1.screen.getByTestId('test-id')).toHaveClass('pf-chatbot__message-loading', { exact: true });
|
|
13
|
+
});
|
|
14
|
+
test('Renders with pf-m-primary class when isPrimary is true', () => {
|
|
15
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageLoading_1.default, { "data-testid": "test-id", isPrimary: true }));
|
|
16
|
+
expect(react_1.screen.getByTestId('test-id')).toHaveClass('pf-chatbot__message-loading pf-m-primary');
|
|
17
|
+
});
|
|
18
|
+
test('Renders loading word when loadingWord is passed', () => {
|
|
19
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageLoading_1.default, { loadingWord: "Loading message" }));
|
|
20
|
+
expect(react_1.screen.getByText('Loading message')).toBeInTheDocument();
|
|
21
|
+
});
|
|
22
|
+
test('Spreads additional props', () => {
|
|
23
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(MessageLoading_1.default, { "data-testid": "test-id", id: "custom-id" }));
|
|
24
|
+
expect(react_1.screen.getByTestId('test-id')).toHaveAttribute('id', 'custom-id');
|
|
25
|
+
});
|
|
@@ -16,6 +16,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
16
16
|
const react_1 = require("react");
|
|
17
17
|
const react_core_1 = require("@patternfly/react-core");
|
|
18
18
|
const react_icons_1 = require("@patternfly/react-icons");
|
|
19
|
+
const react_styles_1 = require("@patternfly/react-styles");
|
|
19
20
|
const QuickResponse = ({ quickResponses, quickResponseContainerProps = { numLabels: 5 }, onSelect, isCompact }) => {
|
|
20
21
|
const [selectedQuickResponse, setSelectedQuickResponse] = (0, react_1.useState)();
|
|
21
22
|
const handleQuickResponseClick = (id, onClick) => {
|
|
@@ -23,9 +24,9 @@ const QuickResponse = ({ quickResponses, quickResponseContainerProps = { numLabe
|
|
|
23
24
|
onClick && onClick();
|
|
24
25
|
onSelect && onSelect(id);
|
|
25
26
|
};
|
|
26
|
-
return ((0, jsx_runtime_1.jsx)(react_core_1.LabelGroup, Object.assign({ className:
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.LabelGroup, Object.assign({ className: (0, react_styles_1.css)('pf-chatbot__message-quick-response', quickResponseContainerProps === null || quickResponseContainerProps === void 0 ? void 0 : quickResponseContainerProps.className) }, quickResponseContainerProps, { children: quickResponses.map((_a) => {
|
|
27
28
|
var { id, onClick, content, className } = _a, props = __rest(_a, ["id", "onClick", "content", "className"]);
|
|
28
|
-
return ((0, jsx_runtime_1.jsx)(react_core_1.Label, Object.assign({ variant: id === selectedQuickResponse ? undefined : 'outline', icon: id === selectedQuickResponse ? (0, jsx_runtime_1.jsx)(react_icons_1.CheckIcon, {}) : undefined, color: "blue", onClick: () => handleQuickResponseClick(id, onClick), className:
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.Label, Object.assign({ variant: id === selectedQuickResponse ? undefined : 'outline', icon: id === selectedQuickResponse ? (0, jsx_runtime_1.jsx)(react_icons_1.CheckIcon, {}) : undefined, color: "blue", onClick: () => handleQuickResponseClick(id, onClick), className: (0, react_styles_1.css)(id === selectedQuickResponse && 'pf-chatbot__message-quick-response--selected', className), isCompact: isCompact }, props, { children: content }), id));
|
|
29
30
|
}) })));
|
|
30
31
|
};
|
|
31
32
|
exports.QuickResponse = QuickResponse;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const react_1 = require("@testing-library/react");
|
|
17
|
+
const user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
18
|
+
require("@testing-library/jest-dom");
|
|
19
|
+
const QuickResponse_1 = __importDefault(require("./QuickResponse"));
|
|
20
|
+
test('Renders with quick responses', () => {
|
|
21
|
+
const quickResponses = [
|
|
22
|
+
{ id: '1', content: 'Response 1' },
|
|
23
|
+
{ id: '2', content: 'Response 2' },
|
|
24
|
+
{ id: '3', content: 'Response 3' }
|
|
25
|
+
];
|
|
26
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses }));
|
|
27
|
+
expect(react_1.screen.getByText('Response 1')).toBeVisible();
|
|
28
|
+
expect(react_1.screen.getByText('Response 2')).toBeVisible();
|
|
29
|
+
expect(react_1.screen.getByText('Response 3')).toBeVisible();
|
|
30
|
+
});
|
|
31
|
+
test('Renders with compact styling', () => {
|
|
32
|
+
const quickResponses = [{ id: '1', content: 'Compact response' }];
|
|
33
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses, isCompact: true }));
|
|
34
|
+
expect(react_1.screen.getByText('Compact response').closest('.pf-v6-c-label')).toHaveClass('pf-m-compact');
|
|
35
|
+
});
|
|
36
|
+
test('Renders with custom className on response', () => {
|
|
37
|
+
const quickResponses = [{ id: '1', content: 'Custom class response', className: 'custom-response-class' }];
|
|
38
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses }));
|
|
39
|
+
expect(react_1.screen.getByText('Custom class response').closest('.pf-v6-c-label')).toHaveClass('custom-response-class');
|
|
40
|
+
});
|
|
41
|
+
test('Renders with custom container className', () => {
|
|
42
|
+
const quickResponses = [
|
|
43
|
+
{ id: '1', content: 'Response 1' },
|
|
44
|
+
{ id: '2', content: 'Response 2' }
|
|
45
|
+
];
|
|
46
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses, quickResponseContainerProps: { className: 'custom-container-class' } }));
|
|
47
|
+
expect(react_1.screen.getByText('Response 1').closest('.pf-v6-c-label-group')).toHaveClass('custom-container-class');
|
|
48
|
+
});
|
|
49
|
+
test('Spreads additional custom container props', () => {
|
|
50
|
+
const quickResponses = [
|
|
51
|
+
{ id: '1', content: 'Response 1' },
|
|
52
|
+
{ id: '2', content: 'Response 2' }
|
|
53
|
+
];
|
|
54
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses, quickResponseContainerProps: { id: 'custom-container-id' } }));
|
|
55
|
+
expect(react_1.screen.getByText('Response 1').closest('.pf-v6-c-label-group__list')).toHaveAttribute('id', 'custom-container-id');
|
|
56
|
+
});
|
|
57
|
+
test('Renders with pf-chatbot__message-quick-response--selected class after click', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
const user = user_event_1.default.setup();
|
|
59
|
+
const quickResponses = [
|
|
60
|
+
{ id: '1', content: 'Response 1' },
|
|
61
|
+
{ id: '2', content: 'Response 2' }
|
|
62
|
+
];
|
|
63
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses }));
|
|
64
|
+
yield user.click(react_1.screen.getByText('Response 1'));
|
|
65
|
+
expect(react_1.screen.getByText('Response 1').closest('.pf-v6-c-label')).toHaveClass('pf-chatbot__message-quick-response--selected');
|
|
66
|
+
}));
|
|
67
|
+
test('Does not calls onClick handler when not passed', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
|
+
const user = user_event_1.default.setup();
|
|
69
|
+
const handleClick = jest.fn();
|
|
70
|
+
const quickResponses = [{ id: '1', content: 'Clickable response' }];
|
|
71
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses }));
|
|
72
|
+
yield user.click(react_1.screen.getByText('Clickable response'));
|
|
73
|
+
expect(handleClick).not.toHaveBeenCalled();
|
|
74
|
+
}));
|
|
75
|
+
test('Calls onClick handler when passed', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
76
|
+
const user = user_event_1.default.setup();
|
|
77
|
+
const handleClick = jest.fn();
|
|
78
|
+
const quickResponses = [{ id: '1', content: 'Clickable response', onClick: handleClick }];
|
|
79
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses }));
|
|
80
|
+
yield user.click(react_1.screen.getByText('Clickable response'));
|
|
81
|
+
expect(handleClick).toHaveBeenCalled();
|
|
82
|
+
}));
|
|
83
|
+
test('Does not call onSelect when not passed', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
const user = user_event_1.default.setup();
|
|
85
|
+
const handleSelect = jest.fn();
|
|
86
|
+
const quickResponses = [
|
|
87
|
+
{ id: '1', content: 'Response 1' },
|
|
88
|
+
{ id: '2', content: 'Response 2' }
|
|
89
|
+
];
|
|
90
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses }));
|
|
91
|
+
yield user.click(react_1.screen.getByText('Response 2'));
|
|
92
|
+
expect(handleSelect).not.toHaveBeenCalled();
|
|
93
|
+
}));
|
|
94
|
+
test('Calls onSelect when passed', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
+
const user = user_event_1.default.setup();
|
|
96
|
+
const handleSelect = jest.fn();
|
|
97
|
+
const quickResponses = [
|
|
98
|
+
{ id: '1', content: 'Response 1' },
|
|
99
|
+
{ id: '2', content: 'Response 2' }
|
|
100
|
+
];
|
|
101
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses, onSelect: handleSelect }));
|
|
102
|
+
yield user.click(react_1.screen.getByText('Response 2'));
|
|
103
|
+
expect(handleSelect).toHaveBeenCalledWith('2');
|
|
104
|
+
}));
|
|
105
|
+
test('Spreads additional response props', () => {
|
|
106
|
+
const quickResponses = [{ id: '1', content: 'Response with props', isCompact: true, 'aria-label': 'Test label' }];
|
|
107
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(QuickResponse_1.default, { quickResponses: quickResponses }));
|
|
108
|
+
expect(react_1.screen.getByText('Response with props').closest('.pf-v6-c-label')).toHaveAttribute('aria-label', 'Test label');
|
|
109
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './QuickResponse';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./QuickResponse"), exports);
|
|
@@ -25,5 +25,5 @@ export interface QuickStartTileProps {
|
|
|
25
25
|
/** Sets the tile to compact styling */
|
|
26
26
|
isCompact?: boolean;
|
|
27
27
|
}
|
|
28
|
-
declare const QuickStartTile: FC<QuickStartTileProps>;
|
|
28
|
+
export declare const QuickStartTile: FC<QuickStartTileProps>;
|
|
29
29
|
export default QuickStartTile;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.camelize = void 0;
|
|
6
|
+
exports.QuickStartTile = exports.camelize = void 0;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const rocket_icon_1 = __importDefault(require("@patternfly/react-icons/dist/js/icons/rocket-icon"));
|
|
9
9
|
const outlined_bookmark_icon_1 = __importDefault(require("@patternfly/react-icons/dist/js/icons/outlined-bookmark-icon"));
|
|
@@ -43,4 +43,5 @@ const QuickStartTile = ({ className, quickStart, onClick, onSelectQuickStart, mi
|
|
|
43
43
|
actions: { actions: additionalAction }
|
|
44
44
|
}), { children: quickStartIcon })), (0, jsx_runtime_1.jsx)(react_core_1.CardTitle, { children: (0, jsx_runtime_1.jsx)(QuickStartTileHeader_1.default, { name: displayName, onSelect: onSelect, quickStartId: id }) }), (0, jsx_runtime_1.jsx)(react_core_1.CardBody, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Stack, { hasGutter: true, children: [(0, jsx_runtime_1.jsxs)(react_core_1.Flex, { spaceItems: { default: 'spaceItemsSm' }, children: [type && (0, jsx_runtime_1.jsx)(react_core_1.Label, { color: type.color, children: type.text }), durationMinutes && ((0, jsx_runtime_1.jsx)(react_core_1.Label, { variant: "outline", "data-test": "duration", icon: (0, jsx_runtime_1.jsx)(outlined_clock_icon_1.default, {}), children: (0, react_core_1.pluralize)(durationMinutes, minuteWord, minuteWordPlural) }))] }), (0, jsx_runtime_1.jsx)(QuickStartTileDescription_1.default, { description: description, prerequisites: prerequisites, prerequisiteWord: prerequisiteWord, prerequisiteWordPlural: prerequisiteWordPlural, quickStartButtonAriaLabel: quickStartButtonAriaLabel })] }) }), (0, jsx_runtime_1.jsx)(react_core_1.CardFooter, { children: (0, jsx_runtime_1.jsx)(react_core_1.Button, { variant: "link", isInline: true, onClick: onSelect, children: (0, jsx_runtime_1.jsx)("span", { className: "pf-v6-c-button__text", children: "Start" }) }) })] }));
|
|
45
45
|
};
|
|
46
|
-
exports.
|
|
46
|
+
exports.QuickStartTile = QuickStartTile;
|
|
47
|
+
exports.default = exports.QuickStartTile;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./QuickStartTile"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
@@ -16,7 +16,12 @@ export interface TableNode {
|
|
|
16
16
|
type: string;
|
|
17
17
|
}
|
|
18
18
|
export interface TableMessageProps {
|
|
19
|
+
/** Content of the table */
|
|
20
|
+
children?: React.ReactNode;
|
|
21
|
+
/** Flag indicating whether primary styles should be applied. */
|
|
19
22
|
isPrimary?: boolean;
|
|
23
|
+
/** Flag indicating that the content should retain message styles when using Markdown. */
|
|
24
|
+
shouldRetainStyles?: boolean;
|
|
20
25
|
}
|
|
21
|
-
declare const TableMessage: ({ children, isPrimary, ...props }: Omit<TableProps, "ref"> & ExtraProps & TableMessageProps) => import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
declare const TableMessage: ({ children, isPrimary, shouldRetainStyles, ...props }: Omit<TableProps, "ref"> & ExtraProps & TableMessageProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
27
|
export default TableMessage;
|
|
@@ -17,9 +17,10 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
17
17
|
// ============================================================================
|
|
18
18
|
const react_1 = require("react");
|
|
19
19
|
const react_table_1 = require("@patternfly/react-table");
|
|
20
|
+
const react_styles_1 = require("@patternfly/react-styles");
|
|
20
21
|
const TableMessage = (_a) => {
|
|
21
22
|
var _b;
|
|
22
|
-
var { children, isPrimary } = _a, props = __rest(_a, ["children", "isPrimary"]);
|
|
23
|
+
var { children, isPrimary, shouldRetainStyles } = _a, props = __rest(_a, ["children", "isPrimary", "shouldRetainStyles"]);
|
|
23
24
|
const { className } = props, rest = __rest(props, ["className"]);
|
|
24
25
|
// This allows us to parse the nested data we get back from the 3rd party Markdown parser
|
|
25
26
|
// Open to feedback here if there is a better way to do this
|
|
@@ -60,6 +61,6 @@ const TableMessage = (_a) => {
|
|
|
60
61
|
}
|
|
61
62
|
return (
|
|
62
63
|
// gridBreakPoint is so we show mobile-styled-PF table
|
|
63
|
-
(0, jsx_runtime_1.jsx)(react_table_1.Table, Object.assign({ "aria-label": props['aria-label'], gridBreakPoint: "grid", className:
|
|
64
|
+
(0, jsx_runtime_1.jsx)(react_table_1.Table, Object.assign({ "aria-label": props['aria-label'], gridBreakPoint: "grid", className: (0, react_styles_1.css)('pf-chatbot__message-table', isPrimary && 'pf-m-primary', shouldRetainStyles && 'pf-m-markdown', className) }, rest, { children: modifyChildren(children) })));
|
|
64
65
|
};
|
|
65
66
|
exports.default = TableMessage;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { ExtraProps } from 'react-markdown';
|
|
2
2
|
import { ContentProps } from '@patternfly/react-core';
|
|
3
3
|
export interface TextMessageProps {
|
|
4
|
+
/** The text message content */
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
/** Flag indicating whether primary styling is applied. */
|
|
4
7
|
isPrimary?: boolean;
|
|
8
|
+
/** The wrapper component to use for the PatternFly Content component. Defaults to a div. */
|
|
9
|
+
component?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'a' | 'small' | 'blockquote' | 'pre' | 'hr' | 'ul' | 'ol' | 'dl' | 'li' | 'dt' | 'dd';
|
|
10
|
+
/** Flag indicating that the content should retain message styles when using Markdown. */
|
|
11
|
+
shouldRetainStyles?: boolean;
|
|
5
12
|
}
|
|
6
|
-
declare const TextMessage: ({ component, children, isPrimary, ...props }: Omit<ContentProps, "ref"> & ExtraProps & TextMessageProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare const TextMessage: ({ component, children, isPrimary, shouldRetainStyles, ...props }: Omit<ContentProps, "ref"> & ExtraProps & TextMessageProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
14
|
export default TextMessage;
|
|
@@ -13,8 +13,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
15
15
|
const react_core_1 = require("@patternfly/react-core");
|
|
16
|
+
const react_styles_1 = require("@patternfly/react-styles");
|
|
16
17
|
const TextMessage = (_a) => {
|
|
17
|
-
var { component, children, isPrimary } = _a, props = __rest(_a, ["component", "children", "isPrimary"]);
|
|
18
|
-
return ((0, jsx_runtime_1.jsx)("span", { className:
|
|
18
|
+
var { component, children, isPrimary, shouldRetainStyles } = _a, props = __rest(_a, ["component", "children", "isPrimary", "shouldRetainStyles"]);
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("span", { className: (0, react_styles_1.css)('pf-chatbot__message-text', isPrimary && 'pf-m-primary', shouldRetainStyles && 'pf-m-markdown'), children: (0, jsx_runtime_1.jsx)(react_core_1.Content, Object.assign({ component: component }, props, { className: (0, react_styles_1.css)(props === null || props === void 0 ? void 0 : props.className), children: children })) }));
|
|
19
20
|
};
|
|
20
21
|
exports.default = TextMessage;
|
|
@@ -48,6 +48,8 @@ export interface UserFeedbackProps extends Omit<CardProps, 'onSubmit'>, OUIAProp
|
|
|
48
48
|
textAreaProps?: TextAreaProps;
|
|
49
49
|
/** Additional props passed to action group */
|
|
50
50
|
actionGroupProps?: ActionGroupProps;
|
|
51
|
+
/** Optional privacy statement text displayed under text area */
|
|
52
|
+
privacyStatement?: string;
|
|
51
53
|
}
|
|
52
|
-
declare const UserFeedback: FunctionComponent<UserFeedbackProps>;
|
|
54
|
+
export declare const UserFeedback: FunctionComponent<UserFeedbackProps>;
|
|
53
55
|
export default UserFeedback;
|