@patternfly/chatbot 6.5.0-prerelease.3 → 6.5.0-prerelease.30
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/AttachMenu/AttachMenu.d.ts +8 -2
- package/dist/cjs/AttachMenu/AttachMenu.js +2 -2
- 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/ChatbotFooter/ChatbotFooter.d.ts +5 -2
- package/dist/cjs/ChatbotFooter/ChatbotFooter.js +2 -2
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +5 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +29 -2
- package/dist/cjs/CodeModal/CodeModal.d.ts +2 -0
- package/dist/cjs/CodeModal/CodeModal.js +53 -8
- 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/FileDetailsLabel/FileDetailsLabel.d.ts +2 -1
- 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 +5 -1
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +16 -5
- 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 +22 -3
- package/dist/cjs/Message/Message.js +8 -161
- package/dist/cjs/Message/Message.test.js +161 -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 -3
- 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 +9 -1
- package/dist/cjs/Message/TableMessage/TableMessage.js +3 -2
- package/dist/cjs/Message/TextMessage/TextMessage.d.ts +11 -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/AttachButton.d.ts +2 -0
- package/dist/cjs/MessageBar/AttachButton.js +2 -2
- package/dist/cjs/MessageBar/AttachButton.test.js +4 -0
- package/dist/cjs/MessageBar/MessageBar.d.ts +22 -6
- package/dist/cjs/MessageBar/MessageBar.js +43 -11
- package/dist/cjs/MessageBar/MessageBar.test.js +74 -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/__mocks__/monaco-editor.d.ts +11 -0
- package/dist/cjs/__mocks__/monaco-editor.js +18 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +7 -1
- package/dist/css/main.css +336 -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/AttachMenu/AttachMenu.d.ts +8 -2
- package/dist/esm/AttachMenu/AttachMenu.js +2 -2
- 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/ChatbotFooter/ChatbotFooter.d.ts +5 -2
- package/dist/esm/ChatbotFooter/ChatbotFooter.js +2 -2
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +5 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +30 -3
- package/dist/esm/CodeModal/CodeModal.d.ts +2 -0
- package/dist/esm/CodeModal/CodeModal.js +54 -9
- 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/FileDetailsLabel/FileDetailsLabel.d.ts +2 -1
- 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 +5 -1
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +16 -5
- 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 +22 -3
- package/dist/esm/Message/Message.js +9 -162
- package/dist/esm/Message/Message.test.js +161 -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 -3
- 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 +9 -1
- package/dist/esm/Message/TableMessage/TableMessage.js +3 -2
- package/dist/esm/Message/TextMessage/TextMessage.d.ts +11 -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/AttachButton.d.ts +2 -0
- package/dist/esm/MessageBar/AttachButton.js +2 -2
- package/dist/esm/MessageBar/AttachButton.test.js +4 -0
- package/dist/esm/MessageBar/MessageBar.d.ts +22 -6
- package/dist/esm/MessageBar/MessageBar.js +43 -11
- package/dist/esm/MessageBar/MessageBar.test.js +74 -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/__mocks__/monaco-editor.d.ts +11 -0
- package/dist/esm/__mocks__/monaco-editor.js +18 -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 -2
- 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/Messages/UserMessageWithExtraContent.tsx +3 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSearchActions.tsx +198 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarCustomActions.tsx +190 -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/Settings.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +81 -30
- package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +18 -18
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +44 -22
- package/patternfly-docs/content/extensions/chatbot/examples/demos/WhiteEmbeddedChatbot.tsx +451 -0
- package/patternfly-docs/patternfly-docs.config.js +1 -1
- package/patternfly-docs/patternfly-docs.source.js +1 -1
- package/src/AttachMenu/AttachMenu.tsx +26 -11
- package/src/Chatbot/Chatbot.scss +23 -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/ChatbotFooter/ChatbotFooter.scss +21 -0
- package/src/ChatbotFooter/ChatbotFooter.test.tsx +10 -1
- package/src/ChatbotFooter/ChatbotFooter.tsx +10 -3
- package/src/ChatbotHeader/ChatbotHeader.scss +19 -0
- package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +56 -14
- package/src/ChatbotModal/ChatbotModal.scss +3 -0
- package/src/CodeModal/CodeModal.tsx +72 -23
- package/src/DeepThinking/DeepThinking.scss +1 -1
- package/src/DeepThinking/DeepThinking.test.tsx +109 -0
- package/src/DeepThinking/DeepThinking.tsx +54 -5
- package/src/FileDetailsLabel/FileDetailsLabel.tsx +2 -2
- 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 +17 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.test.tsx +171 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +21 -5
- 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 +239 -2
- package/src/Message/Message.tsx +133 -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.scss +7 -0
- 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 +17 -1
- package/src/Message/TableMessage/TableMessage.tsx +22 -2
- package/src/Message/TextMessage/TextMessage.scss +18 -0
- package/src/Message/TextMessage/TextMessage.tsx +39 -3
- package/src/Message/UserFeedback/UserFeedback.scss +30 -2
- 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/AttachButton.test.tsx +4 -0
- package/src/MessageBar/AttachButton.tsx +4 -1
- package/src/MessageBar/MessageBar.scss +66 -6
- package/src/MessageBar/MessageBar.test.tsx +129 -1
- package/src/MessageBar/MessageBar.tsx +150 -56
- 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/__mocks__/monaco-editor.ts +19 -0
- 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
|
@@ -4,9 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
import { ExtraProps } from 'react-markdown';
|
|
6
6
|
import { List, ListComponent, OrderType } from '@patternfly/react-core';
|
|
7
|
+
import { css } from '@patternfly/react-styles';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
export interface OrderedListMessageProps {
|
|
10
|
+
/** The ordered list content */
|
|
11
|
+
children?: React.ReactNode;
|
|
12
|
+
/** The number to start the ordered list at. */
|
|
13
|
+
start?: number;
|
|
14
|
+
/** Flag indicating that the content should retain message styles when using Markdown. */
|
|
15
|
+
shouldRetainStyles?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const OrderedListMessage = ({
|
|
19
|
+
children,
|
|
20
|
+
start,
|
|
21
|
+
shouldRetainStyles
|
|
22
|
+
}: OrderedListMessageProps & JSX.IntrinsicElements['ol'] & ExtraProps) => (
|
|
23
|
+
<div className={css('pf-chatbot__message-ordered-list', shouldRetainStyles && 'pf-m-markdown')}>
|
|
10
24
|
<List component={ListComponent.ol} type={OrderType.number} start={start}>
|
|
11
25
|
{children}
|
|
12
26
|
</List>
|
|
@@ -4,9 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
import { ExtraProps } from 'react-markdown';
|
|
6
6
|
import { List } from '@patternfly/react-core';
|
|
7
|
+
import { css } from '@patternfly/react-styles';
|
|
8
|
+
export interface UnrderedListMessageProps {
|
|
9
|
+
/** The ordered list content */
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
/** Flag indicating that the content should retain message styles when using Markdown. */
|
|
12
|
+
shouldRetainStyles?: boolean;
|
|
13
|
+
}
|
|
7
14
|
|
|
8
|
-
const UnorderedListMessage = ({
|
|
9
|
-
|
|
15
|
+
const UnorderedListMessage = ({
|
|
16
|
+
children,
|
|
17
|
+
shouldRetainStyles
|
|
18
|
+
}: UnrderedListMessageProps & JSX.IntrinsicElements['ul'] & ExtraProps) => (
|
|
19
|
+
<div className={css('pf-chatbot__message-unordered-list', shouldRetainStyles && 'pf-m-markdown')}>
|
|
10
20
|
<List>{children}</List>
|
|
11
21
|
</div>
|
|
12
22
|
);
|
package/src/Message/Message.scss
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
display: flex;
|
|
6
6
|
align-items: flex-start;
|
|
7
7
|
gap: var(--pf-t--global--spacer--lg);
|
|
8
|
-
padding-bottom: var(--pf-t--global--spacer--
|
|
8
|
+
padding-bottom: var(--pf-t--global--spacer--lg);
|
|
9
9
|
|
|
10
10
|
// Avatar
|
|
11
11
|
// --------------------------------------------------------------------------
|
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
&-avatar.pf-chatbot__message-avatar--round.pf-v6-c-avatar {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
&:not(.pf-m-xl, .pf-m-lg, .pf-m-md, .pf-m-sm) {
|
|
22
|
+
--pf-v6-c-avatar--Width: 3rem;
|
|
23
|
+
--pf-v6-c-avatar--Height: 3rem;
|
|
24
|
+
}
|
|
23
25
|
--pf-v6-c-avatar--BorderRadius: var(--pf-t--global--border--radius--pill);
|
|
24
26
|
}
|
|
25
27
|
|
|
@@ -156,8 +158,8 @@
|
|
|
156
158
|
// ============================================================================
|
|
157
159
|
.pf-chatbot.pf-m-compact {
|
|
158
160
|
.pf-chatbot__message {
|
|
159
|
-
gap: var(--pf-t--global--spacer--
|
|
160
|
-
padding-bottom: var(--pf-t--global--spacer--
|
|
161
|
+
gap: var(--pf-t--global--spacer--sm);
|
|
162
|
+
padding-bottom: var(--pf-t--global--spacer--md);
|
|
161
163
|
|
|
162
164
|
.pf-chatbot__message-contents {
|
|
163
165
|
gap: var(--pf-t--global--spacer--xs);
|
|
@@ -169,8 +171,10 @@
|
|
|
169
171
|
}
|
|
170
172
|
|
|
171
173
|
.pf-chatbot__message-avatar.pf-chatbot__message-avatar--round.pf-v6-c-avatar {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
+
&:not(.pf-m-xl, .pf-m-lg, .pf-m-md, .pf-m-sm) {
|
|
175
|
+
--pf-v6-c-avatar--Width: 1.5rem;
|
|
176
|
+
--pf-v6-c-avatar--Height: 1.5rem;
|
|
177
|
+
}
|
|
174
178
|
}
|
|
175
179
|
|
|
176
180
|
.pf-chatbot__message-contents {
|
|
@@ -228,6 +228,10 @@ describe('Message', () => {
|
|
|
228
228
|
render(<Message avatar="./testImg" role="bot" name="Bot" content="Hi" />);
|
|
229
229
|
expect(screen.getByRole('img')).toHaveAttribute('src', './testImg');
|
|
230
230
|
});
|
|
231
|
+
it('should not render avatar if no avatar prop is passed', () => {
|
|
232
|
+
render(<Message role="bot" name="Bot" content="Hi" />);
|
|
233
|
+
expect(screen.queryByRole('img')).not.toBeInTheDocument();
|
|
234
|
+
});
|
|
231
235
|
it('should render botWord correctly', () => {
|
|
232
236
|
render(<Message avatar="./img" role="bot" name="Bot" content="Hi" botWord="人工知能" />);
|
|
233
237
|
expect(screen.getByText('Bot')).toBeTruthy();
|
|
@@ -433,7 +437,7 @@ describe('Message', () => {
|
|
|
433
437
|
expect(screen.queryByRole('button', { name: /No/i })).toBeFalsy();
|
|
434
438
|
expect(screen.getByRole('button', { name: /1 more/i }));
|
|
435
439
|
});
|
|
436
|
-
it('
|
|
440
|
+
it('Renders response actions when a single actions object is passed', async () => {
|
|
437
441
|
render(
|
|
438
442
|
<Message
|
|
439
443
|
avatar="./img"
|
|
@@ -459,9 +463,204 @@ describe('Message', () => {
|
|
|
459
463
|
/>
|
|
460
464
|
);
|
|
461
465
|
ALL_ACTIONS.forEach(({ label }) => {
|
|
462
|
-
expect(screen.getByRole('button', { name: label })).
|
|
466
|
+
expect(screen.getByRole('button', { name: label })).toBeVisible();
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
it('Renders response actions when an array of actions objects is passed', async () => {
|
|
470
|
+
render(
|
|
471
|
+
<Message
|
|
472
|
+
avatar="./img"
|
|
473
|
+
role="bot"
|
|
474
|
+
name="Bot"
|
|
475
|
+
content="Hi"
|
|
476
|
+
actions={[
|
|
477
|
+
{
|
|
478
|
+
// eslint-disable-next-line no-console
|
|
479
|
+
positive: { onClick: () => console.log('Good response') },
|
|
480
|
+
// eslint-disable-next-line no-console
|
|
481
|
+
negative: { onClick: () => console.log('Bad response') }
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
// eslint-disable-next-line no-console
|
|
485
|
+
copy: { onClick: () => console.log('Copy') },
|
|
486
|
+
// eslint-disable-next-line no-console
|
|
487
|
+
edit: { onClick: () => console.log('Edit') },
|
|
488
|
+
// eslint-disable-next-line no-console
|
|
489
|
+
share: { onClick: () => console.log('Share') },
|
|
490
|
+
// eslint-disable-next-line no-console
|
|
491
|
+
download: { onClick: () => console.log('Download') }
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
// eslint-disable-next-line no-console
|
|
495
|
+
listen: { onClick: () => console.log('Listen') }
|
|
496
|
+
}
|
|
497
|
+
]}
|
|
498
|
+
/>
|
|
499
|
+
);
|
|
500
|
+
ALL_ACTIONS.forEach(({ label }) => {
|
|
501
|
+
expect(screen.getByRole('button', { name: label })).toBeVisible();
|
|
502
|
+
});
|
|
503
|
+
});
|
|
504
|
+
it('Renders response actions when an array of objects containing actions objects is passed', async () => {
|
|
505
|
+
render(
|
|
506
|
+
<Message
|
|
507
|
+
avatar="./img"
|
|
508
|
+
role="bot"
|
|
509
|
+
name="Bot"
|
|
510
|
+
content="Hi"
|
|
511
|
+
actions={[
|
|
512
|
+
{
|
|
513
|
+
actions: {
|
|
514
|
+
// eslint-disable-next-line no-console
|
|
515
|
+
positive: { onClick: () => console.log('Good response') },
|
|
516
|
+
// eslint-disable-next-line no-console
|
|
517
|
+
negative: { onClick: () => console.log('Bad response') }
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
actions: {
|
|
522
|
+
// eslint-disable-next-line no-console
|
|
523
|
+
copy: { onClick: () => console.log('Copy') },
|
|
524
|
+
// eslint-disable-next-line no-console
|
|
525
|
+
edit: { onClick: () => console.log('Edit') },
|
|
526
|
+
// eslint-disable-next-line no-console
|
|
527
|
+
share: { onClick: () => console.log('Share') },
|
|
528
|
+
// eslint-disable-next-line no-console
|
|
529
|
+
download: { onClick: () => console.log('Download') }
|
|
530
|
+
}
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
actions: {
|
|
534
|
+
// eslint-disable-next-line no-console
|
|
535
|
+
listen: { onClick: () => console.log('Listen') }
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
]}
|
|
539
|
+
/>
|
|
540
|
+
);
|
|
541
|
+
ALL_ACTIONS.forEach(({ label }) => {
|
|
542
|
+
expect(screen.getByRole('button', { name: label })).toBeVisible();
|
|
463
543
|
});
|
|
464
544
|
});
|
|
545
|
+
|
|
546
|
+
it('should handle persistActionSelection correctly when a single actions object is passed', async () => {
|
|
547
|
+
render(
|
|
548
|
+
<Message
|
|
549
|
+
avatar="./img"
|
|
550
|
+
role="bot"
|
|
551
|
+
name="Bot"
|
|
552
|
+
content="Test message"
|
|
553
|
+
persistActionSelection
|
|
554
|
+
actions={{
|
|
555
|
+
positive: { onClick: jest.fn() },
|
|
556
|
+
negative: { onClick: jest.fn() }
|
|
557
|
+
}}
|
|
558
|
+
/>
|
|
559
|
+
);
|
|
560
|
+
const goodBtn = screen.getByRole('button', { name: /Good response/i });
|
|
561
|
+
const badBtn = screen.getByRole('button', { name: /Bad response/i });
|
|
562
|
+
|
|
563
|
+
await userEvent.click(goodBtn);
|
|
564
|
+
expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
|
|
565
|
+
'pf-chatbot__button--response-action-clicked'
|
|
566
|
+
);
|
|
567
|
+
|
|
568
|
+
await userEvent.click(screen.getByText('Test message'));
|
|
569
|
+
expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
|
|
570
|
+
'pf-chatbot__button--response-action-clicked'
|
|
571
|
+
);
|
|
572
|
+
|
|
573
|
+
await userEvent.click(badBtn);
|
|
574
|
+
expect(screen.getByRole('button', { name: /Bad response recorded/i })).toHaveClass(
|
|
575
|
+
'pf-chatbot__button--response-action-clicked'
|
|
576
|
+
);
|
|
577
|
+
expect(goodBtn).not.toHaveClass('pf-chatbot__button--response-action-clicked');
|
|
578
|
+
});
|
|
579
|
+
|
|
580
|
+
it('should handle persistActionSelection correctly when an array of actions objects is passed', async () => {
|
|
581
|
+
render(
|
|
582
|
+
<Message
|
|
583
|
+
avatar="./img"
|
|
584
|
+
role="bot"
|
|
585
|
+
name="Bot"
|
|
586
|
+
content="Test message"
|
|
587
|
+
persistActionSelection
|
|
588
|
+
actions={[
|
|
589
|
+
{
|
|
590
|
+
positive: { onClick: jest.fn() },
|
|
591
|
+
negative: { onClick: jest.fn() }
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
copy: { onClick: jest.fn() }
|
|
595
|
+
}
|
|
596
|
+
]}
|
|
597
|
+
/>
|
|
598
|
+
);
|
|
599
|
+
const goodBtn = screen.getByRole('button', { name: /Good response/i });
|
|
600
|
+
const copyBtn = screen.getByRole('button', { name: /Copy/i });
|
|
601
|
+
|
|
602
|
+
await userEvent.click(goodBtn);
|
|
603
|
+
expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
|
|
604
|
+
'pf-chatbot__button--response-action-clicked'
|
|
605
|
+
);
|
|
606
|
+
|
|
607
|
+
await userEvent.click(screen.getByText('Test message'));
|
|
608
|
+
expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
|
|
609
|
+
'pf-chatbot__button--response-action-clicked'
|
|
610
|
+
);
|
|
611
|
+
|
|
612
|
+
await userEvent.click(copyBtn);
|
|
613
|
+
expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
|
|
614
|
+
|
|
615
|
+
await userEvent.click(screen.getByText('Test message'));
|
|
616
|
+
expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
|
|
617
|
+
'pf-chatbot__button--response-action-clicked'
|
|
618
|
+
);
|
|
619
|
+
expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
it('should handle persistActionSelection correctly when an array of objects containing actions objects is passed', async () => {
|
|
623
|
+
render(
|
|
624
|
+
<Message
|
|
625
|
+
avatar="./img"
|
|
626
|
+
role="bot"
|
|
627
|
+
name="Bot"
|
|
628
|
+
content="Test message"
|
|
629
|
+
actions={[
|
|
630
|
+
{
|
|
631
|
+
actions: {
|
|
632
|
+
positive: { onClick: jest.fn() },
|
|
633
|
+
negative: { onClick: jest.fn() }
|
|
634
|
+
},
|
|
635
|
+
persistActionSelection: true
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
actions: {
|
|
639
|
+
copy: { onClick: jest.fn() }
|
|
640
|
+
},
|
|
641
|
+
persistActionSelection: false
|
|
642
|
+
}
|
|
643
|
+
]}
|
|
644
|
+
/>
|
|
645
|
+
);
|
|
646
|
+
const goodBtn = screen.getByRole('button', { name: /Good response/i });
|
|
647
|
+
const copyBtn = screen.getByRole('button', { name: /Copy/i });
|
|
648
|
+
|
|
649
|
+
await userEvent.click(goodBtn);
|
|
650
|
+
expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
|
|
651
|
+
'pf-chatbot__button--response-action-clicked'
|
|
652
|
+
);
|
|
653
|
+
|
|
654
|
+
await userEvent.click(copyBtn);
|
|
655
|
+
expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
|
|
656
|
+
|
|
657
|
+
await userEvent.click(screen.getByText('Test message'));
|
|
658
|
+
expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
|
|
659
|
+
'pf-chatbot__button--response-action-clicked'
|
|
660
|
+
);
|
|
661
|
+
expect(copyBtn).not.toHaveClass('pf-chatbot__button--response-action-clicked');
|
|
662
|
+
});
|
|
663
|
+
|
|
465
664
|
it('should not show actions if loading', async () => {
|
|
466
665
|
render(
|
|
467
666
|
<Message
|
|
@@ -523,6 +722,7 @@ describe('Message', () => {
|
|
|
523
722
|
expect(screen.queryByRole('button', { name: label })).toBeFalsy();
|
|
524
723
|
});
|
|
525
724
|
});
|
|
725
|
+
|
|
526
726
|
it('should render unordered lists correctly', () => {
|
|
527
727
|
render(<Message avatar="./img" role="user" name="User" content={UNORDERED_LIST} />);
|
|
528
728
|
expect(screen.getByText('Here is an unordered list:')).toBeTruthy();
|
|
@@ -1093,4 +1293,41 @@ describe('Message', () => {
|
|
|
1093
1293
|
expect(screen.getByText('Thought for 3 seconds')).toBeTruthy();
|
|
1094
1294
|
expect(screen.getByText("Here's why I said this.")).toBeTruthy();
|
|
1095
1295
|
});
|
|
1296
|
+
it('should handle isPrimary correctly for inline code when it is true', () => {
|
|
1297
|
+
const { container } = render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} isPrimary />);
|
|
1298
|
+
expect(container.querySelector('.pf-m-primary')).toBeTruthy();
|
|
1299
|
+
});
|
|
1300
|
+
it('should handle isPrimary correctly for inline code when it is false', () => {
|
|
1301
|
+
const { container } = render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} />);
|
|
1302
|
+
expect(container.querySelector('.pf-m-primary')).toBeFalsy();
|
|
1303
|
+
});
|
|
1304
|
+
it('should handle isPrimary correctly for table when it is true', () => {
|
|
1305
|
+
const { container } = render(<Message avatar="./img" role="user" name="User" content={TABLE} isPrimary />);
|
|
1306
|
+
expect(container.querySelector('.pf-m-primary')).toBeTruthy();
|
|
1307
|
+
});
|
|
1308
|
+
it('should handle isPrimary correctly for table when it is false', () => {
|
|
1309
|
+
const { container } = render(<Message avatar="./img" role="user" name="User" content={TABLE} />);
|
|
1310
|
+
expect(container.querySelector('.pf-m-primary')).toBeFalsy();
|
|
1311
|
+
});
|
|
1312
|
+
it('should handle isPrimary correctly for loading when it is true', () => {
|
|
1313
|
+
const { container } = render(<Message avatar="./img" role="user" name="User" content="" isPrimary isLoading />);
|
|
1314
|
+
expect(container.querySelector('.pf-m-primary')).toBeTruthy();
|
|
1315
|
+
});
|
|
1316
|
+
it('should handle isPrimary correctly for loading when it is false', () => {
|
|
1317
|
+
const { container } = render(<Message avatar="./img" role="user" name="User" content="" isLoading />);
|
|
1318
|
+
|
|
1319
|
+
expect(container.querySelector('.pf-m-primary')).toBeFalsy();
|
|
1320
|
+
});
|
|
1321
|
+
it('should handle isPrimary correctly for attachments when it is true', () => {
|
|
1322
|
+
const { container } = render(
|
|
1323
|
+
<Message avatar="./img" role="user" name="User" content="" isPrimary attachments={[{ name: 'testAttachment' }]} />
|
|
1324
|
+
);
|
|
1325
|
+
expect(container.querySelector('.pf-m-outline')).toBeTruthy();
|
|
1326
|
+
});
|
|
1327
|
+
it('should handle isPrimary correctly for attachments when it is false', () => {
|
|
1328
|
+
const { container } = render(
|
|
1329
|
+
<Message avatar="./img" role="user" name="User" content="" attachments={[{ name: 'testAttachment' }]} />
|
|
1330
|
+
);
|
|
1331
|
+
expect(container.querySelector('.pf-m-outline')).toBeFalsy();
|
|
1332
|
+
});
|
|
1096
1333
|
});
|