@patternfly/chatbot 6.8.0-prerelease.8 → 6.8.0-prerelease.9
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/CodeModal/CodeModal.js +5 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.d.ts +26 -7
- package/dist/cjs/MarkdownContent/MarkdownContent.js +79 -166
- package/dist/cjs/MarkdownContent/MarkdownRenderer.d.ts +6 -0
- package/dist/cjs/MarkdownContent/MarkdownRenderer.js +187 -0
- package/dist/cjs/Message/Message.d.ts +3 -4
- package/dist/cjs/Message/Message.js +0 -2
- package/dist/cjs/MessageBox/MessageBox.js +5 -1
- package/dist/cjs/index.d.ts +0 -8
- package/dist/cjs/index.js +1 -13
- package/dist/css/main.css +18 -3
- package/dist/css/main.css.map +1 -1
- package/dist/esm/CodeModal/CodeModal.js +5 -0
- package/dist/esm/MarkdownContent/MarkdownContent.d.ts +26 -7
- package/dist/esm/MarkdownContent/MarkdownContent.js +52 -165
- package/dist/esm/MarkdownContent/MarkdownRenderer.d.ts +6 -0
- package/dist/esm/MarkdownContent/MarkdownRenderer.js +182 -0
- package/dist/esm/Message/Message.d.ts +3 -4
- package/dist/esm/Message/Message.js +0 -2
- package/dist/esm/MessageBox/MessageBox.js +5 -1
- package/dist/esm/index.d.ts +0 -8
- package/dist/esm/index.js +0 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/generate-index.js +41 -16
- package/generate-index.test.js +68 -0
- package/monaco-environment.js +45 -0
- package/package.json +20 -2
- package/patternfly-docs/content/extensions/chatbot/chatbot.md +1 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/monitor-sampleapp-quickstart.ts +1 -0
- package/patternfly-docs/content/extensions/chatbot/tree-shaking.md +124 -0
- package/patternfly-docs/monaco-environment.js +45 -0
- package/patternfly-docs/patternfly-docs.css.js +6 -0
- package/src/Chatbot/Chatbot.scss +4 -0
- package/src/ChatbotContent/ChatbotContent.scss +1 -1
- package/src/ChatbotFooter/ChatbotFooter.scss +2 -2
- package/src/ChatbotHeader/ChatbotHeader.scss +4 -0
- package/src/ChatbotModal/ChatbotModal.scss +10 -0
- package/src/CodeModal/CodeModal.tsx +6 -0
- package/src/DeepThinking/DeepThinking.test.tsx +10 -12
- package/src/MarkdownContent/MarkdownContent.test.tsx +52 -5
- package/src/MarkdownContent/MarkdownContent.tsx +77 -220
- package/src/MarkdownContent/MarkdownRenderer.tsx +235 -0
- package/src/Message/Message.test.tsx +5 -0
- package/src/Message/Message.tsx +3 -5
- package/src/MessageBox/MessageBox.tsx +13 -1
- package/src/ResponseActions/ResponseActions.test.tsx +42 -48
- package/src/ToolCall/ToolCall.test.tsx +6 -9
- package/src/ToolResponse/ToolResponse.test.tsx +16 -22
- package/src/index.ts +0 -12
- package/src/test-utils/markdownTestUtils.ts +21 -0
- package/tsconfig.json +6 -1
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +0 -1
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +0 -77
- package/dist/cjs/Chatbot/Chatbot.test.d.ts +0 -1
- package/dist/cjs/Chatbot/Chatbot.test.js +0 -32
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +0 -1
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +0 -27
- package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +0 -1
- package/dist/cjs/ChatbotContent/ChatbotContent.test.js +0 -22
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +0 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +0 -75
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +0 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +0 -601
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +0 -1
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +0 -27
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +0 -1
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +0 -87
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +0 -18
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +0 -18
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +0 -22
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +0 -18
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +0 -22
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +0 -22
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +0 -46
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +0 -44
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +0 -55
- package/dist/cjs/ChatbotModal/ChatbotModal.test.d.ts +0 -1
- package/dist/cjs/ChatbotModal/ChatbotModal.test.js +0 -16
- package/dist/cjs/ChatbotToggle/ChatbotToggle.test.d.ts +0 -1
- package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +0 -64
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +0 -1
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +0 -61
- package/dist/cjs/CodeModal/CodeModal.test.d.ts +0 -1
- package/dist/cjs/CodeModal/CodeModal.test.js +0 -34
- package/dist/cjs/Compare/Compare.test.d.ts +0 -1
- package/dist/cjs/Compare/Compare.test.js +0 -18
- package/dist/cjs/DeepThinking/DeepThinking.test.d.ts +0 -1
- package/dist/cjs/DeepThinking/DeepThinking.test.js +0 -146
- package/dist/cjs/FileDetails/FileDetails.test.d.ts +0 -1
- package/dist/cjs/FileDetails/FileDetails.test.js +0 -42
- package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.d.ts +0 -1
- package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +0 -79
- package/dist/cjs/FileDropZone/FileDropZone.test.d.ts +0 -1
- package/dist/cjs/FileDropZone/FileDropZone.test.js +0 -100
- package/dist/cjs/FilePreview/FilePreview.test.d.ts +0 -1
- package/dist/cjs/FilePreview/FilePreview.test.js +0 -97
- package/dist/cjs/ImagePreview/ImagePreview.test.d.ts +0 -1
- package/dist/cjs/ImagePreview/ImagePreview.test.js +0 -225
- package/dist/cjs/MarkdownContent/MarkdownContent.test.d.ts +0 -1
- package/dist/cjs/MarkdownContent/MarkdownContent.test.js +0 -192
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +0 -1
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +0 -131
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.d.ts +0 -1
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.js +0 -30
- package/dist/cjs/Message/Message.test.d.ts +0 -1
- package/dist/cjs/Message/Message.test.js +0 -1128
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.d.ts +0 -1
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.js +0 -25
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +0 -1
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.js +0 -25
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +0 -1
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.js +0 -25
- package/dist/cjs/Message/MessageLoading.test.d.ts +0 -1
- package/dist/cjs/Message/MessageLoading.test.js +0 -25
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.d.ts +0 -1
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.js +0 -109
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +0 -1
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +0 -76
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +0 -1
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +0 -181
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +0 -1
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +0 -243
- package/dist/cjs/MessageBar/AttachButton.test.d.ts +0 -1
- package/dist/cjs/MessageBar/AttachButton.test.js +0 -152
- package/dist/cjs/MessageBar/MessageBar.test.d.ts +0 -1
- package/dist/cjs/MessageBar/MessageBar.test.js +0 -338
- package/dist/cjs/MessageBar/SendButton.test.d.ts +0 -1
- package/dist/cjs/MessageBar/SendButton.test.js +0 -58
- package/dist/cjs/MessageBar/StopButton.test.d.ts +0 -1
- package/dist/cjs/MessageBar/StopButton.test.js +0 -58
- package/dist/cjs/MessageBox/JumpButton.test.d.ts +0 -1
- package/dist/cjs/MessageBox/JumpButton.test.js +0 -39
- package/dist/cjs/MessageBox/MessageBox.test.d.ts +0 -1
- package/dist/cjs/MessageBox/MessageBox.test.js +0 -294
- package/dist/cjs/MessageDivider/MessageDivider.test.d.ts +0 -1
- package/dist/cjs/MessageDivider/MessageDivider.test.js +0 -29
- package/dist/cjs/Onboarding/Onboarding.test.d.ts +0 -1
- package/dist/cjs/Onboarding/Onboarding.test.js +0 -80
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +0 -1
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +0 -50
- package/dist/cjs/ResponseActions/ResponseActionButton.test.d.ts +0 -1
- package/dist/cjs/ResponseActions/ResponseActionButton.test.js +0 -54
- package/dist/cjs/ResponseActions/ResponseActions.test.d.ts +0 -1
- package/dist/cjs/ResponseActions/ResponseActions.test.js +0 -455
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.d.ts +0 -1
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.js +0 -25
- package/dist/cjs/Settings/SettingsForm.test.d.ts +0 -1
- package/dist/cjs/Settings/SettingsForm.test.js +0 -35
- package/dist/cjs/SourcesCard/SourcesCard.test.d.ts +0 -1
- package/dist/cjs/SourcesCard/SourcesCard.test.js +0 -39
- package/dist/cjs/SourcesCardBase/SourcesCardBase.test.d.ts +0 -1
- package/dist/cjs/SourcesCardBase/SourcesCardBase.test.js +0 -199
- package/dist/cjs/TermsOfUse/TermsOfUse.test.d.ts +0 -1
- package/dist/cjs/TermsOfUse/TermsOfUse.test.js +0 -77
- package/dist/cjs/ToolCall/ToolCall.test.d.ts +0 -1
- package/dist/cjs/ToolCall/ToolCall.test.js +0 -201
- package/dist/cjs/ToolResponse/ToolResponse.test.d.ts +0 -1
- package/dist/cjs/ToolResponse/ToolResponse.test.js +0 -184
- package/dist/cjs/__mocks__/monaco-editor.d.ts +0 -11
- package/dist/cjs/__mocks__/monaco-editor.js +0 -18
- package/dist/cjs/__mocks__/rehype-external-links.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-external-links.js +0 -4
- package/dist/cjs/__mocks__/rehype-highlight.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-highlight.js +0 -4
- package/dist/cjs/__mocks__/rehype-sanitize.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-sanitize.js +0 -4
- package/dist/cjs/__mocks__/rehype-unwrap-images.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-unwrap-images.js +0 -4
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +0 -1
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +0 -72
- package/dist/esm/Chatbot/Chatbot.test.d.ts +0 -1
- package/dist/esm/Chatbot/Chatbot.test.js +0 -27
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +0 -1
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +0 -22
- package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +0 -1
- package/dist/esm/ChatbotContent/ChatbotContent.test.js +0 -17
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +0 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +0 -70
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +0 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +0 -596
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +0 -1
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +0 -22
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +0 -1
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +0 -82
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +0 -13
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +0 -13
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +0 -20
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +0 -13
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +0 -20
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +0 -20
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +0 -44
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +0 -42
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +0 -50
- package/dist/esm/ChatbotModal/ChatbotModal.test.d.ts +0 -1
- package/dist/esm/ChatbotModal/ChatbotModal.test.js +0 -11
- package/dist/esm/ChatbotToggle/ChatbotToggle.test.d.ts +0 -1
- package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +0 -59
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +0 -1
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +0 -56
- package/dist/esm/CodeModal/CodeModal.test.d.ts +0 -1
- package/dist/esm/CodeModal/CodeModal.test.js +0 -29
- package/dist/esm/Compare/Compare.test.d.ts +0 -1
- package/dist/esm/Compare/Compare.test.js +0 -13
- package/dist/esm/DeepThinking/DeepThinking.test.d.ts +0 -1
- package/dist/esm/DeepThinking/DeepThinking.test.js +0 -141
- package/dist/esm/FileDetails/FileDetails.test.d.ts +0 -1
- package/dist/esm/FileDetails/FileDetails.test.js +0 -37
- package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.d.ts +0 -1
- package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +0 -74
- package/dist/esm/FileDropZone/FileDropZone.test.d.ts +0 -1
- package/dist/esm/FileDropZone/FileDropZone.test.js +0 -95
- package/dist/esm/FilePreview/FilePreview.test.d.ts +0 -1
- package/dist/esm/FilePreview/FilePreview.test.js +0 -92
- package/dist/esm/ImagePreview/ImagePreview.test.d.ts +0 -1
- package/dist/esm/ImagePreview/ImagePreview.test.js +0 -220
- package/dist/esm/MarkdownContent/MarkdownContent.test.d.ts +0 -1
- package/dist/esm/MarkdownContent/MarkdownContent.test.js +0 -187
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +0 -1
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +0 -126
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.d.ts +0 -1
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.js +0 -25
- package/dist/esm/Message/Message.test.d.ts +0 -1
- package/dist/esm/Message/Message.test.js +0 -1123
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.d.ts +0 -1
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.js +0 -20
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +0 -1
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.js +0 -20
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +0 -1
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.js +0 -20
- package/dist/esm/Message/MessageLoading.test.d.ts +0 -1
- package/dist/esm/Message/MessageLoading.test.js +0 -20
- package/dist/esm/Message/QuickResponse/QuickResponse.test.d.ts +0 -1
- package/dist/esm/Message/QuickResponse/QuickResponse.test.js +0 -104
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +0 -1
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +0 -48
- package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +0 -1
- package/dist/esm/Message/UserFeedback/UserFeedback.test.js +0 -176
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +0 -1
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +0 -238
- package/dist/esm/MessageBar/AttachButton.test.d.ts +0 -1
- package/dist/esm/MessageBar/AttachButton.test.js +0 -147
- package/dist/esm/MessageBar/MessageBar.test.d.ts +0 -1
- package/dist/esm/MessageBar/MessageBar.test.js +0 -333
- package/dist/esm/MessageBar/SendButton.test.d.ts +0 -1
- package/dist/esm/MessageBar/SendButton.test.js +0 -53
- package/dist/esm/MessageBar/StopButton.test.d.ts +0 -1
- package/dist/esm/MessageBar/StopButton.test.js +0 -53
- package/dist/esm/MessageBox/JumpButton.test.d.ts +0 -1
- package/dist/esm/MessageBox/JumpButton.test.js +0 -34
- package/dist/esm/MessageBox/MessageBox.test.d.ts +0 -1
- package/dist/esm/MessageBox/MessageBox.test.js +0 -289
- package/dist/esm/MessageDivider/MessageDivider.test.d.ts +0 -1
- package/dist/esm/MessageDivider/MessageDivider.test.js +0 -24
- package/dist/esm/Onboarding/Onboarding.test.d.ts +0 -1
- package/dist/esm/Onboarding/Onboarding.test.js +0 -75
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +0 -1
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +0 -48
- package/dist/esm/ResponseActions/ResponseActionButton.test.d.ts +0 -1
- package/dist/esm/ResponseActions/ResponseActionButton.test.js +0 -49
- package/dist/esm/ResponseActions/ResponseActions.test.d.ts +0 -1
- package/dist/esm/ResponseActions/ResponseActions.test.js +0 -450
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.d.ts +0 -1
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.js +0 -20
- package/dist/esm/Settings/SettingsForm.test.d.ts +0 -1
- package/dist/esm/Settings/SettingsForm.test.js +0 -33
- package/dist/esm/SourcesCard/SourcesCard.test.d.ts +0 -1
- package/dist/esm/SourcesCard/SourcesCard.test.js +0 -34
- package/dist/esm/SourcesCardBase/SourcesCardBase.test.d.ts +0 -1
- package/dist/esm/SourcesCardBase/SourcesCardBase.test.js +0 -194
- package/dist/esm/TermsOfUse/TermsOfUse.test.d.ts +0 -1
- package/dist/esm/TermsOfUse/TermsOfUse.test.js +0 -72
- package/dist/esm/ToolCall/ToolCall.test.d.ts +0 -1
- package/dist/esm/ToolCall/ToolCall.test.js +0 -196
- package/dist/esm/ToolResponse/ToolResponse.test.d.ts +0 -1
- package/dist/esm/ToolResponse/ToolResponse.test.js +0 -179
- package/dist/esm/__mocks__/monaco-editor.d.ts +0 -11
- package/dist/esm/__mocks__/monaco-editor.js +0 -18
- package/dist/esm/__mocks__/rehype-external-links.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-external-links.js +0 -2
- package/dist/esm/__mocks__/rehype-highlight.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-highlight.js +0 -2
- package/dist/esm/__mocks__/rehype-sanitize.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-sanitize.js +0 -2
- package/dist/esm/__mocks__/rehype-unwrap-images.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-unwrap-images.js +0 -2
|
@@ -1,596 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
import '@testing-library/jest-dom';
|
|
12
|
-
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
|
|
13
|
-
import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
|
|
14
|
-
import ChatbotConversationHistoryNav from './ChatbotConversationHistoryNav';
|
|
15
|
-
import { EmptyStateStatus, Spinner, MenuItem } from '@patternfly/react-core';
|
|
16
|
-
import { BellIcon, OutlinedCommentsIcon, SearchIcon } from '@patternfly/react-icons';
|
|
17
|
-
import { useState } from 'react';
|
|
18
|
-
const ERROR = {
|
|
19
|
-
bodyText: (_jsxs(_Fragment, { children: ["To try again, check your connection and reload this page. If the issue persists,", ' ', _jsx("a", { href: "", children: "contact the support team" }), "."] })),
|
|
20
|
-
buttonText: 'Reload',
|
|
21
|
-
buttonIcon: _jsx(Spinner, { size: "sm" }),
|
|
22
|
-
hasButton: true,
|
|
23
|
-
titleText: 'Could not load chat history',
|
|
24
|
-
status: EmptyStateStatus.danger,
|
|
25
|
-
onClick: () => alert('Clicked Reload')
|
|
26
|
-
};
|
|
27
|
-
const NO_RESULTS = {
|
|
28
|
-
bodyText: 'Adjust your search query and try again. Check your spelling or try a more general term.',
|
|
29
|
-
titleText: 'No results found',
|
|
30
|
-
icon: SearchIcon
|
|
31
|
-
};
|
|
32
|
-
const EMPTY_STATE = {
|
|
33
|
-
bodyText: 'Access timely assistance by starting a conversation with an AI model.',
|
|
34
|
-
titleText: 'Start a new chat',
|
|
35
|
-
icon: OutlinedCommentsIcon
|
|
36
|
-
};
|
|
37
|
-
const ERROR_WITHOUT_BUTTON = {
|
|
38
|
-
bodyText: (_jsxs(_Fragment, { children: ["To try again, check your connection and reload this page. If the issue persists,", ' ', _jsx("a", { href: "", children: "contact the support team" }), "."] })),
|
|
39
|
-
buttonText: 'Reload',
|
|
40
|
-
buttonIcon: _jsx(Spinner, { size: "sm" }),
|
|
41
|
-
hasButton: false,
|
|
42
|
-
titleText: 'Could not load chat history',
|
|
43
|
-
status: EmptyStateStatus.danger,
|
|
44
|
-
onClick: () => alert('Clicked Reload')
|
|
45
|
-
};
|
|
46
|
-
describe('ChatbotConversationHistoryNav', () => {
|
|
47
|
-
const onDrawerToggle = jest.fn();
|
|
48
|
-
const initialConversations = [
|
|
49
|
-
{
|
|
50
|
-
id: '1',
|
|
51
|
-
text: 'ChatBot documentation'
|
|
52
|
-
}
|
|
53
|
-
];
|
|
54
|
-
it('should open the conversation history navigation drawer', () => {
|
|
55
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations }));
|
|
56
|
-
expect(screen.queryByText('ChatBot documentation')).toBeInTheDocument();
|
|
57
|
-
});
|
|
58
|
-
it('should display the conversations for grouped conversations', () => {
|
|
59
|
-
const groupedConversations = {
|
|
60
|
-
Today: [...initialConversations, { id: '2', text: 'Chatbot extension' }]
|
|
61
|
-
};
|
|
62
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: groupedConversations }));
|
|
63
|
-
expect(screen.queryByText('Chatbot extension')).toBeInTheDocument();
|
|
64
|
-
});
|
|
65
|
-
it('should apply the reversed class when reverseButtonOrder is true', () => {
|
|
66
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: true, conversations: initialConversations }));
|
|
67
|
-
expect(screen.getByTestId('chatbot-nav-drawer-actions')).toHaveClass('pf-v6-c-drawer__actions--reversed');
|
|
68
|
-
});
|
|
69
|
-
it('should disable new chat button', () => {
|
|
70
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: true, conversations: initialConversations, newChatButtonProps: { isDisabled: true }, onNewChat: jest.fn() }));
|
|
71
|
-
expect(screen.getByRole('button', { name: 'New chat' })).toBeDisabled();
|
|
72
|
-
});
|
|
73
|
-
it('should not apply the reversed class when reverseButtonOrder is false', () => {
|
|
74
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, conversations: initialConversations }));
|
|
75
|
-
expect(screen.getByTestId('chatbot-nav-drawer-actions')).not.toHaveClass('pf-v6-c-drawer__actions--reversed');
|
|
76
|
-
});
|
|
77
|
-
it('should invoke handleTextInputChange callback when user searches for conversations', () => {
|
|
78
|
-
const handleSearch = jest.fn();
|
|
79
|
-
const groupedConversations = {
|
|
80
|
-
Today: [...initialConversations, { id: '2', text: 'Chatbot extension' }]
|
|
81
|
-
};
|
|
82
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, conversations: groupedConversations, handleTextInputChange: handleSearch }));
|
|
83
|
-
const searchInput = screen.getByPlaceholderText(/Search/i);
|
|
84
|
-
fireEvent.change(searchInput, { target: { value: 'Chatbot' } });
|
|
85
|
-
expect(handleSearch).toHaveBeenCalledWith('Chatbot');
|
|
86
|
-
});
|
|
87
|
-
it('should close the drawer when escape key is pressed', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
88
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations }));
|
|
89
|
-
fireEvent.keyDown(screen.getByPlaceholderText(/Search/i), {
|
|
90
|
-
key: 'Escape',
|
|
91
|
-
code: 'Escape',
|
|
92
|
-
keyCode: 27,
|
|
93
|
-
charCode: 27
|
|
94
|
-
});
|
|
95
|
-
waitFor(() => {
|
|
96
|
-
expect(screen.queryByText('ChatBot documentation')).not.toBeInTheDocument();
|
|
97
|
-
});
|
|
98
|
-
}));
|
|
99
|
-
it('should be resizable', () => {
|
|
100
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerPanelContentProps: { isResizable: true, minSize: '200px' } }));
|
|
101
|
-
expect(screen.getByRole('dialog', { name: /Resize/i })).toBeTruthy();
|
|
102
|
-
expect(screen.getByRole('separator', { name: /Resize/i })).toBeTruthy();
|
|
103
|
-
expect(screen.getByRole('dialog', { name: /Resize/i })).toHaveAttribute('style', '--pf-v6-c-drawer__panel--md--FlexBasis: 384px; --pf-v6-c-drawer__panel--md--FlexBasis--min: 200px;');
|
|
104
|
-
});
|
|
105
|
-
it('should accept drawerContentProps', () => {
|
|
106
|
-
const { container } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerContentProps: { className: 'test' } }));
|
|
107
|
-
const element = container.querySelector('.test');
|
|
108
|
-
expect(element).toBeInTheDocument();
|
|
109
|
-
});
|
|
110
|
-
it('should accept drawerContentBodyProps', () => {
|
|
111
|
-
const { container } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerContentBodyProps: { className: 'test' } }));
|
|
112
|
-
const element = container.querySelector('.test');
|
|
113
|
-
expect(element).toBeInTheDocument();
|
|
114
|
-
});
|
|
115
|
-
it('should accept drawerHeadProps', () => {
|
|
116
|
-
const { container } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerHeadProps: { className: 'test' } }));
|
|
117
|
-
const element = container.querySelector('.test');
|
|
118
|
-
expect(element).toBeInTheDocument();
|
|
119
|
-
});
|
|
120
|
-
it('should accept drawerActionsProps', () => {
|
|
121
|
-
const { container } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerActionsProps: { className: 'test' } }));
|
|
122
|
-
const element = container.querySelector('.test');
|
|
123
|
-
expect(element).toBeInTheDocument();
|
|
124
|
-
});
|
|
125
|
-
it('should accept drawerCloseButtonProps', () => {
|
|
126
|
-
const { container } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerCloseButtonProps: { className: 'test' } }));
|
|
127
|
-
const element = container.querySelector('.test');
|
|
128
|
-
expect(element).toBeInTheDocument();
|
|
129
|
-
});
|
|
130
|
-
it('should accept drawerPanelBodyProps', () => {
|
|
131
|
-
const { container } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerPanelBodyProps: { className: 'test' } }));
|
|
132
|
-
const element = container.querySelector('.test');
|
|
133
|
-
expect(element).toBeInTheDocument();
|
|
134
|
-
});
|
|
135
|
-
it('should show loading state if triggered', () => {
|
|
136
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, isLoading: true }));
|
|
137
|
-
expect(screen.getByRole('dialog', { name: /Loading chatbot chat history/i })).toBeTruthy();
|
|
138
|
-
expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
|
|
139
|
-
});
|
|
140
|
-
it('should pass alternative aria label to loading state', () => {
|
|
141
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, isLoading: true, loadingState: { screenreaderText: 'I am a test' } }));
|
|
142
|
-
expect(screen.getByRole('dialog', { name: /I am a test/i })).toBeTruthy();
|
|
143
|
-
});
|
|
144
|
-
it('should accept errorState', () => {
|
|
145
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, errorState: ERROR }));
|
|
146
|
-
expect(screen.getByRole('dialog', {
|
|
147
|
-
name: /Could not load chat history To try again, check your connection and reload this page. If the issue persists, contact the support team . Loading... Reload/i
|
|
148
|
-
})).toBeTruthy();
|
|
149
|
-
expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
|
|
150
|
-
expect(screen.getByRole('button', { name: /Loading... Reload/i })).toBeTruthy();
|
|
151
|
-
expect(screen.getByRole('textbox', { name: /Search previous conversations/i })).toBeTruthy();
|
|
152
|
-
expect(screen.getByRole('heading', { name: /Could not load chat history/i })).toBeTruthy();
|
|
153
|
-
});
|
|
154
|
-
it('should accept errorState without button', () => {
|
|
155
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, errorState: ERROR_WITHOUT_BUTTON }));
|
|
156
|
-
expect(screen.getByRole('dialog', {
|
|
157
|
-
name: /Could not load chat history To try again, check your connection and reload this page. If the issue persists, contact the support team ./i
|
|
158
|
-
})).toBeTruthy();
|
|
159
|
-
expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
|
|
160
|
-
expect(screen.queryByRole('button', { name: /Loading... Reload/i })).toBeFalsy();
|
|
161
|
-
expect(screen.getByRole('textbox', { name: /Search previous conversations/i })).toBeTruthy();
|
|
162
|
-
expect(screen.getByRole('heading', { name: /Could not load chat history/i })).toBeTruthy();
|
|
163
|
-
});
|
|
164
|
-
it('should show loading state over error state if both are supplied', () => {
|
|
165
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, isLoading: true, errorState: ERROR }));
|
|
166
|
-
expect(screen.getByRole('dialog', { name: /Loading/i })).toBeTruthy();
|
|
167
|
-
});
|
|
168
|
-
it('should accept emptyState', () => {
|
|
169
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, emptyState: EMPTY_STATE }));
|
|
170
|
-
expect(screen.getByRole('dialog', {
|
|
171
|
-
name: /Start a new chat Access timely assistance by starting a conversation with an AI model./i
|
|
172
|
-
})).toBeTruthy();
|
|
173
|
-
});
|
|
174
|
-
it('should accept no results state', () => {
|
|
175
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, noResultsState: NO_RESULTS }));
|
|
176
|
-
expect(screen.getByRole('dialog', {
|
|
177
|
-
name: /No results found Adjust your search query and try again. Check your spelling or try a more general term./i
|
|
178
|
-
})).toBeTruthy();
|
|
179
|
-
});
|
|
180
|
-
it('should handle isCompact', () => {
|
|
181
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: jest.fn(), conversations: initialConversations, noResultsState: NO_RESULTS, isCompact: true, "data-testid": "drawer" }));
|
|
182
|
-
expect(screen.getByTestId('drawer')).toHaveClass('pf-m-compact');
|
|
183
|
-
});
|
|
184
|
-
it('should display the default title', () => {
|
|
185
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations }));
|
|
186
|
-
expect(screen.getByText('Chat history')).toBeInTheDocument();
|
|
187
|
-
});
|
|
188
|
-
it('should display the custom title', () => {
|
|
189
|
-
render(_jsx(ChatbotConversationHistoryNav, { title: "PatternFly history", onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations }));
|
|
190
|
-
expect(screen.getByText('PatternFly history')).toBeInTheDocument();
|
|
191
|
-
});
|
|
192
|
-
it('should display the clock icon', () => {
|
|
193
|
-
const { container } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations }));
|
|
194
|
-
const iconElement = container.querySelector('.pf-chatbot__title-icon');
|
|
195
|
-
expect(iconElement).toBeInTheDocument();
|
|
196
|
-
});
|
|
197
|
-
it('Passes menuProps to Menu', () => {
|
|
198
|
-
var _a;
|
|
199
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, menuProps: { className: 'test' } }));
|
|
200
|
-
expect((_a = screen.getByRole('menu').parentElement) === null || _a === void 0 ? void 0 : _a.parentElement).toHaveClass('test');
|
|
201
|
-
});
|
|
202
|
-
it('Passes menuContentProps to MenuContent', () => {
|
|
203
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, menuContentProps: { className: 'test' } }));
|
|
204
|
-
expect(screen.getByRole('menu').parentElement).toHaveClass('test');
|
|
205
|
-
});
|
|
206
|
-
it('Passes menuListProps to MenuList when conversations is an array', () => {
|
|
207
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, menuListProps: { className: 'test' } }));
|
|
208
|
-
expect(screen.getByRole('menu')).toHaveClass('test');
|
|
209
|
-
});
|
|
210
|
-
it('Passes menuListProps to MenuList when conversations is an object', () => {
|
|
211
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: { Today: initialConversations }, menuListProps: { Today: { className: 'test' } } }));
|
|
212
|
-
expect(screen.getByRole('menu')).toHaveClass('test');
|
|
213
|
-
});
|
|
214
|
-
it('Passes menuGroupProps to MenuGroup when conversations is an object', () => {
|
|
215
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: { Today: initialConversations }, menuGroupProps: { Today: { className: 'test' } } }));
|
|
216
|
-
expect(screen.getByRole('menu').parentElement).toHaveClass('test');
|
|
217
|
-
});
|
|
218
|
-
it('Passes additionalProps to MenuItem', () => {
|
|
219
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: [{ id: '1', text: 'ChatBot documentation', additionalProps: { className: 'test' } }] }));
|
|
220
|
-
expect(screen.getByRole('menuitem')).toHaveClass('test');
|
|
221
|
-
});
|
|
222
|
-
it('should be able to spread search input props when searchInputProps is passed', () => {
|
|
223
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, handleTextInputChange: jest.fn(), searchInputProps: { value: 'I am a sample search' } }));
|
|
224
|
-
expect(screen.getByRole('dialog', { name: /Chat history I am a sample search/i })).toBeInTheDocument();
|
|
225
|
-
});
|
|
226
|
-
it('Does not render search actions by default', () => {
|
|
227
|
-
var _a, _b;
|
|
228
|
-
const handleSearch = jest.fn();
|
|
229
|
-
const groupedConversations = {
|
|
230
|
-
Today: [...initialConversations, { id: '2', text: 'Chatbot extension' }]
|
|
231
|
-
};
|
|
232
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, conversations: groupedConversations, handleTextInputChange: handleSearch }));
|
|
233
|
-
const searchInput = screen.getByPlaceholderText(/Search/i);
|
|
234
|
-
expect((_a = searchInput.parentElement) === null || _a === void 0 ? void 0 : _a.previousElementSibling).toBeNull();
|
|
235
|
-
expect((_b = searchInput.parentElement) === null || _b === void 0 ? void 0 : _b.nextElementSibling).toBeNull();
|
|
236
|
-
});
|
|
237
|
-
it('Renders with action at start when searchActionStart is passed', () => {
|
|
238
|
-
const handleSearch = jest.fn();
|
|
239
|
-
const groupedConversations = {
|
|
240
|
-
Today: [...initialConversations, { id: '2', text: 'Chatbot extension' }]
|
|
241
|
-
};
|
|
242
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, conversations: groupedConversations, handleTextInputChange: handleSearch, searchActionStart: _jsx("div", { children: "Search action start test" }) }));
|
|
243
|
-
expect(screen.getByText('Search action start test')).toBeVisible();
|
|
244
|
-
});
|
|
245
|
-
it('Renders with action at end when searchActionEnd is passed', () => {
|
|
246
|
-
const handleSearch = jest.fn();
|
|
247
|
-
const groupedConversations = {
|
|
248
|
-
Today: [...initialConversations, { id: '2', text: 'Chatbot extension' }]
|
|
249
|
-
};
|
|
250
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, handleTextInputChange: handleSearch, conversations: groupedConversations, searchActionEnd: _jsx("div", { children: "Search action end test" }) }));
|
|
251
|
-
expect(screen.getByText('Search action end test')).toBeVisible();
|
|
252
|
-
});
|
|
253
|
-
it('Overrides default search input and actions when searchToolbar is passed', () => {
|
|
254
|
-
const handleSearch = jest.fn();
|
|
255
|
-
const groupedConversations = {
|
|
256
|
-
Today: [...initialConversations, { id: '2', text: 'Chatbot extension' }]
|
|
257
|
-
};
|
|
258
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), reverseButtonOrder: false, conversations: groupedConversations, handleTextInputChange: handleSearch, searchActionStart: _jsx("div", { children: "Search action start test" }), searchActionEnd: _jsx("div", { children: "Search action end test" }), searchToolbar: _jsx("div", { children: "Custom toolbar" }) }));
|
|
259
|
-
expect(screen.queryByPlaceholderText(/Search/i)).not.toBeInTheDocument();
|
|
260
|
-
expect(screen.queryByText('Search action start test')).not.toBeInTheDocument();
|
|
261
|
-
expect(screen.queryByText('Search action end test')).not.toBeInTheDocument();
|
|
262
|
-
expect(screen.getByText('Custom toolbar')).toBeInTheDocument();
|
|
263
|
-
});
|
|
264
|
-
it('overrides nav title heading level when navTitleProps.headingLevel is passed', () => {
|
|
265
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: { Today: initialConversations }, navTitleProps: { headingLevel: 'h1' } }));
|
|
266
|
-
expect(screen.queryByRole('heading', { name: /Chat history/i, level: 2 })).not.toBeInTheDocument();
|
|
267
|
-
expect(screen.getByRole('heading', { name: /Chat history/i, level: 1 })).toBeInTheDocument();
|
|
268
|
-
});
|
|
269
|
-
it('overrides nav title icon when navTitleIcon is passed in', () => {
|
|
270
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, navTitleIcon: _jsx(BellIcon, { "data-testid": "bell" }) }));
|
|
271
|
-
expect(screen.getByTestId('bell')).toBeInTheDocument();
|
|
272
|
-
});
|
|
273
|
-
it('renders static and expandable groups from ConversationGroup[]', () => {
|
|
274
|
-
const groups = [
|
|
275
|
-
{
|
|
276
|
-
id: 'pinned',
|
|
277
|
-
label: 'Pinned chats',
|
|
278
|
-
items: initialConversations
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
id: 'chats',
|
|
282
|
-
label: 'Chats',
|
|
283
|
-
expandable: {
|
|
284
|
-
isExpanded: true,
|
|
285
|
-
onToggle: jest.fn()
|
|
286
|
-
},
|
|
287
|
-
items: [{ id: '2', text: 'Chatbot extension' }]
|
|
288
|
-
}
|
|
289
|
-
];
|
|
290
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: groups }));
|
|
291
|
-
expect(screen.getByRole('heading', { name: 'Pinned chats', level: 3 })).toBeInTheDocument();
|
|
292
|
-
expect(screen.queryByRole('button', { name: 'Pinned chats' })).not.toBeInTheDocument();
|
|
293
|
-
expect(screen.getByRole('button', { name: 'Chats' })).toBeInTheDocument();
|
|
294
|
-
});
|
|
295
|
-
it('labels each MenuList with aria-labelledby referencing its visible label', () => {
|
|
296
|
-
const groups = [
|
|
297
|
-
{
|
|
298
|
-
id: 'pinned',
|
|
299
|
-
label: 'Pinned chats',
|
|
300
|
-
items: initialConversations
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
id: 'chats',
|
|
304
|
-
label: 'Chats',
|
|
305
|
-
expandable: {
|
|
306
|
-
isExpanded: true,
|
|
307
|
-
onToggle: jest.fn()
|
|
308
|
-
},
|
|
309
|
-
items: [{ id: '2', text: 'Chatbot extension' }]
|
|
310
|
-
}
|
|
311
|
-
];
|
|
312
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: groups }));
|
|
313
|
-
const pinnedHeading = screen.getByRole('heading', { name: 'Pinned chats', level: 3 });
|
|
314
|
-
expect(pinnedHeading).toHaveAttribute('id', 'chatbot-nav-group-pinned-label');
|
|
315
|
-
expect(pinnedHeading.closest('section')).toHaveAttribute('aria-labelledby', 'chatbot-nav-group-pinned-label');
|
|
316
|
-
expect(screen.getByRole('menu', { name: 'Pinned chats' })).toHaveAttribute('aria-labelledby', 'chatbot-nav-group-pinned-label');
|
|
317
|
-
expect(document.querySelector('ul.pf-v6-c-menu__list[aria-labelledby="chatbot-nav-group-pinned-label"]')).toBeTruthy();
|
|
318
|
-
const chatsToggle = screen.getByRole('button', { name: 'Chats' });
|
|
319
|
-
expect(chatsToggle).toHaveAttribute('id', 'chatbot-nav-group-chats-toggle');
|
|
320
|
-
expect(screen.getByRole('menu', { name: 'Chats' })).toHaveAttribute('aria-labelledby', 'chatbot-nav-group-chats-toggle');
|
|
321
|
-
expect(document.querySelector('ul.pf-v6-c-menu__list[aria-labelledby="chatbot-nav-group-chats-toggle"]')).toBeTruthy();
|
|
322
|
-
});
|
|
323
|
-
it('labels grouped object conversations on the menu list element', () => {
|
|
324
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: { Today: initialConversations } }));
|
|
325
|
-
expect(document.querySelector('ul.pf-v6-c-menu__list')).toHaveAttribute('aria-labelledby', 'chatbot-nav-group-Today-label');
|
|
326
|
-
});
|
|
327
|
-
it('labels each menu list in a shared static menu with its group title id', () => {
|
|
328
|
-
const groups = [
|
|
329
|
-
{
|
|
330
|
-
id: 'pinned',
|
|
331
|
-
label: 'Pinned chats',
|
|
332
|
-
items: initialConversations
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
id: 'recent',
|
|
336
|
-
label: 'Recent chats',
|
|
337
|
-
items: [{ id: '2', text: 'Chatbot extension' }]
|
|
338
|
-
}
|
|
339
|
-
];
|
|
340
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: groups }));
|
|
341
|
-
expect(screen.getByRole('menu', { name: 'Pinned chats' })).toHaveAttribute('aria-labelledby', 'chatbot-nav-group-pinned-label');
|
|
342
|
-
expect(screen.getByRole('menu', { name: 'Recent chats' })).toHaveAttribute('aria-labelledby', 'chatbot-nav-group-recent-label');
|
|
343
|
-
});
|
|
344
|
-
it('does not autofocus the first menu item when an expandable group is expanded', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
345
|
-
const ExpandableGroupDemo = () => {
|
|
346
|
-
const [isExpanded, setIsExpanded] = useState(false);
|
|
347
|
-
return (_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.embedded, setIsDrawerOpen: jest.fn(), conversations: [
|
|
348
|
-
{
|
|
349
|
-
id: 'saved-prompts',
|
|
350
|
-
label: 'Saved prompts',
|
|
351
|
-
expandable: {
|
|
352
|
-
isExpanded,
|
|
353
|
-
onToggle: setIsExpanded
|
|
354
|
-
},
|
|
355
|
-
items: [
|
|
356
|
-
{ id: '7', text: 'Summarize this document' },
|
|
357
|
-
{ id: '8', text: 'Draft a release announcement' }
|
|
358
|
-
]
|
|
359
|
-
}
|
|
360
|
-
] }));
|
|
361
|
-
};
|
|
362
|
-
render(_jsx(ExpandableGroupDemo, {}));
|
|
363
|
-
fireEvent.click(screen.getByRole('button', { name: 'Saved prompts' }));
|
|
364
|
-
yield waitFor(() => {
|
|
365
|
-
expect(screen.getByRole('menuitem', { name: 'Summarize this document' })).toBeInTheDocument();
|
|
366
|
-
});
|
|
367
|
-
expect(screen.getByRole('menuitem', { name: 'Summarize this document' })).not.toHaveFocus();
|
|
368
|
-
}));
|
|
369
|
-
it('does not render a collapsed expandable group menu', () => {
|
|
370
|
-
const groups = [
|
|
371
|
-
{
|
|
372
|
-
id: 'chats',
|
|
373
|
-
label: 'Chats',
|
|
374
|
-
items: [
|
|
375
|
-
{ id: '2', text: 'Chat two' },
|
|
376
|
-
{ id: '3', text: 'Chat three' }
|
|
377
|
-
]
|
|
378
|
-
},
|
|
379
|
-
{
|
|
380
|
-
id: 'saved-prompts',
|
|
381
|
-
label: 'Saved prompts',
|
|
382
|
-
expandable: {
|
|
383
|
-
isExpanded: false,
|
|
384
|
-
onToggle: jest.fn()
|
|
385
|
-
},
|
|
386
|
-
items: [
|
|
387
|
-
{ id: '7', text: 'Summarize this document' },
|
|
388
|
-
{ id: '8', text: 'Draft a release announcement' }
|
|
389
|
-
]
|
|
390
|
-
}
|
|
391
|
-
];
|
|
392
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.embedded, setIsDrawerOpen: jest.fn(), conversations: groups }));
|
|
393
|
-
// Collapsed expandable groups render their toggle outside the menu and omit the menu
|
|
394
|
-
// entirely until expanded, so their items are not part of arrow-key navigation.
|
|
395
|
-
expect(screen.getAllByRole('menu')).toHaveLength(1);
|
|
396
|
-
expect(screen.getByRole('menu', { name: 'Chats' })).toHaveAttribute('aria-labelledby', 'chatbot-nav-group-chats-label');
|
|
397
|
-
expect(screen.queryByRole('menuitem', { name: 'Summarize this document' })).not.toBeInTheDocument();
|
|
398
|
-
expect(screen.queryByRole('menuitem', { name: 'Draft a release announcement' })).not.toBeInTheDocument();
|
|
399
|
-
const firstItem = screen.getByRole('menuitem', { name: 'Chat two' });
|
|
400
|
-
const lastItem = screen.getByRole('menuitem', { name: 'Chat three' });
|
|
401
|
-
lastItem.focus();
|
|
402
|
-
fireEvent.keyDown(lastItem, { key: 'ArrowDown' });
|
|
403
|
-
expect(firstItem).toHaveFocus();
|
|
404
|
-
});
|
|
405
|
-
it('collapses and expands a group when expandable.onToggle is called', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
406
|
-
const onToggle = jest.fn();
|
|
407
|
-
const groups = [
|
|
408
|
-
{
|
|
409
|
-
id: 'chats',
|
|
410
|
-
label: 'Chats',
|
|
411
|
-
expandable: {
|
|
412
|
-
isExpanded: true,
|
|
413
|
-
onToggle
|
|
414
|
-
},
|
|
415
|
-
items: [{ id: '2', text: 'Chatbot extension' }]
|
|
416
|
-
}
|
|
417
|
-
];
|
|
418
|
-
const { rerender } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: groups }));
|
|
419
|
-
expect(screen.getByRole('menuitem', { name: /Chatbot extension/i })).toBeInTheDocument();
|
|
420
|
-
fireEvent.click(screen.getByRole('button', { name: 'Chats' }));
|
|
421
|
-
expect(onToggle).toHaveBeenCalledWith(false);
|
|
422
|
-
rerender(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: [
|
|
423
|
-
Object.assign(Object.assign({}, groups[0]), { expandable: {
|
|
424
|
-
isExpanded: false,
|
|
425
|
-
onToggle
|
|
426
|
-
} })
|
|
427
|
-
] }));
|
|
428
|
-
yield waitFor(() => {
|
|
429
|
-
expect(screen.queryByRole('menuitem', { name: /Chatbot extension/i })).not.toBeInTheDocument();
|
|
430
|
-
});
|
|
431
|
-
}));
|
|
432
|
-
it('renders custom menu items and footers supplied in ConversationGroup', () => {
|
|
433
|
-
const groups = [
|
|
434
|
-
{
|
|
435
|
-
id: 'chats',
|
|
436
|
-
label: 'Chats',
|
|
437
|
-
items: [
|
|
438
|
-
initialConversations[0],
|
|
439
|
-
_jsx(MenuItem, { itemId: "show-all", children: "Show all" }, "show-all")
|
|
440
|
-
],
|
|
441
|
-
footer: _jsx("div", { "data-testid": "group-footer", children: "Footer content" })
|
|
442
|
-
}
|
|
443
|
-
];
|
|
444
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: groups }));
|
|
445
|
-
expect(screen.getByRole('menuitem', { name: 'Show all' })).toBeInTheDocument();
|
|
446
|
-
expect(screen.getByTestId('group-footer')).toBeInTheDocument();
|
|
447
|
-
});
|
|
448
|
-
it('moves focus to the first overflow item when show all is expanded', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
449
|
-
const recentChats = [
|
|
450
|
-
{ id: '2', text: 'Chat two' },
|
|
451
|
-
{ id: '3', text: 'Chat three' },
|
|
452
|
-
{ id: '4', text: 'Chat four' },
|
|
453
|
-
{ id: '5', text: 'Chat five' },
|
|
454
|
-
{ id: '6', text: 'Chat six' }
|
|
455
|
-
];
|
|
456
|
-
const VISIBLE_CHAT_COUNT = 3;
|
|
457
|
-
const ShowAllDemo = () => {
|
|
458
|
-
const [isShowingAllChats, setIsShowingAllChats] = useState(false);
|
|
459
|
-
return (_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.embedded, setIsDrawerOpen: jest.fn(), conversations: [
|
|
460
|
-
{
|
|
461
|
-
id: 'chats',
|
|
462
|
-
label: 'Chats',
|
|
463
|
-
items: recentChats,
|
|
464
|
-
showAll: {
|
|
465
|
-
visibleCount: VISIBLE_CHAT_COUNT,
|
|
466
|
-
isExpanded: isShowingAllChats,
|
|
467
|
-
onToggle: setIsShowingAllChats
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
] }));
|
|
471
|
-
};
|
|
472
|
-
render(_jsx(ShowAllDemo, {}));
|
|
473
|
-
fireEvent.click(screen.getByRole('menuitem', { name: /Show all/i }));
|
|
474
|
-
yield waitFor(() => {
|
|
475
|
-
expect(screen.getByRole('menuitem', { name: 'Chat five' })).toHaveFocus();
|
|
476
|
-
});
|
|
477
|
-
}));
|
|
478
|
-
it('keeps focus on the toggle when show all is collapsed', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
479
|
-
const recentChats = [
|
|
480
|
-
{ id: '2', text: 'Chat two' },
|
|
481
|
-
{ id: '3', text: 'Chat three' },
|
|
482
|
-
{ id: '4', text: 'Chat four' },
|
|
483
|
-
{ id: '5', text: 'Chat five' }
|
|
484
|
-
];
|
|
485
|
-
const ShowAllDemo = () => {
|
|
486
|
-
const [isShowingAllChats, setIsShowingAllChats] = useState(true);
|
|
487
|
-
return (_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.embedded, setIsDrawerOpen: jest.fn(), conversations: [
|
|
488
|
-
{
|
|
489
|
-
id: 'chats',
|
|
490
|
-
label: 'Chats',
|
|
491
|
-
items: recentChats,
|
|
492
|
-
showAll: {
|
|
493
|
-
visibleCount: 2,
|
|
494
|
-
isExpanded: isShowingAllChats,
|
|
495
|
-
onToggle: setIsShowingAllChats
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
] }));
|
|
499
|
-
};
|
|
500
|
-
render(_jsx(ShowAllDemo, {}));
|
|
501
|
-
fireEvent.click(screen.getByRole('menuitem', { name: 'Show less' }));
|
|
502
|
-
yield waitFor(() => {
|
|
503
|
-
expect(screen.getByRole('menuitem', { name: /Show all/i })).toHaveFocus();
|
|
504
|
-
});
|
|
505
|
-
}));
|
|
506
|
-
it('renders overflow items above the show all toggle so it stays in a fixed position', () => {
|
|
507
|
-
const recentChats = [
|
|
508
|
-
{ id: '2', text: 'Chat two' },
|
|
509
|
-
{ id: '3', text: 'Chat three' },
|
|
510
|
-
{ id: '4', text: 'Chat four' }
|
|
511
|
-
];
|
|
512
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.embedded, setIsDrawerOpen: jest.fn(), conversations: [
|
|
513
|
-
{
|
|
514
|
-
id: 'chats',
|
|
515
|
-
label: 'Chats',
|
|
516
|
-
items: recentChats,
|
|
517
|
-
showAll: {
|
|
518
|
-
visibleCount: 1,
|
|
519
|
-
isExpanded: true,
|
|
520
|
-
onToggle: jest.fn()
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
] }));
|
|
524
|
-
const overflowItem = screen.getByRole('menuitem', { name: 'Chat four' });
|
|
525
|
-
const toggle = screen.getByRole('menuitem', { name: 'Show less' });
|
|
526
|
-
const isToggleAfterOverflowItem = Boolean(
|
|
527
|
-
// eslint-disable-next-line no-bitwise
|
|
528
|
-
overflowItem.compareDocumentPosition(toggle) & Node.DOCUMENT_POSITION_FOLLOWING);
|
|
529
|
-
expect(isToggleAfterOverflowItem).toBe(true);
|
|
530
|
-
});
|
|
531
|
-
it('allows arrow key navigation to flow through the show all toggle like any other menu item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
532
|
-
const recentChats = [
|
|
533
|
-
{ id: '2', text: 'Chat two' },
|
|
534
|
-
{ id: '3', text: 'Chat three' },
|
|
535
|
-
{ id: '4', text: 'Chat four' }
|
|
536
|
-
];
|
|
537
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.embedded, setIsDrawerOpen: jest.fn(), conversations: [
|
|
538
|
-
{
|
|
539
|
-
id: 'chats',
|
|
540
|
-
label: 'Chats',
|
|
541
|
-
items: recentChats,
|
|
542
|
-
showAll: {
|
|
543
|
-
visibleCount: 2,
|
|
544
|
-
isExpanded: false,
|
|
545
|
-
onToggle: jest.fn()
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
] }));
|
|
549
|
-
const lastVisibleItem = screen.getByRole('menuitem', { name: 'Chat three' });
|
|
550
|
-
const toggle = screen.getByRole('menuitem', { name: /Show all/i });
|
|
551
|
-
lastVisibleItem.focus();
|
|
552
|
-
fireEvent.keyDown(lastVisibleItem, { key: 'ArrowDown' });
|
|
553
|
-
yield waitFor(() => {
|
|
554
|
-
expect(toggle).toHaveFocus();
|
|
555
|
-
});
|
|
556
|
-
fireEvent.keyDown(toggle, { key: 'ArrowUp' });
|
|
557
|
-
yield waitFor(() => {
|
|
558
|
-
expect(lastVisibleItem).toHaveFocus();
|
|
559
|
-
});
|
|
560
|
-
}));
|
|
561
|
-
it('preserves custom menu item identity when preceding items change', () => {
|
|
562
|
-
const renderShowAll = () => (_jsx(MenuItem, { itemId: "show-all-chats", children: "Show all" }, "show-all-chats"));
|
|
563
|
-
const { rerender } = render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: [
|
|
564
|
-
{
|
|
565
|
-
id: 'chats',
|
|
566
|
-
label: 'Chats',
|
|
567
|
-
items: [initialConversations[0], renderShowAll()]
|
|
568
|
-
}
|
|
569
|
-
] }));
|
|
570
|
-
const showAllBefore = screen.getByRole('menuitem', { name: 'Show all' });
|
|
571
|
-
rerender(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: [
|
|
572
|
-
{
|
|
573
|
-
id: 'chats',
|
|
574
|
-
label: 'Chats',
|
|
575
|
-
items: [initialConversations[0], initialConversations[1], initialConversations[2], renderShowAll()]
|
|
576
|
-
}
|
|
577
|
-
] }));
|
|
578
|
-
expect(screen.getByRole('menuitem', { name: 'Show all' })).toBe(showAllBefore);
|
|
579
|
-
});
|
|
580
|
-
it('passes expandableSectionProps from expandable ConversationGroup', () => {
|
|
581
|
-
const groups = [
|
|
582
|
-
{
|
|
583
|
-
id: 'saved',
|
|
584
|
-
label: 'Saved prompts',
|
|
585
|
-
expandable: {
|
|
586
|
-
isExpanded: true,
|
|
587
|
-
onToggle: jest.fn(),
|
|
588
|
-
expandableSectionProps: { className: 'test-expandable-section' }
|
|
589
|
-
},
|
|
590
|
-
items: initialConversations
|
|
591
|
-
}
|
|
592
|
-
];
|
|
593
|
-
render(_jsx(ChatbotConversationHistoryNav, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: groups }));
|
|
594
|
-
expect(document.querySelector('.test-expandable-section')).toBeInTheDocument();
|
|
595
|
-
});
|
|
596
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import ChatbotFooter from './ChatbotFooter';
|
|
4
|
-
import '@testing-library/jest-dom';
|
|
5
|
-
describe('ChatbotFooter', () => {
|
|
6
|
-
it('should render ChatbotFooter with children', () => {
|
|
7
|
-
render(_jsx(ChatbotFooter, { children: "Chatbot Content" }));
|
|
8
|
-
expect(screen.getByText('Chatbot Content')).toBeTruthy();
|
|
9
|
-
});
|
|
10
|
-
it('should render ChatbotFooter with custom classname', () => {
|
|
11
|
-
const { container } = render(_jsx(ChatbotFooter, { className: "custom-class", children: "Chatbot Content" }));
|
|
12
|
-
expect(container.querySelector('.custom-class')).toBeTruthy();
|
|
13
|
-
});
|
|
14
|
-
it('should handle isCompact', () => {
|
|
15
|
-
render(_jsx(ChatbotFooter, { isCompact: true, "data-testid": "footer", children: "Chatbot Content" }));
|
|
16
|
-
expect(screen.getByTestId('footer')).toHaveClass('pf-m-compact');
|
|
17
|
-
});
|
|
18
|
-
it('should handle isPrimary', () => {
|
|
19
|
-
render(_jsx(ChatbotFooter, { isPrimary: true, "data-testid": "footer", children: "Chatbot Content" }));
|
|
20
|
-
expect(screen.getByTestId('footer')).toHaveClass('pf-m-primary');
|
|
21
|
-
});
|
|
22
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|