@patternfly/chatbot 6.3.0-prerelease.9 → 6.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AttachMenu/AttachMenu.d.ts +2 -2
- package/dist/cjs/AttachMenu/AttachMenu.js +2 -12
- package/dist/cjs/AttachmentEdit/AttachmentEdit.d.ts +12 -2
- package/dist/cjs/AttachmentEdit/AttachmentEdit.js +3 -6
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -1
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +33 -8
- package/dist/cjs/Chatbot/Chatbot.d.ts +1 -2
- package/dist/cjs/Chatbot/Chatbot.js +4 -9
- package/dist/cjs/Chatbot/Chatbot.test.js +11 -11
- package/dist/cjs/ChatbotAlert/ChatbotAlert.d.ts +2 -2
- package/dist/cjs/ChatbotAlert/ChatbotAlert.js +4 -8
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +10 -10
- package/dist/cjs/ChatbotContent/ChatbotContent.d.ts +3 -3
- package/dist/cjs/ChatbotContent/ChatbotContent.js +2 -8
- package/dist/cjs/ChatbotContent/ChatbotContent.test.js +5 -5
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -2
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +7 -11
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +31 -33
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -2
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +16 -33
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +56 -64
- package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.d.ts +2 -2
- package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.js +2 -9
- package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.d.ts +2 -2
- package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.js +2 -25
- package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +3 -3
- package/dist/cjs/ChatbotFooter/ChatbotFooter.js +2 -15
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +7 -7
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +28 -28
- package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
- package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +10 -23
- package/dist/cjs/ChatbotHeader/ChatbotHeader.d.ts +3 -3
- package/dist/cjs/ChatbotHeader/ChatbotHeader.js +2 -7
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +5 -5
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.js +2 -5
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +5 -5
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +1 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +5 -10
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +7 -10
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +2 -5
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +5 -5
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +5 -7
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +7 -10
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +6 -3
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +19 -21
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +8 -3
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -12
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +17 -19
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +2 -5
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +23 -23
- package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +2 -2
- package/dist/cjs/ChatbotModal/ChatbotModal.js +3 -9
- package/dist/cjs/ChatbotModal/ChatbotModal.test.js +4 -16
- package/dist/cjs/ChatbotPopover/ChatbotPopover.d.ts +2 -2
- package/dist/cjs/ChatbotPopover/ChatbotPopover.js +2 -8
- package/dist/cjs/ChatbotToggle/ChatbotToggle.d.ts +1 -2
- package/dist/cjs/ChatbotToggle/ChatbotToggle.js +8 -13
- package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +25 -25
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +2 -2
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +6 -20
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +16 -16
- package/dist/cjs/CodeModal/CodeModal.d.ts +8 -2
- package/dist/cjs/CodeModal/CodeModal.js +8 -20
- package/dist/cjs/CodeModal/CodeModal.test.js +23 -4
- package/dist/cjs/Compare/Compare.d.ts +2 -2
- package/dist/cjs/Compare/Compare.js +7 -16
- package/dist/cjs/Compare/Compare.test.js +7 -9
- package/dist/cjs/FileDetails/FileDetails.d.ts +2 -2
- package/dist/cjs/FileDetails/FileDetails.js +2 -15
- package/dist/cjs/FileDetails/FileDetails.test.js +10 -10
- package/dist/cjs/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
- package/dist/cjs/FileDetailsLabel/FileDetailsLabel.js +2 -5
- package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +21 -21
- package/dist/cjs/FileDropZone/FileDropZone.d.ts +23 -2
- package/dist/cjs/FileDropZone/FileDropZone.js +11 -9
- package/dist/cjs/FileDropZone/FileDropZone.test.js +86 -5
- package/dist/cjs/LoadingMessage/LoadingMessage.d.ts +2 -2
- package/dist/cjs/LoadingMessage/LoadingMessage.js +2 -10
- package/dist/cjs/LoadingMessage/LoadingMessage.test.js +6 -6
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +30 -21
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +5 -8
- package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +1 -2
- package/dist/cjs/Message/ImageMessage/ImageMessage.js +2 -8
- package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +1 -2
- package/dist/cjs/Message/LinkMessage/LinkMessage.js +6 -9
- package/dist/cjs/Message/ListMessage/ListItemMessage.d.ts +1 -2
- package/dist/cjs/Message/ListMessage/ListItemMessage.js +2 -8
- package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +1 -2
- package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -9
- package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
- package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +2 -9
- package/dist/cjs/Message/Message.d.ts +24 -8
- package/dist/cjs/Message/Message.js +49 -71
- package/dist/cjs/Message/Message.test.js +112 -82
- package/dist/cjs/Message/MessageInput.d.ts +2 -2
- package/dist/cjs/Message/MessageInput.js +5 -14
- package/dist/cjs/Message/MessageLoading.d.ts +1 -2
- package/dist/cjs/Message/MessageLoading.js +3 -8
- package/dist/cjs/Message/Plugins/index.d.ts +1 -0
- package/dist/cjs/Message/Plugins/index.js +5 -0
- package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
- package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.js +24 -0
- package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
- package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +47 -0
- package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +2 -2
- package/dist/cjs/Message/QuickResponse/QuickResponse.js +7 -9
- package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +2 -2
- package/dist/cjs/Message/QuickStarts/FallbackImg.js +5 -27
- package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +2 -2
- package/dist/cjs/Message/QuickStarts/QuickStartTile.js +7 -43
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +9 -38
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +16 -16
- package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
- package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +2 -26
- package/dist/cjs/Message/QuickStarts/types.d.ts +4 -3
- package/dist/cjs/Message/TableMessage/TableMessage.d.ts +1 -2
- package/dist/cjs/Message/TableMessage/TableMessage.js +8 -10
- package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +2 -3
- package/dist/cjs/Message/TableMessage/TbodyMessage.js +7 -9
- package/dist/cjs/Message/TableMessage/TdMessage.d.ts +1 -2
- package/dist/cjs/Message/TableMessage/TdMessage.js +2 -8
- package/dist/cjs/Message/TableMessage/ThMessage.d.ts +1 -2
- package/dist/cjs/Message/TableMessage/ThMessage.js +2 -8
- package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +1 -2
- package/dist/cjs/Message/TableMessage/TheadMessage.js +2 -8
- package/dist/cjs/Message/TableMessage/TrMessage.d.ts +2 -3
- package/dist/cjs/Message/TableMessage/TrMessage.js +8 -10
- package/dist/cjs/Message/TextMessage/TextMessage.d.ts +1 -2
- package/dist/cjs/Message/TextMessage/TextMessage.js +2 -9
- package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +2 -2
- package/dist/cjs/Message/UserFeedback/CloseButton.js +2 -8
- package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +2 -2
- package/dist/cjs/Message/UserFeedback/UserFeedback.js +12 -23
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +53 -53
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +20 -44
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +81 -91
- package/dist/cjs/Message/index.d.ts +1 -0
- package/dist/cjs/Message/index.js +3 -1
- package/dist/cjs/MessageBar/AttachButton.d.ts +25 -2
- package/dist/cjs/MessageBar/AttachButton.js +10 -20
- package/dist/cjs/MessageBar/AttachButton.test.js +102 -24
- package/dist/cjs/MessageBar/MessageBar.d.ts +31 -3
- package/dist/cjs/MessageBar/MessageBar.js +30 -32
- package/dist/cjs/MessageBar/MessageBar.test.js +122 -108
- package/dist/cjs/MessageBar/MicrophoneButton.d.ts +2 -2
- package/dist/cjs/MessageBar/MicrophoneButton.js +7 -14
- package/dist/cjs/MessageBar/SendButton.d.ts +3 -2
- package/dist/cjs/MessageBar/SendButton.js +3 -11
- package/dist/cjs/MessageBar/SendButton.test.js +15 -15
- package/dist/cjs/MessageBar/StopButton.d.ts +3 -2
- package/dist/cjs/MessageBar/StopButton.js +3 -12
- package/dist/cjs/MessageBar/StopButton.test.js +15 -15
- package/dist/cjs/MessageBox/JumpButton.d.ts +2 -2
- package/dist/cjs/MessageBox/JumpButton.js +2 -10
- package/dist/cjs/MessageBox/JumpButton.test.js +10 -10
- package/dist/cjs/MessageBox/MessageBox.d.ts +21 -5
- package/dist/cjs/MessageBox/MessageBox.js +170 -45
- package/dist/cjs/MessageBox/MessageBox.test.js +219 -6
- package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +12 -2
- package/dist/cjs/PreviewAttachment/PreviewAttachment.js +3 -6
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +34 -12
- package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +5 -5
- package/dist/cjs/ResponseActions/ResponseActionButton.js +5 -8
- package/dist/cjs/ResponseActions/ResponseActionButton.test.js +19 -19
- package/dist/cjs/ResponseActions/ResponseActions.d.ts +7 -3
- package/dist/cjs/ResponseActions/ResponseActions.js +39 -18
- package/dist/cjs/ResponseActions/ResponseActions.test.js +120 -41
- package/dist/cjs/Settings/SettingsForm.d.ts +2 -2
- package/dist/cjs/Settings/SettingsForm.js +2 -8
- package/dist/cjs/Settings/SettingsForm.test.js +9 -12
- package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
- package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -11
- package/dist/cjs/SourcesCard/SourcesCard.d.ts +12 -3
- package/dist/cjs/SourcesCard/SourcesCard.js +17 -42
- package/dist/cjs/SourcesCard/SourcesCard.test.js +70 -60
- package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +3 -3
- package/dist/cjs/TermsOfUse/TermsOfUse.js +4 -16
- package/dist/cjs/TermsOfUse/TermsOfUse.test.js +31 -33
- package/dist/css/main.css +15 -7
- package/dist/css/main.css.map +1 -1
- package/dist/esm/AttachMenu/AttachMenu.d.ts +2 -2
- package/dist/esm/AttachMenu/AttachMenu.js +2 -9
- package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +12 -2
- package/dist/esm/AttachmentEdit/AttachmentEdit.js +3 -6
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -1
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +30 -5
- package/dist/esm/Chatbot/Chatbot.d.ts +1 -2
- package/dist/esm/Chatbot/Chatbot.js +4 -6
- package/dist/esm/Chatbot/Chatbot.test.js +6 -6
- package/dist/esm/ChatbotAlert/ChatbotAlert.d.ts +2 -2
- package/dist/esm/ChatbotAlert/ChatbotAlert.js +4 -5
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +4 -4
- package/dist/esm/ChatbotContent/ChatbotContent.d.ts +3 -3
- package/dist/esm/ChatbotContent/ChatbotContent.js +2 -5
- package/dist/esm/ChatbotContent/ChatbotContent.test.js +3 -3
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -2
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +7 -11
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +8 -10
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -2
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +16 -33
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +26 -34
- package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +2 -2
- package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +2 -6
- package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +2 -2
- package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +2 -22
- package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +3 -3
- package/dist/esm/ChatbotFooter/ChatbotFooter.js +2 -12
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +4 -4
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +5 -5
- package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
- package/dist/esm/ChatbotFooter/ChatbotFootnote.js +10 -23
- package/dist/esm/ChatbotHeader/ChatbotHeader.d.ts +3 -3
- package/dist/esm/ChatbotHeader/ChatbotHeader.js +2 -4
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +3 -3
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.js +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +3 -3
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +1 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +5 -7
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +4 -4
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +3 -3
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +5 -7
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +4 -4
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +6 -3
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +9 -8
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +8 -3
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -9
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +9 -8
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +12 -12
- package/dist/esm/ChatbotModal/ChatbotModal.d.ts +2 -2
- package/dist/esm/ChatbotModal/ChatbotModal.js +3 -6
- package/dist/esm/ChatbotModal/ChatbotModal.test.js +2 -14
- package/dist/esm/ChatbotPopover/ChatbotPopover.d.ts +2 -2
- package/dist/esm/ChatbotPopover/ChatbotPopover.js +2 -5
- package/dist/esm/ChatbotToggle/ChatbotToggle.d.ts +1 -2
- package/dist/esm/ChatbotToggle/ChatbotToggle.js +8 -13
- package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +8 -8
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +2 -2
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +6 -17
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +8 -8
- package/dist/esm/CodeModal/CodeModal.d.ts +8 -2
- package/dist/esm/CodeModal/CodeModal.js +8 -20
- package/dist/esm/CodeModal/CodeModal.test.js +22 -3
- package/dist/esm/Compare/Compare.d.ts +2 -2
- package/dist/esm/Compare/Compare.js +7 -13
- package/dist/esm/Compare/Compare.test.js +4 -6
- package/dist/esm/FileDetails/FileDetails.d.ts +2 -2
- package/dist/esm/FileDetails/FileDetails.js +2 -15
- package/dist/esm/FileDetails/FileDetails.test.js +4 -4
- package/dist/esm/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
- package/dist/esm/FileDetailsLabel/FileDetailsLabel.js +2 -5
- package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +9 -9
- package/dist/esm/FileDropZone/FileDropZone.d.ts +23 -2
- package/dist/esm/FileDropZone/FileDropZone.js +11 -6
- package/dist/esm/FileDropZone/FileDropZone.test.js +84 -3
- package/dist/esm/LoadingMessage/LoadingMessage.d.ts +2 -2
- package/dist/esm/LoadingMessage/LoadingMessage.js +2 -10
- package/dist/esm/LoadingMessage/LoadingMessage.test.js +3 -3
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +31 -19
- package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
- package/dist/esm/Message/ErrorMessage/ErrorMessage.js +5 -5
- package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +1 -2
- package/dist/esm/Message/ImageMessage/ImageMessage.js +2 -5
- package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +1 -2
- package/dist/esm/Message/LinkMessage/LinkMessage.js +6 -6
- package/dist/esm/Message/ListMessage/ListItemMessage.d.ts +1 -2
- package/dist/esm/Message/ListMessage/ListItemMessage.js +2 -5
- package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +1 -2
- package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -6
- package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
- package/dist/esm/Message/ListMessage/UnorderedListMessage.js +2 -6
- package/dist/esm/Message/Message.d.ts +24 -8
- package/dist/esm/Message/Message.js +49 -71
- package/dist/esm/Message/Message.test.js +112 -82
- package/dist/esm/Message/MessageInput.d.ts +2 -2
- package/dist/esm/Message/MessageInput.js +5 -11
- package/dist/esm/Message/MessageLoading.d.ts +1 -2
- package/dist/esm/Message/MessageLoading.js +2 -4
- package/dist/esm/Message/Plugins/index.d.ts +1 -0
- package/dist/esm/Message/Plugins/index.js +1 -0
- package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
- package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.js +20 -0
- package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
- package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +43 -0
- package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +2 -2
- package/dist/esm/Message/QuickResponse/QuickResponse.js +7 -6
- package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +2 -2
- package/dist/esm/Message/QuickStarts/FallbackImg.js +5 -4
- package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +2 -2
- package/dist/esm/Message/QuickStarts/QuickStartTile.js +7 -20
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +9 -15
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +5 -5
- package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
- package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +2 -3
- package/dist/esm/Message/QuickStarts/types.d.ts +4 -3
- package/dist/esm/Message/TableMessage/TableMessage.d.ts +1 -2
- package/dist/esm/Message/TableMessage/TableMessage.js +8 -7
- package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +2 -3
- package/dist/esm/Message/TableMessage/TbodyMessage.js +7 -6
- package/dist/esm/Message/TableMessage/TdMessage.d.ts +1 -2
- package/dist/esm/Message/TableMessage/TdMessage.js +2 -5
- package/dist/esm/Message/TableMessage/ThMessage.d.ts +1 -2
- package/dist/esm/Message/TableMessage/ThMessage.js +2 -5
- package/dist/esm/Message/TableMessage/TheadMessage.d.ts +1 -2
- package/dist/esm/Message/TableMessage/TheadMessage.js +2 -5
- package/dist/esm/Message/TableMessage/TrMessage.d.ts +2 -3
- package/dist/esm/Message/TableMessage/TrMessage.js +8 -7
- package/dist/esm/Message/TextMessage/TextMessage.d.ts +1 -2
- package/dist/esm/Message/TextMessage/TextMessage.js +2 -6
- package/dist/esm/Message/UserFeedback/CloseButton.d.ts +2 -2
- package/dist/esm/Message/UserFeedback/CloseButton.js +2 -5
- package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +2 -2
- package/dist/esm/Message/UserFeedback/UserFeedback.js +12 -23
- package/dist/esm/Message/UserFeedback/UserFeedback.test.js +21 -21
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +20 -44
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +26 -36
- package/dist/esm/Message/index.d.ts +1 -0
- package/dist/esm/Message/index.js +1 -0
- package/dist/esm/MessageBar/AttachButton.d.ts +25 -2
- package/dist/esm/MessageBar/AttachButton.js +10 -17
- package/dist/esm/MessageBar/AttachButton.test.js +95 -17
- package/dist/esm/MessageBar/MessageBar.d.ts +31 -3
- package/dist/esm/MessageBar/MessageBar.js +28 -30
- package/dist/esm/MessageBar/MessageBar.test.js +87 -73
- package/dist/esm/MessageBar/MicrophoneButton.d.ts +2 -2
- package/dist/esm/MessageBar/MicrophoneButton.js +7 -11
- package/dist/esm/MessageBar/SendButton.d.ts +3 -2
- package/dist/esm/MessageBar/SendButton.js +3 -8
- package/dist/esm/MessageBar/SendButton.test.js +9 -9
- package/dist/esm/MessageBar/StopButton.d.ts +3 -2
- package/dist/esm/MessageBar/StopButton.js +3 -9
- package/dist/esm/MessageBar/StopButton.test.js +9 -9
- package/dist/esm/MessageBox/JumpButton.d.ts +2 -2
- package/dist/esm/MessageBox/JumpButton.js +2 -7
- package/dist/esm/MessageBox/JumpButton.test.js +9 -9
- package/dist/esm/MessageBox/MessageBox.d.ts +21 -5
- package/dist/esm/MessageBox/MessageBox.js +170 -45
- package/dist/esm/MessageBox/MessageBox.test.js +220 -7
- package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +12 -2
- package/dist/esm/PreviewAttachment/PreviewAttachment.js +3 -6
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +30 -5
- package/dist/esm/ResponseActions/ResponseActionButton.d.ts +5 -5
- package/dist/esm/ResponseActions/ResponseActionButton.js +5 -5
- package/dist/esm/ResponseActions/ResponseActionButton.test.js +7 -7
- package/dist/esm/ResponseActions/ResponseActions.d.ts +7 -3
- package/dist/esm/ResponseActions/ResponseActions.js +40 -19
- package/dist/esm/ResponseActions/ResponseActions.test.js +95 -16
- package/dist/esm/Settings/SettingsForm.d.ts +2 -2
- package/dist/esm/Settings/SettingsForm.js +2 -5
- package/dist/esm/Settings/SettingsForm.test.js +6 -6
- package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
- package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -8
- package/dist/esm/SourcesCard/SourcesCard.d.ts +12 -3
- package/dist/esm/SourcesCard/SourcesCard.js +17 -39
- package/dist/esm/SourcesCard/SourcesCard.test.js +29 -19
- package/dist/esm/TermsOfUse/TermsOfUse.d.ts +3 -3
- package/dist/esm/TermsOfUse/TermsOfUse.js +4 -16
- package/dist/esm/TermsOfUse/TermsOfUse.test.js +10 -12
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -7
- package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +10 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +51 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachMenu.tsx +9 -9
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +5 -5
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +24 -20
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetails.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +9 -9
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +4 -4
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +7 -7
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithClickedResponseActions.tsx +25 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +3 -12
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +4 -4
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +19 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +5 -5
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +25 -14
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +4 -4
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotContainer.tsx +59 -36
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +10 -13
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +10 -10
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +5 -5
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +5 -5
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +6 -6
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSelection.tsx +7 -7
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderTitle.tsx +59 -34
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBar.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +9 -9
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarDisabled.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarLanguage.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarStop.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotModal.tsx +74 -37
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotToggleBasic.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +8 -8
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactSettings.tsx +16 -23
- package/patternfly-docs/content/extensions/chatbot/examples/UI/CustomClosedIcon.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +16 -23
- package/patternfly-docs/content/extensions/chatbot/examples/UI/SkipToContent.tsx +5 -5
- package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +3 -3
- package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUse.tsx +91 -48
- package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUseCompact.tsx +82 -39
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +3 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +37 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +1 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +19 -25
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +42 -15
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +15 -14
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotCompact.tsx +19 -25
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +17 -22
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotScrolling.tsx +536 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +17 -22
- package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +13 -13
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +7 -7
- package/patternfly-docs/content/extensions/chatbot/img/quick-response-confirmation.svg +67 -0
- package/src/AttachMenu/AttachMenu.tsx +2 -2
- package/src/AttachmentEdit/AttachmentEdit.test.tsx +46 -2
- package/src/AttachmentEdit/AttachmentEdit.tsx +25 -7
- package/src/Chatbot/Chatbot.test.tsx +0 -1
- package/src/Chatbot/Chatbot.tsx +5 -3
- package/src/ChatbotAlert/ChatbotAlert.test.tsx +0 -1
- package/src/ChatbotAlert/ChatbotAlert.tsx +2 -2
- package/src/ChatbotContent/ChatbotContent.test.tsx +0 -1
- package/src/ChatbotContent/ChatbotContent.tsx +3 -3
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.tsx +0 -1
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +6 -4
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +3 -3
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +8 -6
- package/src/ChatbotConversationHistoryNav/EmptyState.tsx +2 -2
- package/src/ChatbotConversationHistoryNav/LoadingState.tsx +2 -2
- package/src/ChatbotFooter/ChatbotFooter.test.tsx +0 -1
- package/src/ChatbotFooter/ChatbotFooter.tsx +3 -3
- package/src/ChatbotFooter/ChatbotFooternote.test.tsx +0 -1
- package/src/ChatbotFooter/ChatbotFootnote.tsx +6 -4
- package/src/ChatbotHeader/ChatbotHeader.test.tsx +0 -1
- package/src/ChatbotHeader/ChatbotHeader.tsx +3 -6
- package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +0 -1
- package/src/ChatbotHeader/ChatbotHeaderActions.tsx +2 -2
- package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +0 -1
- package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +5 -4
- package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +0 -1
- package/src/ChatbotHeader/ChatbotHeaderMain.tsx +2 -2
- package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +0 -1
- package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +7 -7
- package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +9 -1
- package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +12 -5
- package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +9 -1
- package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +26 -6
- package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +0 -1
- package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +2 -2
- package/src/ChatbotModal/ChatbotModal.test.tsx +0 -1
- package/src/ChatbotModal/ChatbotModal.tsx +2 -2
- package/src/ChatbotPopover/ChatbotPopover.tsx +3 -3
- package/src/ChatbotToggle/ChatbotToggle.test.tsx +0 -1
- package/src/ChatbotToggle/ChatbotToggle.tsx +5 -3
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +0 -1
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +2 -2
- package/src/CodeModal/CodeModal.test.tsx +29 -2
- package/src/CodeModal/CodeModal.tsx +18 -8
- package/src/Compare/Compare.test.tsx +0 -1
- package/src/Compare/Compare.tsx +7 -6
- package/src/FileDetails/FileDetails.test.tsx +0 -1
- package/src/FileDetails/FileDetails.tsx +1 -1
- package/src/FileDetailsLabel/FileDetailsLabel.test.tsx +0 -1
- package/src/FileDetailsLabel/FileDetailsLabel.tsx +1 -1
- package/src/FileDropZone/FileDropZone.test.tsx +112 -1
- package/src/FileDropZone/FileDropZone.tsx +44 -4
- package/src/LoadingMessage/LoadingMessage.test.tsx +0 -1
- package/src/LoadingMessage/LoadingMessage.tsx +2 -2
- package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +7 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +104 -20
- package/src/Message/ErrorMessage/ErrorMessage.tsx +0 -1
- package/src/Message/ImageMessage/ImageMessage.tsx +1 -2
- package/src/Message/LinkMessage/LinkMessage.tsx +0 -1
- package/src/Message/ListMessage/ListItemMessage.tsx +0 -1
- package/src/Message/ListMessage/OrderedListMessage.tsx +0 -1
- package/src/Message/ListMessage/UnorderedListMessage.tsx +0 -1
- package/src/Message/Message.test.tsx +49 -6
- package/src/Message/Message.tsx +31 -14
- package/src/Message/MessageInput.tsx +5 -5
- package/src/Message/MessageLoading.tsx +0 -2
- package/src/Message/Plugins/index.ts +1 -0
- package/src/Message/Plugins/rehypeCodeBlockToggle.ts +24 -0
- package/src/Message/Plugins/rehypeMoveImagesOutOfParagraphs.ts +53 -0
- package/src/Message/QuickResponse/QuickResponse.tsx +4 -3
- package/src/Message/QuickStarts/FallbackImg.tsx +4 -3
- package/src/Message/QuickStarts/QuickStartTile.tsx +3 -3
- package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +0 -1
- package/src/Message/QuickStarts/QuickStartTileDescription.tsx +4 -3
- package/src/Message/QuickStarts/QuickStartTileHeader.tsx +2 -2
- package/src/Message/QuickStarts/types.ts +4 -3
- package/src/Message/TableMessage/TableMessage.tsx +4 -4
- package/src/Message/TableMessage/TbodyMessage.tsx +3 -3
- package/src/Message/TableMessage/TdMessage.tsx +1 -2
- package/src/Message/TableMessage/ThMessage.tsx +1 -2
- package/src/Message/TableMessage/TheadMessage.tsx +3 -2
- package/src/Message/TableMessage/TrMessage.tsx +4 -4
- package/src/Message/TextMessage/TextMessage.scss +2 -5
- package/src/Message/TextMessage/TextMessage.tsx +1 -2
- package/src/Message/UserFeedback/CloseButton.tsx +2 -2
- package/src/Message/UserFeedback/UserFeedback.test.tsx +0 -1
- package/src/Message/UserFeedback/UserFeedback.tsx +8 -6
- package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +0 -1
- package/src/Message/UserFeedback/UserFeedbackComplete.tsx +16 -14
- package/src/Message/index.ts +1 -0
- package/src/MessageBar/AttachButton.test.tsx +127 -8
- package/src/MessageBar/AttachButton.tsx +49 -6
- package/src/MessageBar/MessageBar.test.tsx +81 -30
- package/src/MessageBar/MessageBar.tsx +85 -19
- package/src/MessageBar/MicrophoneButton.tsx +10 -7
- package/src/MessageBar/SendButton.test.tsx +5 -6
- package/src/MessageBar/SendButton.tsx +4 -3
- package/src/MessageBar/StopButton.test.tsx +5 -6
- package/src/MessageBar/StopButton.tsx +4 -3
- package/src/MessageBox/JumpButton.test.tsx +4 -5
- package/src/MessageBox/JumpButton.tsx +3 -3
- package/src/MessageBox/MessageBox.test.tsx +295 -5
- package/src/MessageBox/MessageBox.tsx +301 -84
- package/src/PreviewAttachment/PreviewAttachment.test.tsx +44 -2
- package/src/PreviewAttachment/PreviewAttachment.tsx +24 -6
- package/src/ResponseActions/ResponseActionButton.test.tsx +0 -1
- package/src/ResponseActions/ResponseActionButton.tsx +6 -5
- package/src/ResponseActions/ResponseActions.test.tsx +121 -4
- package/src/ResponseActions/ResponseActions.tsx +71 -12
- package/src/Settings/SettingsForm.test.tsx +0 -1
- package/src/Settings/SettingsForm.tsx +2 -7
- package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx +2 -2
- package/src/SourcesCard/SourcesCard.test.tsx +14 -1
- package/src/SourcesCard/SourcesCard.tsx +19 -7
- package/src/TermsOfUse/TermsOfUse.test.tsx +0 -1
- package/src/TermsOfUse/TermsOfUse.tsx +6 -5
- package/tsconfig.cjs.json +0 -1
- package/tsconfig.json +3 -3
|
@@ -80,3 +80,10 @@
|
|
|
80
80
|
background-color: var(--pf-t--global--background--color--tertiary--default);
|
|
81
81
|
font-size: var(--pf-t--global--font--size--body--default);
|
|
82
82
|
}
|
|
83
|
+
|
|
84
|
+
.pf-chatbot__message-code-toggle {
|
|
85
|
+
.pf-v6-c-button.pf-m-link {
|
|
86
|
+
--pf-v6-c-button--m-link--Color: var(--pf-t--global--color--nonstatus--blue--default);
|
|
87
|
+
--pf-v6-c-button--hover--Color: var(--pf-t--global--color--nonstatus--blue--hover);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -1,37 +1,98 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// Chatbot Main - Message - Content - Code Block
|
|
3
3
|
// ============================================================================
|
|
4
|
-
import
|
|
5
|
-
import SyntaxHighlighter from 'react-syntax-highlighter';
|
|
6
|
-
import { obsidian } from 'react-syntax-highlighter/dist/esm/styles/hljs';
|
|
4
|
+
import { useState, useRef, useId, useCallback, useEffect } from 'react';
|
|
7
5
|
// Import PatternFly components
|
|
8
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
CodeBlock,
|
|
8
|
+
CodeBlockAction,
|
|
9
|
+
CodeBlockCode,
|
|
10
|
+
Button,
|
|
11
|
+
Tooltip,
|
|
12
|
+
ExpandableSection,
|
|
13
|
+
ExpandableSectionToggle,
|
|
14
|
+
ExpandableSectionProps,
|
|
15
|
+
ExpandableSectionToggleProps,
|
|
16
|
+
ExpandableSectionVariant
|
|
17
|
+
} from '@patternfly/react-core';
|
|
9
18
|
|
|
10
19
|
import { CheckIcon } from '@patternfly/react-icons/dist/esm/icons/check-icon';
|
|
11
20
|
import { CopyIcon } from '@patternfly/react-icons/dist/esm/icons/copy-icon';
|
|
12
|
-
|
|
21
|
+
|
|
22
|
+
export interface CodeBlockMessageProps {
|
|
23
|
+
/** Content rendered in code block */
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
/** Aria label applied to code block */
|
|
26
|
+
'aria-label'?: string;
|
|
27
|
+
/** Class name applied to code block */
|
|
28
|
+
className?: string;
|
|
29
|
+
/** Whether code block is expandable */
|
|
30
|
+
isExpandable?: boolean;
|
|
31
|
+
/** Additional props passed to expandable section if isExpandable is applied */
|
|
32
|
+
expandableSectionProps?: Omit<ExpandableSectionProps, 'ref'>;
|
|
33
|
+
/** Additional props passed to expandable toggle if isExpandable is applied */
|
|
34
|
+
expandableSectionToggleProps?: ExpandableSectionToggleProps;
|
|
35
|
+
/** Link text applied to expandable toggle when expanded */
|
|
36
|
+
expandedText?: string;
|
|
37
|
+
/** Link text applied to expandable toggle when collapsed */
|
|
38
|
+
collapsedText?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const DEFAULT_EXPANDED_TEXT = 'Show less';
|
|
42
|
+
const DEFAULT_COLLAPSED_TEXT = 'Show more';
|
|
13
43
|
|
|
14
44
|
const CodeBlockMessage = ({
|
|
15
45
|
children,
|
|
16
46
|
className,
|
|
17
47
|
'aria-label': ariaLabel,
|
|
48
|
+
isExpandable = false,
|
|
49
|
+
expandableSectionProps,
|
|
50
|
+
expandableSectionToggleProps,
|
|
51
|
+
expandedText = DEFAULT_EXPANDED_TEXT,
|
|
52
|
+
collapsedText = DEFAULT_COLLAPSED_TEXT,
|
|
18
53
|
...props
|
|
19
|
-
}:
|
|
20
|
-
const [copied, setCopied] =
|
|
54
|
+
}: CodeBlockMessageProps) => {
|
|
55
|
+
const [copied, setCopied] = useState(false);
|
|
56
|
+
const [isExpanded, setIsExpanded] = useState(false);
|
|
21
57
|
|
|
22
|
-
const buttonRef =
|
|
23
|
-
const tooltipID =
|
|
58
|
+
const buttonRef = useRef();
|
|
59
|
+
const tooltipID = useId();
|
|
60
|
+
const toggleId = useId();
|
|
61
|
+
const contentId = useId();
|
|
62
|
+
const codeBlockRef = useRef<HTMLDivElement>(null);
|
|
24
63
|
|
|
25
64
|
const language = /language-(\w+)/.exec(className || '')?.[1];
|
|
26
65
|
|
|
66
|
+
// Get custom toggle text from data attributes if available - for use with rehype plugins
|
|
67
|
+
const customExpandedText = props['data-expanded-text'];
|
|
68
|
+
const customCollapsedText = props['data-collapsed-text'];
|
|
69
|
+
|
|
70
|
+
const finalExpandedText = customExpandedText || expandedText;
|
|
71
|
+
const finalCollapsedText = customCollapsedText || collapsedText;
|
|
72
|
+
|
|
73
|
+
if (
|
|
74
|
+
(customExpandedText && expandedText !== DEFAULT_EXPANDED_TEXT) ||
|
|
75
|
+
(customCollapsedText && collapsedText !== DEFAULT_COLLAPSED_TEXT)
|
|
76
|
+
) {
|
|
77
|
+
// eslint-disable-next-line no-console
|
|
78
|
+
console.error(
|
|
79
|
+
'Message:',
|
|
80
|
+
'Custom rehype plugins that rely on data-expanded-text or data-collapsed-text will override expandedText and collapsedText props if both are passed in.'
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const onToggle = (isExpanded) => {
|
|
85
|
+
setIsExpanded(isExpanded);
|
|
86
|
+
};
|
|
87
|
+
|
|
27
88
|
// Handle clicking copy button
|
|
28
|
-
const handleCopy =
|
|
89
|
+
const handleCopy = useCallback((event, text) => {
|
|
29
90
|
navigator.clipboard.writeText(text.toString());
|
|
30
91
|
setCopied(true);
|
|
31
92
|
}, []);
|
|
32
93
|
|
|
33
94
|
// Reset copied state
|
|
34
|
-
|
|
95
|
+
useEffect(() => {
|
|
35
96
|
if (copied) {
|
|
36
97
|
const timer = setTimeout(() => {
|
|
37
98
|
setCopied(false);
|
|
@@ -56,7 +117,7 @@ const CodeBlockMessage = ({
|
|
|
56
117
|
{language && <div className="pf-chatbot__message-code-block-language">{language}</div>}
|
|
57
118
|
<Button
|
|
58
119
|
ref={buttonRef}
|
|
59
|
-
aria-label={ariaLabel ?? 'Copy code
|
|
120
|
+
aria-label={ariaLabel ?? 'Copy code'}
|
|
60
121
|
variant="plain"
|
|
61
122
|
className="pf-chatbot__button--copy"
|
|
62
123
|
onClick={(event) => handleCopy(event, children)}
|
|
@@ -69,17 +130,40 @@ const CodeBlockMessage = ({
|
|
|
69
130
|
);
|
|
70
131
|
|
|
71
132
|
return (
|
|
72
|
-
<div className="pf-chatbot__message-code-block">
|
|
133
|
+
<div className="pf-chatbot__message-code-block" ref={codeBlockRef}>
|
|
73
134
|
<CodeBlock actions={actions}>
|
|
74
135
|
<CodeBlockCode>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
136
|
+
<>
|
|
137
|
+
{isExpandable ? (
|
|
138
|
+
<ExpandableSection
|
|
139
|
+
variant={ExpandableSectionVariant.truncate}
|
|
140
|
+
isExpanded={isExpanded}
|
|
141
|
+
isDetached
|
|
142
|
+
toggleId={toggleId}
|
|
143
|
+
contentId={contentId}
|
|
144
|
+
{...expandableSectionProps}
|
|
145
|
+
>
|
|
146
|
+
{children}
|
|
147
|
+
</ExpandableSection>
|
|
148
|
+
) : (
|
|
149
|
+
children
|
|
150
|
+
)}
|
|
151
|
+
</>
|
|
82
152
|
</CodeBlockCode>
|
|
153
|
+
{isExpandable && (
|
|
154
|
+
<ExpandableSectionToggle
|
|
155
|
+
isExpanded={isExpanded}
|
|
156
|
+
onToggle={onToggle}
|
|
157
|
+
direction="up"
|
|
158
|
+
toggleId={toggleId}
|
|
159
|
+
contentId={contentId}
|
|
160
|
+
hasTruncatedContent
|
|
161
|
+
className="pf-chatbot__message-code-toggle"
|
|
162
|
+
{...expandableSectionToggleProps}
|
|
163
|
+
>
|
|
164
|
+
{isExpanded ? finalExpandedText : finalCollapsedText}
|
|
165
|
+
</ExpandableSectionToggle>
|
|
166
|
+
)}
|
|
83
167
|
</CodeBlock>
|
|
84
168
|
</div>
|
|
85
169
|
);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// Chatbot Main - Message - Content - Error
|
|
3
3
|
// ============================================================================
|
|
4
4
|
|
|
5
|
-
import React from 'react';
|
|
6
5
|
import { Alert, AlertProps } from '@patternfly/react-core';
|
|
7
6
|
|
|
8
7
|
const ErrorMessage = ({ title, actionLinks, children, ...props }: AlertProps) => (
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
// Chatbot Main - Message - Content - Image
|
|
3
3
|
// ============================================================================
|
|
4
4
|
|
|
5
|
-
import React from 'react';
|
|
6
5
|
import { ExtraProps } from 'react-markdown';
|
|
7
6
|
|
|
8
|
-
const ImageMessage = ({ children, ...props }: JSX.IntrinsicElements['img'] & ExtraProps) => (
|
|
7
|
+
const ImageMessage = ({ children, ...props }: Omit<JSX.IntrinsicElements['img'], 'ref'> & ExtraProps) => (
|
|
9
8
|
<img className="pf-chatbot__message-image" {...props}>
|
|
10
9
|
{children}
|
|
11
10
|
</img>
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// Chatbot Main - Message - Content - Link
|
|
3
3
|
// ============================================================================
|
|
4
4
|
|
|
5
|
-
import React from 'react';
|
|
6
5
|
import { Button, ButtonProps } from '@patternfly/react-core';
|
|
7
6
|
import { ExternalLinkSquareAltIcon } from '@patternfly/react-icons';
|
|
8
7
|
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// Chatbot Main - Message - Content - List
|
|
3
3
|
// ============================================================================
|
|
4
4
|
|
|
5
|
-
import React from 'react';
|
|
6
5
|
import { ExtraProps } from 'react-markdown';
|
|
7
6
|
import { List, ListComponent, OrderType } from '@patternfly/react-core';
|
|
8
7
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Fragment } from 'react';
|
|
2
2
|
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import '@testing-library/jest-dom';
|
|
4
4
|
import Message from './Message';
|
|
@@ -142,18 +142,20 @@ const EMPTY_TABLE = `
|
|
|
142
142
|
|
|
143
143
|
const IMAGE = ``;
|
|
144
144
|
|
|
145
|
+
const INLINE_IMAGE = `inline text `;
|
|
146
|
+
|
|
145
147
|
const ERROR = {
|
|
146
148
|
title: 'Could not load chat',
|
|
147
149
|
children: 'Wait a few minutes and check your network settings. If the issue persists: ',
|
|
148
150
|
actionLinks: (
|
|
149
|
-
<
|
|
151
|
+
<Fragment>
|
|
150
152
|
<AlertActionLink component="a" href="#">
|
|
151
153
|
Start a new chat
|
|
152
154
|
</AlertActionLink>
|
|
153
155
|
<AlertActionLink component="a" href="#">
|
|
154
156
|
Contact support
|
|
155
157
|
</AlertActionLink>
|
|
156
|
-
</
|
|
158
|
+
</Fragment>
|
|
157
159
|
)
|
|
158
160
|
};
|
|
159
161
|
const checkListItemsRendered = () => {
|
|
@@ -426,6 +428,8 @@ describe('Message', () => {
|
|
|
426
428
|
// eslint-disable-next-line no-console
|
|
427
429
|
share: { onClick: () => console.log('Share') },
|
|
428
430
|
// eslint-disable-next-line no-console
|
|
431
|
+
download: { onClick: () => console.log('Download') },
|
|
432
|
+
// eslint-disable-next-line no-console
|
|
429
433
|
listen: { onClick: () => console.log('Listen') }
|
|
430
434
|
}}
|
|
431
435
|
/>
|
|
@@ -452,6 +456,8 @@ describe('Message', () => {
|
|
|
452
456
|
// eslint-disable-next-line no-console
|
|
453
457
|
share: { onClick: () => console.log('Share') },
|
|
454
458
|
// eslint-disable-next-line no-console
|
|
459
|
+
download: { onClick: () => console.log('Download') },
|
|
460
|
+
// eslint-disable-next-line no-console
|
|
455
461
|
listen: { onClick: () => console.log('Listen') }
|
|
456
462
|
}}
|
|
457
463
|
/>
|
|
@@ -485,7 +491,37 @@ describe('Message', () => {
|
|
|
485
491
|
it('should render code correctly', () => {
|
|
486
492
|
render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
|
|
487
493
|
expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
|
|
488
|
-
expect(screen.getByRole('button', { name: 'Copy code
|
|
494
|
+
expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
|
|
495
|
+
expect(screen.getByText(/yaml/)).toBeTruthy();
|
|
496
|
+
expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
|
|
497
|
+
expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
|
|
498
|
+
expect(screen.getByText(/metadata:/i)).toBeTruthy();
|
|
499
|
+
expect(screen.getByText(/name:/i)).toBeTruthy();
|
|
500
|
+
expect(screen.getByText(/azure-sample-repo0oooo00ooo/i)).toBeTruthy();
|
|
501
|
+
expect(screen.getByText(/spec/i)).toBeTruthy();
|
|
502
|
+
expect(screen.getByText(/connectionConfig:/i)).toBeTruthy();
|
|
503
|
+
expect(screen.getByText(/url:/i)).toBeTruthy();
|
|
504
|
+
expect(
|
|
505
|
+
screen.getByText(/https:\/\/raw.githubusercontent.com\/Azure-Samples\/helm-charts\/master\/docs/i)
|
|
506
|
+
).toBeTruthy();
|
|
507
|
+
});
|
|
508
|
+
it('should render expandable code correctly', () => {
|
|
509
|
+
render(
|
|
510
|
+
<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
|
|
511
|
+
);
|
|
512
|
+
expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
|
|
513
|
+
expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
|
|
514
|
+
expect(screen.getByText(/yaml/)).toBeTruthy();
|
|
515
|
+
expect(screen.getByText(/apiVersion/i)).toBeTruthy();
|
|
516
|
+
expect(screen.getByRole('button', { name: /Show more/i })).toBeTruthy();
|
|
517
|
+
});
|
|
518
|
+
it('should handle click on expandable code correctly', async () => {
|
|
519
|
+
render(
|
|
520
|
+
<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
|
|
521
|
+
);
|
|
522
|
+
const button = screen.getByRole('button', { name: /Show more/i });
|
|
523
|
+
await userEvent.click(button);
|
|
524
|
+
expect(screen.getByRole('button', { name: /Show less/i })).toBeTruthy();
|
|
489
525
|
expect(screen.getByText(/yaml/)).toBeTruthy();
|
|
490
526
|
expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
|
|
491
527
|
expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
|
|
@@ -503,8 +539,8 @@ describe('Message', () => {
|
|
|
503
539
|
// need explicit setup since RTL stubs clipboard if you do this
|
|
504
540
|
const user = userEvent.setup();
|
|
505
541
|
render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
|
|
506
|
-
expect(screen.getByRole('button', { name: 'Copy code
|
|
507
|
-
await user.click(screen.getByRole('button', { name: 'Copy code
|
|
542
|
+
expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
|
|
543
|
+
await user.click(screen.getByRole('button', { name: 'Copy code' }));
|
|
508
544
|
const clipboardText = await navigator.clipboard.readText();
|
|
509
545
|
expect(clipboardText.trim()).toEqual(CODE.trim());
|
|
510
546
|
});
|
|
@@ -787,6 +823,13 @@ describe('Message', () => {
|
|
|
787
823
|
render(<Message avatar="./img" role="user" name="User" content={IMAGE} />);
|
|
788
824
|
expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
|
|
789
825
|
});
|
|
826
|
+
it('inline image parent should have class pf-chatbot__message-and-actions', () => {
|
|
827
|
+
render(<Message avatar="./img" role="user" name="User" content={INLINE_IMAGE} />);
|
|
828
|
+
expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
|
|
829
|
+
expect(
|
|
830
|
+
screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i }).parentElement
|
|
831
|
+
).toHaveClass('pf-chatbot__message-and-actions');
|
|
832
|
+
});
|
|
790
833
|
it('should handle external links correctly', () => {
|
|
791
834
|
render(<Message avatar="./img" role="user" name="User" content={`[PatternFly](https://www.patternfly.org/)`} />);
|
|
792
835
|
// we are mocking rehype libraries, so we can't test target _blank addition on links directly with RTL
|
package/src/Message/Message.tsx
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// Chatbot Main - Message
|
|
3
3
|
// ============================================================================
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
|
|
4
|
+
import { forwardRef, ReactNode, useEffect, useState } from 'react';
|
|
5
|
+
import type { FunctionComponent, HTMLProps, MouseEvent as ReactMouseEvent, Ref } from 'react';
|
|
7
6
|
import Markdown from 'react-markdown';
|
|
8
7
|
import remarkGfm from 'remark-gfm';
|
|
9
8
|
import {
|
|
@@ -12,6 +11,8 @@ import {
|
|
|
12
11
|
AvatarProps,
|
|
13
12
|
ButtonProps,
|
|
14
13
|
ContentVariants,
|
|
14
|
+
ExpandableSectionProps,
|
|
15
|
+
ExpandableSectionToggleProps,
|
|
15
16
|
FormProps,
|
|
16
17
|
Label,
|
|
17
18
|
LabelGroupProps,
|
|
@@ -47,6 +48,7 @@ import { PluggableList } from 'react-markdown/lib';
|
|
|
47
48
|
import LinkMessage from './LinkMessage/LinkMessage';
|
|
48
49
|
import ErrorMessage from './ErrorMessage/ErrorMessage';
|
|
49
50
|
import MessageInput from './MessageInput';
|
|
51
|
+
import { rehypeMoveImagesOutOfParagraphs } from './Plugins/rehypeMoveImagesOutOfParagraphs';
|
|
50
52
|
|
|
51
53
|
export interface MessageAttachment {
|
|
52
54
|
/** Name of file attached to the message */
|
|
@@ -78,7 +80,7 @@ export interface MessageExtraContent {
|
|
|
78
80
|
endContent?: ReactNode;
|
|
79
81
|
}
|
|
80
82
|
|
|
81
|
-
export interface MessageProps extends Omit<
|
|
83
|
+
export interface MessageProps extends Omit<HTMLProps<HTMLDivElement>, 'role'> {
|
|
82
84
|
/** Unique id for message */
|
|
83
85
|
id?: string;
|
|
84
86
|
/** Role of the user sending the message */
|
|
@@ -107,9 +109,24 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
|
|
|
107
109
|
botWord?: string;
|
|
108
110
|
/** Label for the English "Loading message," displayed to screenreaders when loading a message */
|
|
109
111
|
loadingWord?: string;
|
|
112
|
+
/** Props for code blocks */
|
|
110
113
|
codeBlockProps?: {
|
|
114
|
+
/** Aria label applied to code blocks */
|
|
111
115
|
'aria-label'?: string;
|
|
116
|
+
/** Class name applied to code blocks */
|
|
112
117
|
className?: string;
|
|
118
|
+
/** Whether code blocks are expandable */
|
|
119
|
+
isExpandable?: boolean;
|
|
120
|
+
/** Length of text initially shown in expandable code blocks; defaults to 10 characters */
|
|
121
|
+
maxLength?: number;
|
|
122
|
+
/** Additional props passed to expandable section if isExpandable is applied */
|
|
123
|
+
expandableSectionProps?: Omit<ExpandableSectionProps, 'ref'>;
|
|
124
|
+
/** Additional props passed to expandable toggle if isExpandable is applied */
|
|
125
|
+
expandableSectionToggleProps?: ExpandableSectionToggleProps;
|
|
126
|
+
/** Link text applied to expandable toggle when expanded */
|
|
127
|
+
expandedText?: string;
|
|
128
|
+
/** Link text applied to expandable toggle when collapsed */
|
|
129
|
+
collapsedText?: string;
|
|
113
130
|
};
|
|
114
131
|
/** Props for quick responses */
|
|
115
132
|
quickResponses?: QuickResponse[];
|
|
@@ -139,7 +156,7 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
|
|
|
139
156
|
/** Turns the container into a live region so that changes to content within the Message, such as appending a feedback card, are reliably announced to assistive technology. */
|
|
140
157
|
isLiveRegion?: boolean;
|
|
141
158
|
/** Ref applied to message */
|
|
142
|
-
innerRef?:
|
|
159
|
+
innerRef?: Ref<HTMLDivElement>;
|
|
143
160
|
/** Props for table message. It is important to include a detailed aria-label that describes the purpose of the table. */
|
|
144
161
|
tableProps?: Required<Pick<TableProps, 'aria-label'>> & TableProps;
|
|
145
162
|
/** Additional rehype plugins passed from the consumer */
|
|
@@ -159,16 +176,16 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
|
|
|
159
176
|
/** Label for the English word "Cancel" used in edit mode. */
|
|
160
177
|
cancelWord?: string;
|
|
161
178
|
/** Callback function for when edit mode update button is clicked */
|
|
162
|
-
onEditUpdate?: (event:
|
|
179
|
+
onEditUpdate?: (event: ReactMouseEvent<HTMLButtonElement, MouseEvent>) => void;
|
|
163
180
|
/** Callback functionf or when edit cancel update button is clicked */
|
|
164
|
-
onEditCancel?: (event:
|
|
181
|
+
onEditCancel?: (event: ReactMouseEvent<HTMLButtonElement, MouseEvent>) => void;
|
|
165
182
|
/** Props for edit form */
|
|
166
183
|
editFormProps?: FormProps;
|
|
167
184
|
/** Sets message to compact styling. */
|
|
168
185
|
isCompact?: boolean;
|
|
169
186
|
}
|
|
170
187
|
|
|
171
|
-
export const MessageBase:
|
|
188
|
+
export const MessageBase: FunctionComponent<MessageProps> = ({
|
|
172
189
|
role,
|
|
173
190
|
content,
|
|
174
191
|
extraContent,
|
|
@@ -206,14 +223,14 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
|
|
|
206
223
|
isCompact,
|
|
207
224
|
...props
|
|
208
225
|
}: MessageProps) => {
|
|
209
|
-
const [messageText, setMessageText] =
|
|
226
|
+
const [messageText, setMessageText] = useState(content);
|
|
210
227
|
|
|
211
|
-
|
|
228
|
+
useEffect(() => {
|
|
212
229
|
setMessageText(content);
|
|
213
230
|
}, [content]);
|
|
214
231
|
|
|
215
232
|
const { beforeMainContent, afterMainContent, endContent } = extraContent || {};
|
|
216
|
-
let rehypePlugins: PluggableList = [rehypeUnwrapImages];
|
|
233
|
+
let rehypePlugins: PluggableList = [rehypeUnwrapImages, rehypeMoveImagesOutOfParagraphs];
|
|
217
234
|
if (openLinkInNewTab) {
|
|
218
235
|
rehypePlugins = rehypePlugins.concat([[rehypeExternalLinks, { target: '_blank' }, rehypeSanitize]]);
|
|
219
236
|
}
|
|
@@ -243,9 +260,9 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
|
|
|
243
260
|
editPlaceholder={editPlaceholder}
|
|
244
261
|
updateWord={updateWord}
|
|
245
262
|
cancelWord={cancelWord}
|
|
246
|
-
onEditUpdate={(event,
|
|
263
|
+
onEditUpdate={(event: ReactMouseEvent<HTMLButtonElement, MouseEvent>, value: string) => {
|
|
247
264
|
onEditUpdate && onEditUpdate(event);
|
|
248
|
-
setMessageText(
|
|
265
|
+
setMessageText(value);
|
|
249
266
|
}}
|
|
250
267
|
onEditCancel={onEditCancel}
|
|
251
268
|
{...editFormProps}
|
|
@@ -390,7 +407,7 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
|
|
|
390
407
|
);
|
|
391
408
|
};
|
|
392
409
|
|
|
393
|
-
const Message =
|
|
410
|
+
const Message = forwardRef((props: MessageProps, ref: Ref<HTMLDivElement>) => (
|
|
394
411
|
<MessageBase innerRef={ref} {...props} />
|
|
395
412
|
));
|
|
396
413
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// Chatbot Main - Message Input
|
|
3
3
|
// ============================================================================
|
|
4
|
-
|
|
5
|
-
import
|
|
4
|
+
import type { FormEvent, FunctionComponent } from 'react';
|
|
5
|
+
import { useState } from 'react';
|
|
6
6
|
import { ActionGroup, Button, Form, FormProps, TextArea } from '@patternfly/react-core';
|
|
7
7
|
|
|
8
8
|
export interface MessageInputProps extends FormProps {
|
|
@@ -20,7 +20,7 @@ export interface MessageInputProps extends FormProps {
|
|
|
20
20
|
content?: string;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
const MessageInput:
|
|
23
|
+
const MessageInput: FunctionComponent<MessageInputProps> = ({
|
|
24
24
|
editPlaceholder = 'Edit prompt message...',
|
|
25
25
|
updateWord = 'Update',
|
|
26
26
|
cancelWord = 'Cancel',
|
|
@@ -29,9 +29,9 @@ const MessageInput: React.FunctionComponent<MessageInputProps> = ({
|
|
|
29
29
|
content,
|
|
30
30
|
...props
|
|
31
31
|
}: MessageInputProps) => {
|
|
32
|
-
const [messageText, setMessageText] =
|
|
32
|
+
const [messageText, setMessageText] = useState(content ?? '');
|
|
33
33
|
|
|
34
|
-
const onChange = (
|
|
34
|
+
const onChange = (_event: FormEvent<HTMLTextAreaElement>, value: string) => {
|
|
35
35
|
setMessageText(value);
|
|
36
36
|
};
|
|
37
37
|
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
// Chatbot Main - Message - Processing
|
|
3
3
|
// ============================================================================
|
|
4
4
|
|
|
5
|
-
import React from 'react';
|
|
6
|
-
|
|
7
5
|
const MessageLoading = ({ loadingWord }) => (
|
|
8
6
|
<div className="pf-chatbot__message-loading">
|
|
9
7
|
<span className="pf-chatbot__message-loading-dots">
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { rehypeCodeBlockToggle } from './rehypeCodeBlockToggle';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { visit } from 'unist-util-visit';
|
|
2
|
+
import { Element } from 'hast';
|
|
3
|
+
import { Node } from 'unist';
|
|
4
|
+
|
|
5
|
+
// Rehype plugin to add language information to code block props
|
|
6
|
+
// Per Eric, Ideally any toggle buttons that can be navigated to would have unique accessible names
|
|
7
|
+
// For the purposes of our examples this should suffice, but in a real-world use case they may need to be more unique
|
|
8
|
+
export const rehypeCodeBlockToggle = () => (tree: Node) => {
|
|
9
|
+
visit(tree, 'element', (node: Element) => {
|
|
10
|
+
if (node.tagName === 'code' && node.properties?.className) {
|
|
11
|
+
const className = node.properties.className as string[];
|
|
12
|
+
const languageMatch = className.find((cls) => cls.startsWith('language-'));
|
|
13
|
+
|
|
14
|
+
if (languageMatch) {
|
|
15
|
+
const language = languageMatch.replace('language-', '').toUpperCase();
|
|
16
|
+
|
|
17
|
+
// Add the language and toggle text as data attributes
|
|
18
|
+
node.properties['data-language'] = language;
|
|
19
|
+
node.properties['data-expanded-text'] = `Show less ${language} code`;
|
|
20
|
+
node.properties['data-collapsed-text'] = `Show more ${language} code`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { visit } from 'unist-util-visit';
|
|
2
|
+
import { Element } from 'hast';
|
|
3
|
+
import { Node } from 'unist';
|
|
4
|
+
|
|
5
|
+
// Rehype plugin to remove images from within p tags and put them as separate block-level elements.
|
|
6
|
+
// This allows us to avoid having a blue background on images - this is something Kayla requested.
|
|
7
|
+
export const rehypeMoveImagesOutOfParagraphs = () => (tree: Node) => {
|
|
8
|
+
const nodesToRemove: { parent: Element; index: number; node: Element }[] = [];
|
|
9
|
+
|
|
10
|
+
visit(tree, 'element', (node: Element, index: number | null, parent: Element | null) => {
|
|
11
|
+
if (node.tagName === 'p' && node.children) {
|
|
12
|
+
const imagesInParagraph: { node: Element; index: number }[] = [];
|
|
13
|
+
|
|
14
|
+
node.children.forEach((child: Node, childIndex: number) => {
|
|
15
|
+
if (child.type === 'element' && (child as Element).tagName === 'img') {
|
|
16
|
+
imagesInParagraph.push({ node: child as Element, index: childIndex });
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
if (imagesInParagraph.length > 0 && parent && index !== null) {
|
|
21
|
+
imagesInParagraph.forEach(({ node: imgNode, index: imgIndex }) => {
|
|
22
|
+
nodesToRemove.push({ parent: node, index: imgIndex, node: imgNode });
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// To avoid issues with index shifting during removal, we process in reverse
|
|
26
|
+
for (let i = nodesToRemove.length - 1; i >= 0; i--) {
|
|
27
|
+
const { parent: pTag, index: imgIndexToRemove } = nodesToRemove[i];
|
|
28
|
+
if (pTag.children) {
|
|
29
|
+
pTag.children.splice(imgIndexToRemove, 1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Insert the removed images after the paragraph
|
|
34
|
+
const paragraphIndexInParent = parent.children.indexOf(node);
|
|
35
|
+
if (paragraphIndexInParent !== -1) {
|
|
36
|
+
imagesInParagraph.forEach(({ node: imgNode }) => {
|
|
37
|
+
parent.children.splice(paragraphIndexInParent + 1, 0, imgNode);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Remove paragraph if it's now empty after image removal
|
|
42
|
+
if (node.children.length === 0) {
|
|
43
|
+
const paragraphIndexInParent = parent.children.indexOf(node);
|
|
44
|
+
if (paragraphIndexInParent !== -1) {
|
|
45
|
+
parent.children.splice(paragraphIndexInParent, 1);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
nodesToRemove.length = 0;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { FunctionComponent } from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
import { Label, LabelGroup, LabelGroupProps, LabelProps } from '@patternfly/react-core';
|
|
3
4
|
import { CheckIcon } from '@patternfly/react-icons';
|
|
4
5
|
|
|
@@ -19,13 +20,13 @@ export interface QuickResponseProps {
|
|
|
19
20
|
isCompact?: boolean;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
export const QuickResponse:
|
|
23
|
+
export const QuickResponse: FunctionComponent<QuickResponseProps> = ({
|
|
23
24
|
quickResponses,
|
|
24
25
|
quickResponseContainerProps = { numLabels: 5 },
|
|
25
26
|
onSelect,
|
|
26
27
|
isCompact
|
|
27
28
|
}: QuickResponseProps) => {
|
|
28
|
-
const [selectedQuickResponse, setSelectedQuickResponse] =
|
|
29
|
+
const [selectedQuickResponse, setSelectedQuickResponse] = useState<string>();
|
|
29
30
|
|
|
30
31
|
const handleQuickResponseClick = (id: string, onClick?: () => void) => {
|
|
31
32
|
setSelectedQuickResponse(id);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { FC } from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
|
|
3
4
|
interface FallbackImgProps {
|
|
4
5
|
/** Image source */
|
|
@@ -11,8 +12,8 @@ interface FallbackImgProps {
|
|
|
11
12
|
fallback?: React.ReactNode;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
const FallbackImg:
|
|
15
|
-
const [isSrcValid, setIsSrcValid] =
|
|
15
|
+
const FallbackImg: FC<FallbackImgProps> = ({ src, alt, className, fallback }) => {
|
|
16
|
+
const [isSrcValid, setIsSrcValid] = useState<boolean>(true);
|
|
16
17
|
|
|
17
18
|
if (src && isSrcValid) {
|
|
18
19
|
return <img className={className} src={src} alt={alt} onError={() => setIsSrcValid(false)} />;
|