@patternfly/chatbot 2.2.0-prerelease.4 → 2.2.0-prerelease.41
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/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +52 -0
- package/dist/cjs/Chatbot/Chatbot.d.ts +2 -1
- package/dist/cjs/Chatbot/Chatbot.js +1 -0
- package/dist/cjs/Chatbot/Chatbot.test.d.ts +1 -0
- package/dist/cjs/Chatbot/Chatbot.test.js +28 -0
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +27 -0
- package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +1 -0
- package/dist/cjs/ChatbotContent/ChatbotContent.test.js +18 -0
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +3 -3
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +27 -4
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +24 -12
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +99 -3
- package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
- package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.js +29 -0
- package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
- package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.js +45 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +18 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +87 -0
- package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +1 -1
- package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +18 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +18 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +17 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +16 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +20 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +18 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +4 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +20 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +43 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +6 -4
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +41 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +3 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +4 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +55 -0
- package/dist/cjs/ChatbotHeader/index.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/index.js +1 -0
- package/dist/cjs/ChatbotToggle/ChatbotToggle.js +3 -1
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +19 -11
- package/dist/cjs/CodeModal/CodeModal.js +2 -12
- package/dist/cjs/Compare/Compare.d.ts +17 -0
- package/dist/cjs/Compare/Compare.js +50 -0
- package/dist/cjs/Compare/Compare.test.d.ts +1 -0
- package/dist/cjs/Compare/Compare.test.js +20 -0
- package/dist/cjs/Compare/index.d.ts +2 -0
- package/dist/cjs/Compare/index.js +23 -0
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +4 -0
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +26 -0
- package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +4 -0
- package/dist/cjs/Message/ImageMessage/ImageMessage.js +25 -0
- package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +4 -0
- package/dist/cjs/Message/LinkMessage/LinkMessage.js +30 -0
- package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +1 -1
- package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -2
- package/dist/cjs/Message/Message.d.ts +51 -8
- package/dist/cjs/Message/Message.js +70 -18
- package/dist/cjs/Message/Message.test.js +296 -3
- package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +17 -0
- package/dist/cjs/Message/QuickResponse/QuickResponse.js +34 -0
- package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +13 -0
- package/dist/cjs/Message/QuickStarts/FallbackImg.js +34 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +27 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTile.js +82 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +64 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +76 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +30 -0
- package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
- package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +77 -0
- package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
- package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.js +77 -0
- package/dist/cjs/Message/QuickStarts/types.d.ts +132 -0
- package/dist/cjs/Message/QuickStarts/types.js +17 -0
- package/dist/cjs/Message/TableMessage/TableMessage.d.ts +20 -0
- package/dist/cjs/Message/TableMessage/TableMessage.js +67 -0
- package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +7 -0
- package/dist/cjs/Message/TableMessage/TbodyMessage.js +33 -0
- package/dist/cjs/Message/TableMessage/TdMessage.d.ts +5 -0
- package/dist/cjs/Message/TableMessage/TdMessage.js +26 -0
- package/dist/cjs/Message/TableMessage/ThMessage.d.ts +5 -0
- package/dist/cjs/Message/TableMessage/ThMessage.js +26 -0
- package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +5 -0
- package/dist/cjs/Message/TableMessage/TheadMessage.js +26 -0
- package/dist/cjs/Message/TableMessage/TrMessage.d.ts +7 -0
- package/dist/cjs/Message/TableMessage/TrMessage.js +37 -0
- package/dist/cjs/Message/TextMessage/TextMessage.d.ts +2 -1
- package/dist/cjs/Message/TextMessage/TextMessage.js +2 -2
- package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +10 -0
- package/dist/cjs/Message/UserFeedback/CloseButton.js +14 -0
- package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +39 -0
- package/dist/cjs/Message/UserFeedback/UserFeedback.js +54 -0
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +133 -0
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +117 -0
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +249 -0
- package/dist/cjs/MessageBar/AttachButton.js +4 -2
- package/dist/cjs/MessageBar/MessageBar.d.ts +11 -4
- package/dist/cjs/MessageBar/MessageBar.js +127 -46
- package/dist/cjs/MessageBar/MessageBar.test.js +12 -4
- package/dist/cjs/MessageBar/MicrophoneButton.d.ts +1 -1
- package/dist/cjs/MessageBar/SendButton.js +3 -1
- package/dist/cjs/MessageBar/StopButton.js +3 -1
- package/dist/cjs/MessageBox/MessageBox.test.d.ts +1 -0
- package/dist/cjs/MessageBox/MessageBox.test.js +22 -0
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +28 -0
- package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +10 -1
- package/dist/cjs/ResponseActions/ResponseActionButton.js +28 -5
- package/dist/cjs/ResponseActions/ResponseActionButton.test.d.ts +1 -0
- package/dist/cjs/ResponseActions/ResponseActionButton.test.js +54 -0
- package/dist/cjs/ResponseActions/ResponseActions.d.ts +12 -2
- package/dist/cjs/ResponseActions/ResponseActions.js +26 -9
- package/dist/cjs/ResponseActions/ResponseActions.test.js +79 -5
- package/dist/cjs/Settings/SettingsForm.d.ts +13 -0
- package/dist/cjs/Settings/SettingsForm.js +27 -0
- package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -0
- package/dist/cjs/Settings/SettingsForm.test.js +26 -0
- package/dist/cjs/Settings/index.d.ts +2 -0
- package/dist/cjs/Settings/index.js +23 -0
- package/dist/cjs/SourcesCard/SourcesCard.d.ts +1 -0
- package/dist/cjs/SourcesCard/SourcesCard.js +2 -1
- package/dist/cjs/SourcesCard/SourcesCard.test.js +0 -4
- package/dist/cjs/__mocks__/rehype-external-links.d.ts +2 -0
- package/dist/cjs/__mocks__/rehype-external-links.js +4 -0
- package/dist/cjs/__mocks__/rehype-sanitize.d.ts +2 -0
- package/dist/cjs/__mocks__/rehype-sanitize.js +4 -0
- package/dist/cjs/__mocks__/rehype-unwrap-images.d.ts +2 -0
- package/dist/cjs/__mocks__/rehype-unwrap-images.js +4 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +10 -1
- package/dist/cjs/tracking/console_tracking_provider.d.ts +10 -0
- package/dist/cjs/tracking/console_tracking_provider.js +27 -0
- package/dist/cjs/tracking/index.d.ts +2 -0
- package/dist/cjs/tracking/index.js +23 -0
- package/dist/cjs/tracking/posthog_tracking_provider.d.ts +9 -0
- package/dist/cjs/tracking/posthog_tracking_provider.js +37 -0
- package/dist/cjs/tracking/segment_tracking_provider.d.ts +10 -0
- package/dist/cjs/tracking/segment_tracking_provider.js +50 -0
- package/dist/cjs/tracking/trackingProviderProxy.d.ts +9 -0
- package/dist/cjs/tracking/trackingProviderProxy.js +24 -0
- package/dist/cjs/tracking/tracking_api.d.ts +8 -0
- package/dist/cjs/tracking/tracking_api.js +2 -0
- package/dist/cjs/tracking/tracking_registry.d.ts +4 -0
- package/dist/cjs/tracking/tracking_registry.js +33 -0
- package/dist/cjs/tracking/tracking_spi.d.ts +9 -0
- package/dist/cjs/tracking/tracking_spi.js +2 -0
- package/dist/cjs/tracking/umami_tracking_provider.d.ts +14 -0
- package/dist/cjs/tracking/umami_tracking_provider.js +44 -0
- package/dist/css/main.css +486 -145
- package/dist/css/main.css.map +1 -1
- package/dist/dynamic/Compare/package.json +1 -0
- package/dist/dynamic/Settings/package.json +1 -0
- package/dist/dynamic/tracking/package.json +1 -0
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +47 -0
- package/dist/esm/Chatbot/Chatbot.d.ts +2 -1
- package/dist/esm/Chatbot/Chatbot.js +1 -0
- package/dist/esm/Chatbot/Chatbot.test.d.ts +1 -0
- package/dist/esm/Chatbot/Chatbot.test.js +23 -0
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +22 -0
- package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +1 -0
- package/dist/esm/ChatbotContent/ChatbotContent.test.js +13 -0
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +3 -3
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +27 -4
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +24 -12
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +99 -3
- package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
- package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +22 -0
- package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
- package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +38 -0
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +13 -0
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +82 -0
- package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +1 -1
- package/dist/esm/ChatbotFooter/ChatbotFootnote.js +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +13 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +13 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +17 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +10 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +15 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +13 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +4 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +15 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +38 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +6 -4
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +36 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +3 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +4 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +50 -0
- package/dist/esm/ChatbotHeader/index.d.ts +1 -0
- package/dist/esm/ChatbotHeader/index.js +1 -0
- package/dist/esm/ChatbotToggle/ChatbotToggle.js +3 -1
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +19 -11
- package/dist/esm/CodeModal/CodeModal.js +2 -12
- package/dist/esm/Compare/Compare.d.ts +17 -0
- package/dist/esm/Compare/Compare.js +43 -0
- package/dist/esm/Compare/Compare.test.d.ts +1 -0
- package/dist/esm/Compare/Compare.test.js +15 -0
- package/dist/esm/Compare/index.d.ts +2 -0
- package/dist/esm/Compare/index.js +2 -0
- package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +4 -0
- package/dist/esm/Message/ErrorMessage/ErrorMessage.js +21 -0
- package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +4 -0
- package/dist/esm/Message/ImageMessage/ImageMessage.js +20 -0
- package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +4 -0
- package/dist/esm/Message/LinkMessage/LinkMessage.js +25 -0
- package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +1 -1
- package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -2
- package/dist/esm/Message/Message.d.ts +51 -8
- package/dist/esm/Message/Message.js +68 -16
- package/dist/esm/Message/Message.test.js +296 -3
- package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +17 -0
- package/dist/esm/Message/QuickResponse/QuickResponse.js +27 -0
- package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +13 -0
- package/dist/esm/Message/QuickStarts/FallbackImg.js +9 -0
- package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +27 -0
- package/dist/esm/Message/QuickStarts/QuickStartTile.js +52 -0
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +35 -0
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +48 -0
- package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
- package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +5 -0
- package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
- package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +74 -0
- package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
- package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.js +74 -0
- package/dist/esm/Message/QuickStarts/types.d.ts +132 -0
- package/dist/esm/Message/QuickStarts/types.js +14 -0
- package/dist/esm/Message/TableMessage/TableMessage.d.ts +20 -0
- package/dist/esm/Message/TableMessage/TableMessage.js +62 -0
- package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +7 -0
- package/dist/esm/Message/TableMessage/TbodyMessage.js +28 -0
- package/dist/esm/Message/TableMessage/TdMessage.d.ts +5 -0
- package/dist/esm/Message/TableMessage/TdMessage.js +21 -0
- package/dist/esm/Message/TableMessage/ThMessage.d.ts +5 -0
- package/dist/esm/Message/TableMessage/ThMessage.js +21 -0
- package/dist/esm/Message/TableMessage/TheadMessage.d.ts +5 -0
- package/dist/esm/Message/TableMessage/TheadMessage.js +21 -0
- package/dist/esm/Message/TableMessage/TrMessage.d.ts +7 -0
- package/dist/esm/Message/TableMessage/TrMessage.js +32 -0
- package/dist/esm/Message/TextMessage/TextMessage.d.ts +2 -1
- package/dist/esm/Message/TextMessage/TextMessage.js +3 -3
- package/dist/esm/Message/UserFeedback/CloseButton.d.ts +10 -0
- package/dist/esm/Message/UserFeedback/CloseButton.js +9 -0
- package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +39 -0
- package/dist/esm/Message/UserFeedback/UserFeedback.js +49 -0
- package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
- package/dist/esm/Message/UserFeedback/UserFeedback.test.js +128 -0
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +112 -0
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +244 -0
- package/dist/esm/MessageBar/AttachButton.js +4 -2
- package/dist/esm/MessageBar/MessageBar.d.ts +11 -4
- package/dist/esm/MessageBar/MessageBar.js +127 -46
- package/dist/esm/MessageBar/MessageBar.test.js +12 -4
- package/dist/esm/MessageBar/MicrophoneButton.d.ts +1 -1
- package/dist/esm/MessageBar/SendButton.js +3 -1
- package/dist/esm/MessageBar/StopButton.js +3 -1
- package/dist/esm/MessageBox/MessageBox.test.d.ts +1 -0
- package/dist/esm/MessageBox/MessageBox.test.js +17 -0
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +23 -0
- package/dist/esm/ResponseActions/ResponseActionButton.d.ts +10 -1
- package/dist/esm/ResponseActions/ResponseActionButton.js +25 -2
- package/dist/esm/ResponseActions/ResponseActionButton.test.d.ts +1 -0
- package/dist/esm/ResponseActions/ResponseActionButton.test.js +49 -0
- package/dist/esm/ResponseActions/ResponseActions.d.ts +12 -2
- package/dist/esm/ResponseActions/ResponseActions.js +26 -9
- package/dist/esm/ResponseActions/ResponseActions.test.js +79 -5
- package/dist/esm/Settings/SettingsForm.d.ts +13 -0
- package/dist/esm/Settings/SettingsForm.js +20 -0
- package/dist/esm/Settings/SettingsForm.test.d.ts +1 -0
- package/dist/esm/Settings/SettingsForm.test.js +21 -0
- package/dist/esm/Settings/index.d.ts +2 -0
- package/dist/esm/Settings/index.js +2 -0
- package/dist/esm/SourcesCard/SourcesCard.d.ts +1 -0
- package/dist/esm/SourcesCard/SourcesCard.js +2 -1
- package/dist/esm/SourcesCard/SourcesCard.test.js +0 -4
- package/dist/esm/__mocks__/rehype-external-links.d.ts +2 -0
- package/dist/esm/__mocks__/rehype-external-links.js +2 -0
- package/dist/esm/__mocks__/rehype-sanitize.d.ts +2 -0
- package/dist/esm/__mocks__/rehype-sanitize.js +2 -0
- package/dist/esm/__mocks__/rehype-unwrap-images.d.ts +2 -0
- package/dist/esm/__mocks__/rehype-unwrap-images.js +2 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/tracking/console_tracking_provider.d.ts +10 -0
- package/dist/esm/tracking/console_tracking_provider.js +23 -0
- package/dist/esm/tracking/index.d.ts +2 -0
- package/dist/esm/tracking/index.js +2 -0
- package/dist/esm/tracking/posthog_tracking_provider.d.ts +9 -0
- package/dist/esm/tracking/posthog_tracking_provider.js +33 -0
- package/dist/esm/tracking/segment_tracking_provider.d.ts +10 -0
- package/dist/esm/tracking/segment_tracking_provider.js +46 -0
- package/dist/esm/tracking/trackingProviderProxy.d.ts +9 -0
- package/dist/esm/tracking/trackingProviderProxy.js +22 -0
- package/dist/esm/tracking/tracking_api.d.ts +8 -0
- package/dist/esm/tracking/tracking_api.js +1 -0
- package/dist/esm/tracking/tracking_registry.d.ts +4 -0
- package/dist/esm/tracking/tracking_registry.js +26 -0
- package/dist/esm/tracking/tracking_spi.d.ts +9 -0
- package/dist/esm/tracking/tracking_spi.js +1 -0
- package/dist/esm/tracking/umami_tracking_provider.d.ts +14 -0
- package/dist/esm/tracking/umami_tracking_provider.js +40 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -13
- package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +8 -2
- package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +192 -15
- package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +219 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +214 -12
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +2 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +5 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +71 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +27 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +11 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +31 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +18 -10
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +76 -11
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +244 -14
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +54 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/explore-pipeline-quickstart.ts +65 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +5 -5
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +36 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +67 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +94 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +7 -7
- package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +289 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +35 -6
- package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +14 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +41 -3
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +48 -35
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +21 -20
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +453 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +11 -11
- package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +206 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +104 -0
- package/patternfly-docs/content/extensions/chatbot/img/ai-action-inpage.svg +85 -0
- package/patternfly-docs/content/extensions/chatbot/img/ai-action-message.svg +63 -0
- package/patternfly-docs/content/extensions/chatbot/img/analytics-example.svg +127 -0
- package/patternfly-docs/content/extensions/chatbot/img/attached-file.svg +24 -29
- package/patternfly-docs/content/extensions/chatbot/img/attachment-menu.svg +4 -4
- package/patternfly-docs/content/extensions/chatbot/img/attachment-unsent.svg +30 -58
- package/patternfly-docs/content/extensions/chatbot/img/chatbot-analytics.svg +51 -0
- package/patternfly-docs/content/extensions/chatbot/img/chatbot-elements.svg +11 -12
- package/patternfly-docs/content/extensions/chatbot/img/chatbot-quickstarts-tile.svg +58 -0
- package/patternfly-docs/content/extensions/chatbot/img/chatbot-settings.svg +83 -0
- package/patternfly-docs/content/extensions/chatbot/img/comparison.svg +45 -0
- package/patternfly-docs/content/extensions/chatbot/img/conversation-history.svg +6 -29
- package/patternfly-docs/content/extensions/chatbot/img/docked.svg +259 -241
- package/patternfly-docs/content/extensions/chatbot/img/drawer.svg +255 -0
- package/patternfly-docs/content/extensions/chatbot/img/error-state.svg +30 -0
- package/patternfly-docs/content/extensions/chatbot/img/feedback-form.svg +88 -0
- package/patternfly-docs/content/extensions/chatbot/img/footnote.svg +1 -1
- package/patternfly-docs/content/extensions/chatbot/img/fullscreen.svg +25 -16
- package/patternfly-docs/content/extensions/chatbot/img/listening-pulse.svg +22 -0
- package/patternfly-docs/content/extensions/chatbot/img/listening.svg +1 -1
- package/patternfly-docs/content/extensions/chatbot/img/loading-state.svg +28 -0
- package/patternfly-docs/content/extensions/chatbot/img/masthead-toggle-notification.svg +49 -0
- package/patternfly-docs/content/extensions/chatbot/img/masthead-toggle.svg +75 -0
- package/patternfly-docs/content/extensions/chatbot/img/message-bar-elements.svg +3 -3
- package/patternfly-docs/content/extensions/chatbot/img/message-elements.svg +84 -142
- package/patternfly-docs/content/extensions/chatbot/img/message-feedback.svg +52 -0
- package/patternfly-docs/content/extensions/chatbot/img/message-responses.svg +54 -0
- package/patternfly-docs/content/extensions/chatbot/img/new-chat-emptystate.svg +27 -0
- package/patternfly-docs/content/extensions/chatbot/img/no-results-emptystate.svg +27 -0
- package/patternfly-docs/content/extensions/chatbot/img/overlay.svg +54 -39
- package/patternfly-docs/content/extensions/chatbot/img/posthog.svg +30 -0
- package/patternfly-docs/content/extensions/chatbot/img/segment.svg +36 -0
- package/patternfly-docs/content/extensions/chatbot/img/settings-menu.svg +122 -0
- package/patternfly-docs/content/extensions/chatbot/img/source-tile.svg +62 -0
- package/patternfly-docs/content/extensions/chatbot/img/thank-you-card.svg +81 -0
- package/patternfly-docs/content/extensions/chatbot/img/toggle-customizations.svg +12 -0
- package/patternfly-docs/content/extensions/chatbot/img/toggle-tooltips.svg +38 -0
- package/patternfly-docs/content/extensions/chatbot/img/umami.svg +30 -0
- package/patternfly-docs/content/extensions/chatbot/img/welcome-elements.svg +82 -0
- package/patternfly-docs/content/extensions/chatbot/img/welcome-message.svg +94 -0
- package/src/AttachMenu/AttachMenu.scss +1 -1
- package/src/AttachmentEdit/AttachmentEdit.test.tsx +55 -0
- package/src/Chatbot/Chatbot.scss +20 -1
- package/src/Chatbot/Chatbot.test.tsx +31 -0
- package/src/Chatbot/Chatbot.tsx +2 -1
- package/src/ChatbotAlert/ChatbotAlert.test.tsx +31 -0
- package/src/ChatbotContent/ChatbotContent.scss +1 -0
- package/src/ChatbotContent/ChatbotContent.test.tsx +15 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +10 -4
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +24 -1
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +242 -3
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +94 -26
- package/src/ChatbotConversationHistoryNav/EmptyState.tsx +44 -0
- package/src/ChatbotConversationHistoryNav/LoadingState.tsx +38 -0
- package/src/ChatbotFooter/ChatbotFooter.scss +8 -4
- package/src/ChatbotFooter/ChatbotFooter.test.tsx +15 -0
- package/src/ChatbotFooter/ChatbotFooternote.test.tsx +84 -0
- package/src/ChatbotFooter/ChatbotFootnote.tsx +2 -2
- package/src/ChatbotHeader/ChatbotHeader.scss +5 -6
- package/src/ChatbotHeader/ChatbotHeader.test.tsx +15 -0
- package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +17 -0
- package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +20 -0
- package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +57 -0
- package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +17 -0
- package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +19 -0
- package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +11 -2
- package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +45 -0
- package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +8 -1
- package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +43 -0
- package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +11 -4
- package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +75 -0
- package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +7 -2
- package/src/ChatbotHeader/index.ts +1 -0
- package/src/ChatbotModal/ChatbotModal.scss +12 -12
- package/src/ChatbotToggle/ChatbotToggle.tsx +6 -1
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.scss +2 -0
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +26 -18
- package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +2 -2
- package/src/CodeModal/CodeModal.scss +14 -3
- package/src/CodeModal/CodeModal.tsx +2 -13
- package/src/Compare/Compare.scss +72 -0
- package/src/Compare/Compare.test.tsx +31 -0
- package/src/Compare/Compare.tsx +98 -0
- package/src/Compare/index.ts +2 -0
- package/src/FileDetails/FileDetails.scss +1 -1
- package/src/FileDetailsLabel/FileDetailsLabel.scss +2 -2
- package/src/FileDropZone/__snapshots__/FileDropZone.test.tsx.snap +2 -1
- package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +4 -4
- package/src/Message/ErrorMessage/ErrorMessage.tsx +14 -0
- package/src/Message/ImageMessage/ImageMessage.scss +9 -0
- package/src/Message/ImageMessage/ImageMessage.tsx +14 -0
- package/src/Message/LinkMessage/LinkMessage.tsx +34 -0
- package/src/Message/ListMessage/ListMessage.scss +6 -6
- package/src/Message/ListMessage/OrderedListMessage.tsx +2 -2
- package/src/Message/Message.scss +4 -26
- package/src/Message/Message.test.tsx +403 -3
- package/src/Message/Message.tsx +161 -31
- package/src/Message/MessageLoading.scss +2 -2
- package/src/Message/QuickResponse/QuickResponse.scss +33 -0
- package/src/Message/QuickResponse/QuickResponse.tsx +54 -0
- package/src/Message/QuickStarts/FallbackImg.tsx +24 -0
- package/src/Message/QuickStarts/QuickStartTile.scss +24 -0
- package/src/Message/QuickStarts/QuickStartTile.tsx +147 -0
- package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +57 -0
- package/src/Message/QuickStarts/QuickStartTileDescription.tsx +81 -0
- package/src/Message/QuickStarts/QuickStartTileHeader.tsx +21 -0
- package/src/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.ts +75 -0
- package/src/Message/QuickStarts/monitor-sampleapp-quickstart.ts +75 -0
- package/src/Message/QuickStarts/types.ts +154 -0
- package/src/Message/TableMessage/TableMessage.scss +23 -0
- package/src/Message/TableMessage/TableMessage.tsx +83 -0
- package/src/Message/TableMessage/TbodyMessage.tsx +20 -0
- package/src/Message/TableMessage/TdMessage.tsx +11 -0
- package/src/Message/TableMessage/ThMessage.tsx +11 -0
- package/src/Message/TableMessage/TheadMessage.tsx +11 -0
- package/src/Message/TableMessage/TrMessage.tsx +27 -0
- package/src/Message/TextMessage/TextMessage.scss +21 -12
- package/src/Message/TextMessage/TextMessage.tsx +3 -3
- package/src/Message/UserFeedback/CloseButton.tsx +21 -0
- package/src/Message/UserFeedback/UserFeedback.scss +53 -0
- package/src/Message/UserFeedback/UserFeedback.test.tsx +236 -0
- package/src/Message/UserFeedback/UserFeedback.tsx +128 -0
- package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +255 -0
- package/src/Message/UserFeedback/UserFeedbackComplete.tsx +211 -0
- package/src/MessageBar/AttachButton.scss +19 -3
- package/src/MessageBar/AttachButton.tsx +3 -1
- package/src/MessageBar/MessageBar.scss +58 -24
- package/src/MessageBar/MessageBar.test.tsx +12 -4
- package/src/MessageBar/MessageBar.tsx +164 -65
- package/src/MessageBar/MicrophoneButton.scss +8 -8
- package/src/MessageBar/MicrophoneButton.tsx +1 -1
- package/src/MessageBar/SendButton.tsx +2 -0
- package/src/MessageBar/StopButton.scss +17 -3
- package/src/MessageBar/StopButton.tsx +2 -0
- package/src/MessageBox/JumpButton.scss +6 -6
- package/src/MessageBox/MessageBox.scss +1 -0
- package/src/MessageBox/MessageBox.test.tsx +26 -0
- package/src/PreviewAttachment/PreviewAttachment.test.tsx +51 -0
- package/src/ResponseActions/ResponseActionButton.test.tsx +52 -0
- package/src/ResponseActions/ResponseActionButton.tsx +59 -28
- package/src/ResponseActions/ResponseActions.scss +11 -9
- package/src/ResponseActions/ResponseActions.test.tsx +105 -5
- package/src/ResponseActions/ResponseActions.tsx +80 -9
- package/src/Settings/Settings.scss +34 -0
- package/src/Settings/SettingsForm.test.tsx +28 -0
- package/src/Settings/SettingsForm.tsx +25 -0
- package/src/Settings/index.ts +3 -0
- package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.scss +2 -2
- package/src/SourcesCard/SourcesCard.scss +9 -3
- package/src/SourcesCard/SourcesCard.test.tsx +0 -5
- package/src/SourcesCard/SourcesCard.tsx +14 -2
- package/src/TermsOfUse/TermsOfUse.scss +1 -1
- package/src/__mocks__/rehype-external-links.ts +3 -0
- package/src/__mocks__/rehype-sanitize.ts +3 -0
- package/src/__mocks__/rehype-unwrap-images.tsx +3 -0
- package/src/index.ts +9 -0
- package/src/main.scss +7 -6
- package/src/tracking/console_tracking_provider.ts +30 -0
- package/src/tracking/index.ts +3 -0
- package/src/tracking/posthog_tracking_provider.ts +42 -0
- package/src/tracking/segment_tracking_provider.ts +62 -0
- package/src/tracking/trackingProviderProxy.ts +28 -0
- package/src/tracking/tracking_api.ts +11 -0
- package/src/tracking/tracking_registry.ts +33 -0
- package/src/tracking/tracking_spi.ts +14 -0
- package/src/tracking/umami_tracking_provider.ts +54 -0
- package/src/SourcesCard/__snapshots__/SourcesCard.test.tsx.snap +0 -34
@@ -4,6 +4,37 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react';
|
|
4
4
|
|
5
5
|
import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
|
6
6
|
import ChatbotConversationHistoryNav, { Conversation } from './ChatbotConversationHistoryNav';
|
7
|
+
import { EmptyStateStatus, Spinner } from '@patternfly/react-core';
|
8
|
+
|
9
|
+
const ERROR = {
|
10
|
+
bodyText: (
|
11
|
+
<>
|
12
|
+
To try again, check your connection and reload this page. If the issue persists,{' '}
|
13
|
+
<a href="">contact the support team</a>.
|
14
|
+
</>
|
15
|
+
),
|
16
|
+
buttonText: 'Reload',
|
17
|
+
buttonIcon: <Spinner size="sm" />,
|
18
|
+
hasButton: true,
|
19
|
+
titleText: 'Could not load chat history',
|
20
|
+
status: EmptyStateStatus.danger,
|
21
|
+
onClick: () => alert('Clicked Reload')
|
22
|
+
};
|
23
|
+
|
24
|
+
const ERROR_WITHOUT_BUTTON = {
|
25
|
+
bodyText: (
|
26
|
+
<>
|
27
|
+
To try again, check your connection and reload this page. If the issue persists,{' '}
|
28
|
+
<a href="">contact the support team</a>.
|
29
|
+
</>
|
30
|
+
),
|
31
|
+
buttonText: 'Reload',
|
32
|
+
buttonIcon: <Spinner size="sm" />,
|
33
|
+
hasButton: false,
|
34
|
+
titleText: 'Could not load chat history',
|
35
|
+
status: EmptyStateStatus.danger,
|
36
|
+
onClick: () => alert('Clicked Reload')
|
37
|
+
};
|
7
38
|
|
8
39
|
describe('ChatbotConversationHistoryNav', () => {
|
9
40
|
const onDrawerToggle = jest.fn();
|
@@ -11,7 +42,7 @@ describe('ChatbotConversationHistoryNav', () => {
|
|
11
42
|
const initialConversations: Conversation[] = [
|
12
43
|
{
|
13
44
|
id: '1',
|
14
|
-
text: '
|
45
|
+
text: 'ChatBot documentation'
|
15
46
|
}
|
16
47
|
];
|
17
48
|
|
@@ -25,7 +56,7 @@ describe('ChatbotConversationHistoryNav', () => {
|
|
25
56
|
conversations={initialConversations}
|
26
57
|
/>
|
27
58
|
);
|
28
|
-
expect(screen.queryByText('
|
59
|
+
expect(screen.queryByText('ChatBot documentation')).toBeInTheDocument();
|
29
60
|
});
|
30
61
|
|
31
62
|
it('should display the conversations for grouped conversations', () => {
|
@@ -120,7 +151,215 @@ describe('ChatbotConversationHistoryNav', () => {
|
|
120
151
|
});
|
121
152
|
|
122
153
|
waitFor(() => {
|
123
|
-
expect(screen.queryByText('
|
154
|
+
expect(screen.queryByText('ChatBot documentation')).not.toBeInTheDocument();
|
124
155
|
});
|
125
156
|
});
|
157
|
+
|
158
|
+
it('should be resizable', () => {
|
159
|
+
render(
|
160
|
+
<ChatbotConversationHistoryNav
|
161
|
+
onDrawerToggle={onDrawerToggle}
|
162
|
+
isDrawerOpen={true}
|
163
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
164
|
+
setIsDrawerOpen={jest.fn()}
|
165
|
+
conversations={initialConversations}
|
166
|
+
drawerPanelContentProps={{ isResizable: true, minSize: '200px' }}
|
167
|
+
/>
|
168
|
+
);
|
169
|
+
expect(screen.getByRole('dialog', { name: /Resize/i })).toBeTruthy();
|
170
|
+
expect(screen.getByRole('separator', { name: /Resize/i })).toBeTruthy();
|
171
|
+
expect(screen.getByRole('dialog', { name: /Resize/i })).toHaveAttribute(
|
172
|
+
'style',
|
173
|
+
'--pf-v6-c-drawer__panel--md--FlexBasis: 384px; --pf-v6-c-drawer__panel--md--FlexBasis--min: 200px;'
|
174
|
+
);
|
175
|
+
});
|
176
|
+
|
177
|
+
it('should accept drawerContentProps', () => {
|
178
|
+
const { container } = render(
|
179
|
+
<ChatbotConversationHistoryNav
|
180
|
+
onDrawerToggle={onDrawerToggle}
|
181
|
+
isDrawerOpen={true}
|
182
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
183
|
+
setIsDrawerOpen={jest.fn()}
|
184
|
+
conversations={initialConversations}
|
185
|
+
drawerContentProps={{ className: 'test' }}
|
186
|
+
/>
|
187
|
+
);
|
188
|
+
const element = container.querySelector('.test');
|
189
|
+
expect(element).toBeInTheDocument();
|
190
|
+
});
|
191
|
+
|
192
|
+
it('should accept drawerContentBodyProps', () => {
|
193
|
+
const { container } = render(
|
194
|
+
<ChatbotConversationHistoryNav
|
195
|
+
onDrawerToggle={onDrawerToggle}
|
196
|
+
isDrawerOpen={true}
|
197
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
198
|
+
setIsDrawerOpen={jest.fn()}
|
199
|
+
conversations={initialConversations}
|
200
|
+
drawerContentBodyProps={{ className: 'test' }}
|
201
|
+
/>
|
202
|
+
);
|
203
|
+
const element = container.querySelector('.test');
|
204
|
+
expect(element).toBeInTheDocument();
|
205
|
+
});
|
206
|
+
|
207
|
+
it('should accept drawerHeadProps', () => {
|
208
|
+
const { container } = render(
|
209
|
+
<ChatbotConversationHistoryNav
|
210
|
+
onDrawerToggle={onDrawerToggle}
|
211
|
+
isDrawerOpen={true}
|
212
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
213
|
+
setIsDrawerOpen={jest.fn()}
|
214
|
+
conversations={initialConversations}
|
215
|
+
drawerHeadProps={{ className: 'test' }}
|
216
|
+
/>
|
217
|
+
);
|
218
|
+
const element = container.querySelector('.test');
|
219
|
+
expect(element).toBeInTheDocument();
|
220
|
+
});
|
221
|
+
|
222
|
+
it('should accept drawerActionsProps', () => {
|
223
|
+
const { container } = render(
|
224
|
+
<ChatbotConversationHistoryNav
|
225
|
+
onDrawerToggle={onDrawerToggle}
|
226
|
+
isDrawerOpen={true}
|
227
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
228
|
+
setIsDrawerOpen={jest.fn()}
|
229
|
+
conversations={initialConversations}
|
230
|
+
drawerActionsProps={{ className: 'test' }}
|
231
|
+
/>
|
232
|
+
);
|
233
|
+
const element = container.querySelector('.test');
|
234
|
+
expect(element).toBeInTheDocument();
|
235
|
+
});
|
236
|
+
|
237
|
+
it('should accept drawerCloseButtonProps', () => {
|
238
|
+
const { container } = render(
|
239
|
+
<ChatbotConversationHistoryNav
|
240
|
+
onDrawerToggle={onDrawerToggle}
|
241
|
+
isDrawerOpen={true}
|
242
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
243
|
+
setIsDrawerOpen={jest.fn()}
|
244
|
+
conversations={initialConversations}
|
245
|
+
drawerCloseButtonProps={{ className: 'test' }}
|
246
|
+
/>
|
247
|
+
);
|
248
|
+
const element = container.querySelector('.test');
|
249
|
+
expect(element).toBeInTheDocument();
|
250
|
+
});
|
251
|
+
|
252
|
+
it('should accept drawerPanelBodyProps', () => {
|
253
|
+
const { container } = render(
|
254
|
+
<ChatbotConversationHistoryNav
|
255
|
+
onDrawerToggle={onDrawerToggle}
|
256
|
+
isDrawerOpen={true}
|
257
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
258
|
+
setIsDrawerOpen={jest.fn()}
|
259
|
+
conversations={initialConversations}
|
260
|
+
drawerPanelBodyProps={{ className: 'test' }}
|
261
|
+
/>
|
262
|
+
);
|
263
|
+
const element = container.querySelector('.test');
|
264
|
+
expect(element).toBeInTheDocument();
|
265
|
+
});
|
266
|
+
|
267
|
+
it('should show loading state if triggered', () => {
|
268
|
+
render(
|
269
|
+
<ChatbotConversationHistoryNav
|
270
|
+
onDrawerToggle={onDrawerToggle}
|
271
|
+
isDrawerOpen={true}
|
272
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
273
|
+
setIsDrawerOpen={jest.fn()}
|
274
|
+
reverseButtonOrder={false}
|
275
|
+
handleTextInputChange={jest.fn()}
|
276
|
+
conversations={initialConversations}
|
277
|
+
isLoading
|
278
|
+
/>
|
279
|
+
);
|
280
|
+
expect(screen.getByRole('dialog', { name: /Loading chatbot conversation history/i })).toBeTruthy();
|
281
|
+
expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
|
282
|
+
});
|
283
|
+
|
284
|
+
it('should pass alternative aria label to loading state', () => {
|
285
|
+
render(
|
286
|
+
<ChatbotConversationHistoryNav
|
287
|
+
onDrawerToggle={onDrawerToggle}
|
288
|
+
isDrawerOpen={true}
|
289
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
290
|
+
setIsDrawerOpen={jest.fn()}
|
291
|
+
reverseButtonOrder={false}
|
292
|
+
handleTextInputChange={jest.fn()}
|
293
|
+
conversations={initialConversations}
|
294
|
+
isLoading
|
295
|
+
loadingState={{ screenreaderText: 'I am a test' }}
|
296
|
+
/>
|
297
|
+
);
|
298
|
+
expect(screen.getByRole('dialog', { name: /I am a test/i })).toBeTruthy();
|
299
|
+
});
|
300
|
+
|
301
|
+
it('should accept errorState', () => {
|
302
|
+
render(
|
303
|
+
<ChatbotConversationHistoryNav
|
304
|
+
onDrawerToggle={onDrawerToggle}
|
305
|
+
isDrawerOpen={true}
|
306
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
307
|
+
setIsDrawerOpen={jest.fn()}
|
308
|
+
reverseButtonOrder={false}
|
309
|
+
handleTextInputChange={jest.fn()}
|
310
|
+
conversations={initialConversations}
|
311
|
+
errorState={ERROR}
|
312
|
+
/>
|
313
|
+
);
|
314
|
+
expect(
|
315
|
+
screen.getByRole('dialog', {
|
316
|
+
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
|
317
|
+
})
|
318
|
+
).toBeTruthy();
|
319
|
+
expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
|
320
|
+
expect(screen.getByRole('button', { name: /Loading... Reload/i })).toBeTruthy();
|
321
|
+
expect(screen.getByRole('textbox', { name: /Filter menu items/i })).toBeTruthy();
|
322
|
+
expect(screen.getByRole('heading', { name: /Could not load chat history/i })).toBeTruthy();
|
323
|
+
});
|
324
|
+
|
325
|
+
it('should accept errorState without button', () => {
|
326
|
+
render(
|
327
|
+
<ChatbotConversationHistoryNav
|
328
|
+
onDrawerToggle={onDrawerToggle}
|
329
|
+
isDrawerOpen={true}
|
330
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
331
|
+
setIsDrawerOpen={jest.fn()}
|
332
|
+
reverseButtonOrder={false}
|
333
|
+
handleTextInputChange={jest.fn()}
|
334
|
+
conversations={initialConversations}
|
335
|
+
errorState={ERROR_WITHOUT_BUTTON}
|
336
|
+
/>
|
337
|
+
);
|
338
|
+
expect(
|
339
|
+
screen.getByRole('dialog', {
|
340
|
+
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
|
341
|
+
})
|
342
|
+
).toBeTruthy();
|
343
|
+
expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
|
344
|
+
expect(screen.queryByRole('button', { name: /Loading... Reload/i })).toBeFalsy();
|
345
|
+
expect(screen.getByRole('textbox', { name: /Filter menu items/i })).toBeTruthy();
|
346
|
+
expect(screen.getByRole('heading', { name: /Could not load chat history/i })).toBeTruthy();
|
347
|
+
});
|
348
|
+
|
349
|
+
it('should show loading state over error state if both are supplied', () => {
|
350
|
+
render(
|
351
|
+
<ChatbotConversationHistoryNav
|
352
|
+
onDrawerToggle={onDrawerToggle}
|
353
|
+
isDrawerOpen={true}
|
354
|
+
displayMode={ChatbotDisplayMode.fullscreen}
|
355
|
+
setIsDrawerOpen={jest.fn()}
|
356
|
+
reverseButtonOrder={false}
|
357
|
+
handleTextInputChange={jest.fn()}
|
358
|
+
conversations={initialConversations}
|
359
|
+
isLoading
|
360
|
+
errorState={ERROR}
|
361
|
+
/>
|
362
|
+
);
|
363
|
+
expect(screen.getByRole('dialog', { name: /Loading/i })).toBeTruthy();
|
364
|
+
});
|
126
365
|
});
|
@@ -21,12 +21,23 @@ import {
|
|
21
21
|
MenuGroup,
|
22
22
|
MenuItem,
|
23
23
|
MenuContent,
|
24
|
-
MenuItemProps
|
24
|
+
MenuItemProps,
|
25
|
+
MenuProps,
|
26
|
+
DrawerPanelContentProps,
|
27
|
+
DrawerContentProps,
|
28
|
+
DrawerContentBodyProps,
|
29
|
+
DrawerHeadProps,
|
30
|
+
DrawerActionsProps,
|
31
|
+
DrawerCloseButtonProps,
|
32
|
+
DrawerPanelBodyProps,
|
33
|
+
SkeletonProps
|
25
34
|
} from '@patternfly/react-core';
|
26
35
|
|
27
36
|
import { OutlinedCommentAltIcon } from '@patternfly/react-icons';
|
28
37
|
import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
|
29
38
|
import ConversationHistoryDropdown from './ChatbotConversationHistoryDropdown';
|
39
|
+
import LoadingState from './LoadingState';
|
40
|
+
import HistoryEmptyState, { HistoryEmptyStateProps } from './EmptyState';
|
30
41
|
|
31
42
|
export interface Conversation {
|
32
43
|
/** Conversation id */
|
@@ -37,11 +48,11 @@ export interface Conversation {
|
|
37
48
|
noIcon?: boolean;
|
38
49
|
/** Conversation */
|
39
50
|
text: string;
|
40
|
-
/** Dropdown items rendered in conversation
|
51
|
+
/** Dropdown items rendered in conversation settings dropdown */
|
41
52
|
menuItems?: React.ReactNode;
|
42
|
-
/** Optional classname applied to conversation
|
53
|
+
/** Optional classname applied to conversation settings dropdown */
|
43
54
|
menuClassName?: string;
|
44
|
-
/** Tooltip content and aria-label applied to conversation
|
55
|
+
/** Tooltip content and aria-label applied to conversation settings dropdown */
|
45
56
|
label?: string;
|
46
57
|
/** Callback for when user selects item. */
|
47
58
|
onSelect?: (event?: React.MouseEvent, value?: string | number) => void;
|
@@ -79,6 +90,28 @@ export interface ChatbotConversationHistoryNavProps extends DrawerProps {
|
|
79
90
|
reverseButtonOrder?: boolean;
|
80
91
|
/** Custom test id for the drawer actions */
|
81
92
|
drawerActionsTestId?: string;
|
93
|
+
/** Additional props applied to menu */
|
94
|
+
menuProps?: MenuProps;
|
95
|
+
/** Additional props applied to panel */
|
96
|
+
drawerPanelContentProps?: DrawerPanelContentProps;
|
97
|
+
/** Additional props applied to drawer content */
|
98
|
+
drawerContentProps?: Omit<DrawerContentProps, 'panelContent'>;
|
99
|
+
/** Additional props applied to drawer content body */
|
100
|
+
drawerContentBodyProps?: DrawerContentBodyProps;
|
101
|
+
/** Additional props applied to drawer head */
|
102
|
+
drawerHeadProps?: DrawerHeadProps;
|
103
|
+
/** Additional props applied to drawer actions */
|
104
|
+
drawerActionsProps?: DrawerActionsProps;
|
105
|
+
/** Additional props applied to drawer close button */
|
106
|
+
drawerCloseButtonProps?: DrawerCloseButtonProps;
|
107
|
+
/** Additional props appleid to drawer panel body */
|
108
|
+
drawerPanelBodyProps?: DrawerPanelBodyProps;
|
109
|
+
/** Whether to show drawer loading state */
|
110
|
+
isLoading?: boolean;
|
111
|
+
/** Additional props for loading state */
|
112
|
+
loadingState?: SkeletonProps;
|
113
|
+
/** Content to show in error state. Error state will appear once content is passed in. */
|
114
|
+
errorState?: HistoryEmptyStateProps;
|
82
115
|
}
|
83
116
|
|
84
117
|
export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConversationHistoryNavProps> = ({
|
@@ -91,12 +124,23 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
|
|
91
124
|
newChatButtonText = 'New chat',
|
92
125
|
drawerContent,
|
93
126
|
onNewChat,
|
94
|
-
searchInputPlaceholder = 'Search...',
|
127
|
+
searchInputPlaceholder = 'Search previous conversations...',
|
95
128
|
searchInputAriaLabel = 'Filter menu items',
|
96
129
|
handleTextInputChange,
|
97
130
|
displayMode,
|
98
131
|
reverseButtonOrder = false,
|
99
132
|
drawerActionsTestId = 'chatbot-nav-drawer-actions',
|
133
|
+
menuProps,
|
134
|
+
drawerPanelContentProps,
|
135
|
+
drawerContentProps,
|
136
|
+
drawerContentBodyProps,
|
137
|
+
drawerHeadProps,
|
138
|
+
drawerActionsProps,
|
139
|
+
drawerCloseButtonProps,
|
140
|
+
drawerPanelBodyProps,
|
141
|
+
isLoading,
|
142
|
+
loadingState,
|
143
|
+
errorState,
|
100
144
|
...props
|
101
145
|
}: ChatbotConversationHistoryNavProps) => {
|
102
146
|
const drawerRef = React.useRef<HTMLDivElement>(null);
|
@@ -162,23 +206,19 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
|
|
162
206
|
// Menu Content
|
163
207
|
// - Consumers should pass an array to <Chatbot> of the list of conversations
|
164
208
|
// - Groups could be optional, but items need to be ordered by date
|
165
|
-
const
|
166
|
-
|
167
|
-
<
|
168
|
-
|
169
|
-
|
209
|
+
const renderMenuContent = () => {
|
210
|
+
if (errorState) {
|
211
|
+
return <HistoryEmptyState {...errorState} />;
|
212
|
+
}
|
213
|
+
return (
|
214
|
+
<Menu isPlain onSelect={onSelectActiveItem} activeItemId={activeItemId} {...menuProps}>
|
215
|
+
<MenuContent>{buildMenu()}</MenuContent>
|
216
|
+
</Menu>
|
217
|
+
);
|
218
|
+
};
|
170
219
|
|
171
|
-
const
|
172
|
-
|
173
|
-
<DrawerHead>
|
174
|
-
<DrawerActions
|
175
|
-
data-testid={drawerActionsTestId}
|
176
|
-
className={reverseButtonOrder ? 'pf-v6-c-drawer__actions--reversed' : ''}
|
177
|
-
>
|
178
|
-
<DrawerCloseButton onClick={onDrawerToggle} />
|
179
|
-
{onNewChat && <Button onClick={onNewChat}>{newChatButtonText}</Button>}
|
180
|
-
</DrawerActions>
|
181
|
-
</DrawerHead>
|
220
|
+
const renderDrawerContent = () => (
|
221
|
+
<>
|
182
222
|
{handleTextInputChange && (
|
183
223
|
<div className="pf-chatbot__input">
|
184
224
|
<SearchInput
|
@@ -188,10 +228,38 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
|
|
188
228
|
/>
|
189
229
|
</div>
|
190
230
|
)}
|
191
|
-
<DrawerPanelBody>{
|
192
|
-
|
231
|
+
<DrawerPanelBody {...drawerPanelBodyProps}>{renderMenuContent()}</DrawerPanelBody>
|
232
|
+
</>
|
193
233
|
);
|
194
234
|
|
235
|
+
const renderPanelContent = () => {
|
236
|
+
const drawer = (
|
237
|
+
<>
|
238
|
+
<DrawerHead {...drawerHeadProps}>
|
239
|
+
<DrawerActions
|
240
|
+
data-testid={drawerActionsTestId}
|
241
|
+
className={reverseButtonOrder ? 'pf-v6-c-drawer__actions--reversed' : ''}
|
242
|
+
{...drawerActionsProps}
|
243
|
+
>
|
244
|
+
<DrawerCloseButton onClick={onDrawerToggle} {...drawerCloseButtonProps} />
|
245
|
+
{onNewChat && <Button onClick={onNewChat}>{newChatButtonText}</Button>}
|
246
|
+
</DrawerActions>
|
247
|
+
</DrawerHead>
|
248
|
+
{isLoading ? <LoadingState {...loadingState} /> : renderDrawerContent()}
|
249
|
+
</>
|
250
|
+
);
|
251
|
+
return (
|
252
|
+
<DrawerPanelContent
|
253
|
+
aria-live="polite"
|
254
|
+
focusTrap={{ enabled: true }}
|
255
|
+
defaultSize="384px"
|
256
|
+
{...drawerPanelContentProps}
|
257
|
+
>
|
258
|
+
{drawer}
|
259
|
+
</DrawerPanelContent>
|
260
|
+
);
|
261
|
+
};
|
262
|
+
|
195
263
|
// An onKeyDown property must be passed to the Drawer component to handle closing
|
196
264
|
// the drawer panel and deactivating the focus trap via the Escape key.
|
197
265
|
const onEscape = (event: React.KeyboardEvent) => {
|
@@ -213,11 +281,11 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
|
|
213
281
|
isInline={displayMode === ChatbotDisplayMode.fullscreen || displayMode === ChatbotDisplayMode.embedded}
|
214
282
|
{...props}
|
215
283
|
>
|
216
|
-
<DrawerContent panelContent={
|
217
|
-
<DrawerContentBody>
|
284
|
+
<DrawerContent panelContent={renderPanelContent()} {...drawerContentProps}>
|
285
|
+
<DrawerContentBody {...drawerContentBodyProps}>
|
218
286
|
<>
|
219
287
|
<div
|
220
|
-
className={`${isDrawerOpen && (displayMode === ChatbotDisplayMode.default || displayMode === ChatbotDisplayMode.docked) ? 'pf-v6-c-backdrop pf-chatbot__drawer-backdrop' : undefined} `}
|
288
|
+
className={`${isDrawerOpen && (displayMode === ChatbotDisplayMode.default || displayMode === ChatbotDisplayMode.docked || displayMode === ChatbotDisplayMode.drawer) ? 'pf-v6-c-backdrop pf-chatbot__drawer-backdrop' : undefined} `}
|
221
289
|
></div>
|
222
290
|
{drawerContent}
|
223
291
|
</>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import {
|
2
|
+
Button,
|
3
|
+
EmptyState,
|
4
|
+
EmptyStateActions,
|
5
|
+
EmptyStateBody,
|
6
|
+
EmptyStateFooter,
|
7
|
+
EmptyStateProps
|
8
|
+
} from '@patternfly/react-core';
|
9
|
+
import React from 'react';
|
10
|
+
|
11
|
+
export interface HistoryEmptyStateProps extends EmptyStateProps {
|
12
|
+
onClick?: () => void;
|
13
|
+
bodyText?: string | React.ReactNode;
|
14
|
+
buttonText?: string;
|
15
|
+
buttonIcon?: React.ReactNode;
|
16
|
+
hasButton?: boolean;
|
17
|
+
}
|
18
|
+
|
19
|
+
export const HistoryEmptyState: React.FunctionComponent<HistoryEmptyStateProps> = ({
|
20
|
+
bodyText,
|
21
|
+
buttonIcon,
|
22
|
+
buttonText,
|
23
|
+
status,
|
24
|
+
titleText,
|
25
|
+
headingLevel,
|
26
|
+
onClick,
|
27
|
+
hasButton = false,
|
28
|
+
...props
|
29
|
+
}: HistoryEmptyStateProps) => (
|
30
|
+
<EmptyState status={status} titleText={titleText} headingLevel={headingLevel} {...props}>
|
31
|
+
<EmptyStateBody>{bodyText}</EmptyStateBody>
|
32
|
+
{hasButton && (
|
33
|
+
<EmptyStateFooter>
|
34
|
+
<EmptyStateActions>
|
35
|
+
<Button icon={buttonIcon} variant="secondary" onClick={onClick}>
|
36
|
+
{buttonText}
|
37
|
+
</Button>
|
38
|
+
</EmptyStateActions>
|
39
|
+
</EmptyStateFooter>
|
40
|
+
)}
|
41
|
+
</EmptyState>
|
42
|
+
);
|
43
|
+
|
44
|
+
export default HistoryEmptyState;
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { Skeleton, SkeletonProps } from '@patternfly/react-core';
|
2
|
+
import React from 'react';
|
3
|
+
|
4
|
+
export const LoadingState: React.FunctionComponent<SkeletonProps> = ({ screenreaderText, ...rest }: SkeletonProps) => (
|
5
|
+
<div className="pf-chatbot__history-loading">
|
6
|
+
<div className="pf-chatbot__history-loading-block">
|
7
|
+
<Skeleton
|
8
|
+
screenreaderText={screenreaderText ?? 'Loading chatbot conversation history'}
|
9
|
+
fontSize="3xl"
|
10
|
+
{...rest}
|
11
|
+
/>
|
12
|
+
</div>
|
13
|
+
<div className="pf-chatbot__history-loading-block">
|
14
|
+
<Skeleton fontSize="sm" width="70%" {...rest} />
|
15
|
+
<Skeleton fontSize="3xl" {...rest} />
|
16
|
+
<Skeleton fontSize="3xl" {...rest} />
|
17
|
+
</div>
|
18
|
+
<div className="pf-chatbot__history-loading-block">
|
19
|
+
<Skeleton fontSize="sm" width="70%" {...rest} />
|
20
|
+
<Skeleton fontSize="3xl" {...rest} />
|
21
|
+
<Skeleton fontSize="3xl" {...rest} />
|
22
|
+
<Skeleton fontSize="3xl" {...rest} />
|
23
|
+
</div>
|
24
|
+
<div className="pf-chatbot__history-loading-block">
|
25
|
+
<Skeleton fontSize="sm" width="70%" {...rest} />
|
26
|
+
<Skeleton fontSize="3xl" {...rest} />
|
27
|
+
<Skeleton fontSize="3xl" {...rest} />
|
28
|
+
<Skeleton fontSize="3xl" {...rest} />
|
29
|
+
<Skeleton fontSize="3xl" {...rest} />
|
30
|
+
</div>
|
31
|
+
<div className="pf-chatbot__history-loading-block">
|
32
|
+
<Skeleton fontSize="sm" width="70%" {...rest} />
|
33
|
+
<Skeleton fontSize="3xl" {...rest} />
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
);
|
37
|
+
|
38
|
+
export default LoadingState;
|
@@ -44,11 +44,15 @@
|
|
44
44
|
// Chatbot Display Mode - Docked
|
45
45
|
// ============================================================================
|
46
46
|
.pf-chatbot--docked {
|
47
|
-
.pf-chatbot__footer {
|
48
|
-
|
49
|
-
display: none;
|
50
|
-
}
|
47
|
+
.pf-chatbot__footer-container {
|
48
|
+
padding: var(--pf-t--global--spacer--sm) var(--pf-t--global--spacer--lg);
|
51
49
|
}
|
50
|
+
}
|
51
|
+
|
52
|
+
// ============================================================================
|
53
|
+
// Chatbot Display Mode - Drawer
|
54
|
+
// ============================================================================
|
55
|
+
.pf-chatbot--drawer {
|
52
56
|
.pf-chatbot__footer-container {
|
53
57
|
padding: var(--pf-t--global--spacer--sm) var(--pf-t--global--spacer--lg);
|
54
58
|
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { render, screen } from '@testing-library/react';
|
3
|
+
import ChatbotFooter from './ChatbotFooter';
|
4
|
+
|
5
|
+
describe('ChatbotFooter', () => {
|
6
|
+
it('should render ChatbotFooter with children', () => {
|
7
|
+
render(<ChatbotFooter>Chatbot Content</ChatbotFooter>);
|
8
|
+
expect(screen.getByText('Chatbot Content')).toBeTruthy();
|
9
|
+
});
|
10
|
+
|
11
|
+
it('should render ChatbotFooter with custom classname', () => {
|
12
|
+
const { container } = render(<ChatbotFooter className="custom-class">Chatbot Content</ChatbotFooter>);
|
13
|
+
expect(container.querySelector('.custom-class')).toBeTruthy();
|
14
|
+
});
|
15
|
+
});
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react';
|
3
|
+
import ChatbotFootnote from './ChatbotFootnote';
|
4
|
+
|
5
|
+
describe('ChatbotFooternote', () => {
|
6
|
+
const onClick = jest.fn();
|
7
|
+
const popoverProps = {
|
8
|
+
title: 'Verify accuracy',
|
9
|
+
description: 'description',
|
10
|
+
bannerImage: {
|
11
|
+
src: 'src',
|
12
|
+
alt: 'alt'
|
13
|
+
},
|
14
|
+
cta: {
|
15
|
+
label: 'Got it',
|
16
|
+
onClick
|
17
|
+
},
|
18
|
+
link: {
|
19
|
+
label: 'label',
|
20
|
+
url: 'url'
|
21
|
+
}
|
22
|
+
};
|
23
|
+
|
24
|
+
it('should render ChatbotFooternote', () => {
|
25
|
+
render(<ChatbotFootnote label="Chatbot footer" />);
|
26
|
+
expect(screen.getByText('Chatbot footer')).toBeTruthy();
|
27
|
+
});
|
28
|
+
|
29
|
+
it('should render ChatbotFooternote with popover', async () => {
|
30
|
+
render(<ChatbotFootnote label="Chatbot footer" popover={popoverProps} />);
|
31
|
+
|
32
|
+
// click on the footer button
|
33
|
+
act(() => {
|
34
|
+
fireEvent.click(screen.getByRole('button'));
|
35
|
+
});
|
36
|
+
|
37
|
+
await waitFor(() => {
|
38
|
+
// Check if the popover is visible and click on the cta button
|
39
|
+
screen.getByLabelText('More information');
|
40
|
+
screen.getByText('Verify accuracy');
|
41
|
+
fireEvent.click(screen.getByRole('button', { name: 'Got it' }));
|
42
|
+
expect(onClick).toHaveBeenCalled();
|
43
|
+
});
|
44
|
+
});
|
45
|
+
it('should call onClick handler when popover cta button is clicked', async () => {
|
46
|
+
render(<ChatbotFootnote label="Chatbot footer" popover={popoverProps} />);
|
47
|
+
|
48
|
+
// click on the footer button
|
49
|
+
act(() => {
|
50
|
+
fireEvent.click(screen.getByRole('button'));
|
51
|
+
});
|
52
|
+
|
53
|
+
await waitFor(() => {
|
54
|
+
// Check if the popover is visible and click on the cta button
|
55
|
+
screen.getByLabelText('More information');
|
56
|
+
screen.getByText('Verify accuracy');
|
57
|
+
fireEvent.click(screen.getByRole('button', { name: 'Got it' }));
|
58
|
+
expect(onClick).toHaveBeenCalled();
|
59
|
+
});
|
60
|
+
});
|
61
|
+
it('should close the popover when escape is pressed', async () => {
|
62
|
+
render(<ChatbotFootnote label="Chatbot footer" popover={popoverProps} />);
|
63
|
+
|
64
|
+
// click on the footer button
|
65
|
+
act(() => {
|
66
|
+
fireEvent.click(screen.getByRole('button'));
|
67
|
+
});
|
68
|
+
|
69
|
+
await waitFor(() => {
|
70
|
+
// Check if the popover is visible and click on the cta button
|
71
|
+
screen.getByLabelText('More information');
|
72
|
+
screen.getByText('Verify accuracy');
|
73
|
+
});
|
74
|
+
|
75
|
+
act(() => {
|
76
|
+
// trigger escape to close the popover
|
77
|
+
fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' });
|
78
|
+
});
|
79
|
+
|
80
|
+
await waitFor(() => {
|
81
|
+
expect(screen.queryByText('Verify accuracy')).toBeFalsy();
|
82
|
+
});
|
83
|
+
});
|
84
|
+
});
|
@@ -32,7 +32,7 @@ export interface ChatbotFootnotePopover {
|
|
32
32
|
bannerImage?: ChatbotFootnotePopoverBannerImage;
|
33
33
|
/** Optional CTA button that can be used to trigger an action and close the popover */
|
34
34
|
cta?: ChatbotFootnotePopoverCTA;
|
35
|
-
/** Optional link that can be used to show
|
35
|
+
/** Optional link that can be used to show an external link like **View AI policy** */
|
36
36
|
link?: ChatbotFootnotePopoverLink;
|
37
37
|
/** Props for PF Popover */
|
38
38
|
popoverProps?: PopoverProps;
|
@@ -87,7 +87,7 @@ export const ChatbotFootnote: React.FunctionComponent<ChatbotFootnoteProps> = ({
|
|
87
87
|
popover.cta?.onClick();
|
88
88
|
}}
|
89
89
|
>
|
90
|
-
{popover.cta?.label || '
|
90
|
+
{popover.cta?.label || 'Dismiss'}
|
91
91
|
</Button>
|
92
92
|
)}
|
93
93
|
{popover?.link && (
|