@patternfly/chatbot 2.2.0-prerelease.3 → 2.2.0-prerelease.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +52 -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 +23 -11
- 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.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +47 -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/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 +47 -8
- package/dist/cjs/Message/Message.js +69 -18
- package/dist/cjs/Message/Message.test.js +265 -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 +55 -0
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +146 -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 +122 -39
- 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/TermsOfUse/TermsOfUse.d.ts +34 -0
- package/dist/cjs/TermsOfUse/TermsOfUse.js +49 -0
- package/dist/cjs/TermsOfUse/TermsOfUse.test.d.ts +1 -0
- package/dist/cjs/TermsOfUse/TermsOfUse.test.js +79 -0
- package/dist/cjs/TermsOfUse/index.d.ts +2 -0
- package/dist/cjs/TermsOfUse/index.js +23 -0
- 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/css/main.css +467 -123
- 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/TermsOfUse/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.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 +23 -11
- 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.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +42 -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/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 +47 -8
- package/dist/esm/Message/Message.js +67 -16
- package/dist/esm/Message/Message.test.js +265 -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 +50 -0
- package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
- package/dist/esm/Message/UserFeedback/UserFeedback.test.js +141 -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 +122 -39
- 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/TermsOfUse/TermsOfUse.d.ts +34 -0
- package/dist/esm/TermsOfUse/TermsOfUse.js +42 -0
- package/dist/esm/TermsOfUse/TermsOfUse.test.d.ts +1 -0
- package/dist/esm/TermsOfUse/TermsOfUse.test.js +74 -0
- package/dist/esm/TermsOfUse/index.d.ts +2 -0
- package/dist/esm/TermsOfUse/index.js +2 -0
- 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/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -13
- package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +5 -2
- package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +41 -4
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +191 -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 +1 -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 +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +74 -11
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +221 -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/PF-TermsAndConditionsHeader.svg +148 -0
- 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/TermsOfUse.tsx +147 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +49 -6
- package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +14 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +26 -3
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +11 -11
- 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/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/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 -57
- package/patternfly-docs/content/extensions/chatbot/img/chatbot-elements.svg +5 -5
- 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/conversation-history.svg +6 -29
- package/patternfly-docs/content/extensions/chatbot/img/docked.svg +68 -49
- 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.svg +1 -1
- package/patternfly-docs/content/extensions/chatbot/img/message-bar-elements.svg +3 -3
- package/patternfly-docs/content/extensions/chatbot/img/message-elements.svg +85 -142
- package/patternfly-docs/content/extensions/chatbot/img/overlay.svg +52 -36
- 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/toggle-customizations.svg +12 -0
- package/src/AttachMenu/AttachMenu.scss +1 -1
- package/src/AttachmentEdit/AttachmentEdit.test.tsx +55 -0
- package/src/Chatbot/Chatbot.scss +1 -1
- package/src/Chatbot/Chatbot.test.tsx +31 -0
- package/src/ChatbotAlert/ChatbotAlert.test.tsx +31 -0
- package/src/ChatbotContent/ChatbotContent.test.tsx +15 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +10 -4
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +22 -1
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +242 -3
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +93 -25
- package/src/ChatbotConversationHistoryNav/EmptyState.tsx +44 -0
- package/src/ChatbotConversationHistoryNav/LoadingState.tsx +38 -0
- package/src/ChatbotFooter/ChatbotFooter.scss +0 -5
- 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 +2 -5
- 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 +59 -0
- package/src/ChatbotHeader/index.ts +1 -0
- package/src/ChatbotModal/ChatbotModal.scss +1 -1
- package/src/ChatbotToggle/ChatbotToggle.tsx +6 -1
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +26 -18
- package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +2 -2
- package/src/CodeModal/CodeModal.scss +9 -1
- 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/FileDropZone/__snapshots__/FileDropZone.test.tsx.snap +1 -1
- package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +4 -4
- 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 +357 -3
- package/src/Message/Message.tsx +148 -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 +257 -0
- package/src/Message/UserFeedback/UserFeedback.tsx +132 -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 +38 -20
- package/src/MessageBar/MessageBar.test.tsx +12 -4
- package/src/MessageBar/MessageBar.tsx +153 -58
- 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.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 +1 -1
- package/src/SourcesCard/SourcesCard.scss +2 -2
- package/src/TermsOfUse/TermsOfUse.scss +66 -0
- package/src/TermsOfUse/TermsOfUse.test.tsx +138 -0
- package/src/TermsOfUse/TermsOfUse.tsx +117 -0
- package/src/TermsOfUse/index.ts +3 -0
- 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 +8 -6
@@ -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,8 +281,8 @@ 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
288
|
className={`${isDrawerOpen && (displayMode === ChatbotDisplayMode.default || displayMode === ChatbotDisplayMode.docked) ? 'pf-v6-c-backdrop pf-chatbot__drawer-backdrop' : undefined} `}
|
@@ -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,6 @@
|
|
44
44
|
// Chatbot Display Mode - Docked
|
45
45
|
// ============================================================================
|
46
46
|
.pf-chatbot--docked {
|
47
|
-
.pf-chatbot__footer {
|
48
|
-
.pf-v6-c-divider {
|
49
|
-
display: none;
|
50
|
-
}
|
51
|
-
}
|
52
47
|
.pf-chatbot__footer-container {
|
53
48
|
padding: var(--pf-t--global--spacer--sm) var(--pf-t--global--spacer--lg);
|
54
49
|
}
|
@@ -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 && (
|
@@ -76,9 +76,6 @@
|
|
76
76
|
.pf-chatbot__header {
|
77
77
|
background-color: var(--pf-t--chatbot--background);
|
78
78
|
}
|
79
|
-
.pf-chatbot__header__divider {
|
80
|
-
display: none;
|
81
|
-
}
|
82
79
|
}
|
83
80
|
|
84
81
|
// ============================================================================
|
@@ -95,7 +92,7 @@
|
|
95
92
|
.pf-v6-c-button__icon,
|
96
93
|
.pf-v6-c-menu-toggle__icon,
|
97
94
|
.pf-v6-c-icon__content {
|
98
|
-
color: var(--pf-t--
|
95
|
+
color: var(--pf-t--global--icon--color--subtle);
|
99
96
|
}
|
100
97
|
|
101
98
|
.pf-v6-c-button__icon,
|
@@ -111,7 +108,7 @@
|
|
111
108
|
.pf-v6-c-button__icon,
|
112
109
|
.pf-v6-c-menu-toggle__icon,
|
113
110
|
.pf-v6-c-icon__content {
|
114
|
-
color: var(--pf-t--
|
111
|
+
color: var(--pf-t--global--icon--color--regular);
|
115
112
|
}
|
116
113
|
}
|
117
114
|
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { render, screen } from '@testing-library/react';
|
3
|
+
import ChatbotHeader from './ChatbotHeader';
|
4
|
+
|
5
|
+
describe('ChatbotHeader', () => {
|
6
|
+
it('should render ChatbotHeader with children', () => {
|
7
|
+
render(<ChatbotHeader>Chatbot Header</ChatbotHeader>);
|
8
|
+
expect(screen.getByText('Chatbot Header')).toBeTruthy();
|
9
|
+
});
|
10
|
+
|
11
|
+
it('should render ChatbotHeader with custom classname', () => {
|
12
|
+
const { container } = render(<ChatbotHeader className="custom-header-class">Chatbot Content</ChatbotHeader>);
|
13
|
+
expect(container.querySelector('.custom-header-class')).toBeTruthy();
|
14
|
+
});
|
15
|
+
});
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { render, screen } from '@testing-library/react';
|
3
|
+
import ChatbotHeaderActions from './ChatbotHeaderActions';
|
4
|
+
|
5
|
+
describe('ChatbotHeaderActions', () => {
|
6
|
+
it('should render ChatbotHeaderActions with children', () => {
|
7
|
+
render(<ChatbotHeaderActions>Chatbot Header</ChatbotHeaderActions>);
|
8
|
+
expect(screen.getByText('Chatbot Header')).toBeTruthy();
|
9
|
+
});
|
10
|
+
|
11
|
+
it('should render ChatbotHeaderActions with custom classname', () => {
|
12
|
+
const { container } = render(
|
13
|
+
<ChatbotHeaderActions className="custom-header-action-class">Chatbot Content</ChatbotHeaderActions>
|
14
|
+
);
|
15
|
+
expect(container.querySelector('.custom-header-action-class')).toBeTruthy();
|
16
|
+
});
|
17
|
+
});
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { fireEvent, render, screen } from '@testing-library/react';
|
3
|
+
import { ChatbotHeaderCloseButton } from './ChatbotHeaderCloseButton';
|
4
|
+
|
5
|
+
describe('ChatbotHeaderCloseButton', () => {
|
6
|
+
it('should render ChatbotHeaderCloseButton', () => {
|
7
|
+
const { container } = render(
|
8
|
+
<ChatbotHeaderCloseButton className="custom-header-close-button" onClick={jest.fn()} />
|
9
|
+
);
|
10
|
+
|
11
|
+
expect(container.querySelector('.custom-header-close-button')).toBeTruthy();
|
12
|
+
});
|
13
|
+
|
14
|
+
it('should call onClick handler when close button is pressed', () => {
|
15
|
+
const onClick = jest.fn();
|
16
|
+
render(<ChatbotHeaderCloseButton className="custom-header-close-button" onClick={onClick} />);
|
17
|
+
fireEvent.click(screen.getByRole('button', { name: 'Close' }));
|
18
|
+
expect(onClick).toHaveBeenCalled();
|
19
|
+
});
|
20
|
+
});
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
|
3
|
+
import { Button, Icon, Tooltip, TooltipProps } from '@patternfly/react-core';
|
4
|
+
import { CloseIcon } from '@patternfly/react-icons';
|
5
|
+
|
6
|
+
export interface ChatbotHeaderCloseButtonProps {
|
7
|
+
/** Callback function for when button is clicked */
|
8
|
+
onClick: () => void;
|
9
|
+
/** Custom classname for the header component */
|
10
|
+
className?: string;
|
11
|
+
/** Props spread to the PF Tooltip component wrapping the display mode dropdown */
|
12
|
+
tooltipProps?: TooltipProps;
|
13
|
+
/** Aria label for menu */
|
14
|
+
menuAriaLabel?: string;
|
15
|
+
/** Ref applied to menu */
|
16
|
+
innerRef?: React.Ref<HTMLButtonElement>;
|
17
|
+
/** Content used in tooltip */
|
18
|
+
tooltipContent?: string;
|
19
|
+
}
|
20
|
+
|
21
|
+
const ChatbotHeaderCloseButtonBase: React.FunctionComponent<ChatbotHeaderCloseButtonProps> = ({
|
22
|
+
className,
|
23
|
+
onClick,
|
24
|
+
tooltipProps,
|
25
|
+
menuAriaLabel = 'Close',
|
26
|
+
innerRef,
|
27
|
+
tooltipContent = 'Close'
|
28
|
+
}: ChatbotHeaderCloseButtonProps) => (
|
29
|
+
<div className={`pf-chatbot__menu ${className}`}>
|
30
|
+
<Tooltip
|
31
|
+
content={tooltipContent}
|
32
|
+
position="bottom"
|
33
|
+
// prevents VO announcements of both aria label and tooltip
|
34
|
+
aria="none"
|
35
|
+
{...tooltipProps}
|
36
|
+
>
|
37
|
+
<Button
|
38
|
+
className="pf-chatbot__button--toggle-menu"
|
39
|
+
variant="plain"
|
40
|
+
onClick={onClick}
|
41
|
+
aria-label={menuAriaLabel}
|
42
|
+
ref={innerRef}
|
43
|
+
icon={
|
44
|
+
<Icon size="xl" isInline>
|
45
|
+
<CloseIcon />
|
46
|
+
</Icon>
|
47
|
+
}
|
48
|
+
/>
|
49
|
+
</Tooltip>
|
50
|
+
</div>
|
51
|
+
);
|
52
|
+
|
53
|
+
export const ChatbotHeaderCloseButton = React.forwardRef(
|
54
|
+
(props: ChatbotHeaderCloseButtonProps, ref: React.Ref<HTMLButtonElement>) => (
|
55
|
+
<ChatbotHeaderCloseButtonBase innerRef={ref} {...props} />
|
56
|
+
)
|
57
|
+
);
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { render, screen } from '@testing-library/react';
|
3
|
+
import ChatbotHeaderMain from './ChatbotHeaderMain';
|
4
|
+
|
5
|
+
describe('ChatbotHeaderMain', () => {
|
6
|
+
it('should render ChatbotHeaderMain with children', () => {
|
7
|
+
render(<ChatbotHeaderMain>Chatbot Header Main</ChatbotHeaderMain>);
|
8
|
+
expect(screen.getByText('Chatbot Header Main')).toBeTruthy();
|
9
|
+
});
|
10
|
+
|
11
|
+
it('should render ChatbotHeaderMain with custom classname', () => {
|
12
|
+
const { container } = render(
|
13
|
+
<ChatbotHeaderMain className="custom-header-class">Chatbot Content</ChatbotHeaderMain>
|
14
|
+
);
|
15
|
+
expect(container.querySelector('.custom-header-class')).toBeTruthy();
|
16
|
+
});
|
17
|
+
});
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { fireEvent, render, screen } from '@testing-library/react';
|
3
|
+
import { ChatbotHeaderMenu } from './ChatbotHeaderMenu';
|
4
|
+
|
5
|
+
describe('ChatbotHeaderMenu', () => {
|
6
|
+
it('should render ChatbotHeaderMenu with custom class', () => {
|
7
|
+
const { container } = render(<ChatbotHeaderMenu className="custom-header-menu" onMenuToggle={jest.fn()} />);
|
8
|
+
|
9
|
+
expect(container.querySelector('.custom-header-menu')).toBeTruthy();
|
10
|
+
});
|
11
|
+
|
12
|
+
it('should call onMenuToggle when ChatbotHeaderMenu button is clicked', () => {
|
13
|
+
const onMenuToggle = jest.fn();
|
14
|
+
render(<ChatbotHeaderMenu className="custom-header-menu" onMenuToggle={onMenuToggle} />);
|
15
|
+
fireEvent.click(screen.getByRole('button', { name: 'Toggle menu' }));
|
16
|
+
|
17
|
+
expect(onMenuToggle).toHaveBeenCalled();
|
18
|
+
});
|
19
|
+
});
|
@@ -14,6 +14,8 @@ export interface ChatbotHeaderMenuProps {
|
|
14
14
|
menuAriaLabel?: string;
|
15
15
|
/** Ref applied to menu */
|
16
16
|
innerRef?: React.Ref<HTMLButtonElement>;
|
17
|
+
/** Content used in tooltip */
|
18
|
+
tooltipContent?: string;
|
17
19
|
}
|
18
20
|
|
19
21
|
const ChatbotHeaderMenuBase: React.FunctionComponent<ChatbotHeaderMenuProps> = ({
|
@@ -21,10 +23,17 @@ const ChatbotHeaderMenuBase: React.FunctionComponent<ChatbotHeaderMenuProps> = (
|
|
21
23
|
onMenuToggle,
|
22
24
|
tooltipProps,
|
23
25
|
menuAriaLabel = 'Toggle menu',
|
24
|
-
innerRef
|
26
|
+
innerRef,
|
27
|
+
tooltipContent = 'Menu'
|
25
28
|
}: ChatbotHeaderMenuProps) => (
|
26
29
|
<div className={`pf-chatbot__menu ${className}`}>
|
27
|
-
<Tooltip
|
30
|
+
<Tooltip
|
31
|
+
content={tooltipContent}
|
32
|
+
position="bottom"
|
33
|
+
// prevents VO announcements of both aria label and tooltip
|
34
|
+
aria="none"
|
35
|
+
{...tooltipProps}
|
36
|
+
>
|
28
37
|
<Button
|
29
38
|
className="pf-chatbot__button--toggle-menu"
|
30
39
|
variant="plain"
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { DropdownItem } from '@patternfly/react-core';
|
3
|
+
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react';
|
4
|
+
import { ChatbotHeaderOptionsDropdown } from './ChatbotHeaderOptionsDropdown';
|
5
|
+
|
6
|
+
describe('ChatbotHeaderOptionsDropdown', () => {
|
7
|
+
const dropdownItems = (
|
8
|
+
<>
|
9
|
+
<DropdownItem>Option 1</DropdownItem>
|
10
|
+
<DropdownItem>Option 2</DropdownItem>
|
11
|
+
<DropdownItem>Option 3</DropdownItem>
|
12
|
+
</>
|
13
|
+
);
|
14
|
+
|
15
|
+
it('should render ChatbotHeaderOptionsDropdown', () => {
|
16
|
+
render(<ChatbotHeaderOptionsDropdown>{dropdownItems}</ChatbotHeaderOptionsDropdown>);
|
17
|
+
|
18
|
+
expect(screen.getByRole('button', { name: 'Chatbot options' })).toBeTruthy();
|
19
|
+
});
|
20
|
+
|
21
|
+
it('should call onselect handler when a dropdown item is clicked', async () => {
|
22
|
+
const onSelect = jest.fn();
|
23
|
+
const { container } = render(
|
24
|
+
<ChatbotHeaderOptionsDropdown className="custom-header-options-dropdown" onSelect={onSelect}>
|
25
|
+
{dropdownItems}
|
26
|
+
</ChatbotHeaderOptionsDropdown>
|
27
|
+
);
|
28
|
+
|
29
|
+
act(() => {
|
30
|
+
fireEvent.click(screen.getByRole('button', { name: 'Chatbot options' }));
|
31
|
+
});
|
32
|
+
|
33
|
+
await waitFor(() => {
|
34
|
+
expect(container.querySelector('.custom-header-options-dropdown')).toBeTruthy();
|
35
|
+
|
36
|
+
expect(screen.getByText('Option 1'));
|
37
|
+
expect(screen.getByText('Option 2'));
|
38
|
+
expect(screen.getByText('Option 3'));
|
39
|
+
|
40
|
+
fireEvent.click(screen.getByText('Option 3'));
|
41
|
+
|
42
|
+
expect(onSelect).toHaveBeenCalled();
|
43
|
+
});
|
44
|
+
});
|
45
|
+
});
|
@@ -33,7 +33,14 @@ export const ChatbotHeaderOptionsDropdown: React.FunctionComponent<ChatbotHeader
|
|
33
33
|
const [isOptionsMenuOpen, setIsOptionsMenuOpen] = React.useState(false);
|
34
34
|
|
35
35
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
36
|
-
<Tooltip
|
36
|
+
<Tooltip
|
37
|
+
className="pf-chatbot__tooltip"
|
38
|
+
content="Chatbot options"
|
39
|
+
position="bottom"
|
40
|
+
// prevents VO announcements of both aria label and tooltip
|
41
|
+
aria="none"
|
42
|
+
{...tooltipProps}
|
43
|
+
>
|
37
44
|
<MenuToggle
|
38
45
|
className="pf-chatbot__button--toggle-options"
|
39
46
|
variant="plain"
|