@patternfly/chatbot 6.3.0-prerelease.9 → 6.4.0-prerelease.2
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 +7 -3
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +17 -34
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +73 -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 -3
- 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 +28 -10
- package/dist/cjs/Message/Message.js +50 -72
- package/dist/cjs/Message/Message.test.js +138 -82
- package/dist/cjs/Message/MessageInput.d.ts +4 -2
- package/dist/cjs/Message/MessageInput.js +6 -15
- 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 +26 -3
- package/dist/cjs/MessageBar/AttachButton.js +10 -20
- package/dist/cjs/MessageBar/AttachButton.test.js +102 -24
- package/dist/cjs/MessageBar/MessageBar.d.ts +32 -4
- 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/MessageDivider/MessageDivider.d.ts +9 -0
- package/dist/cjs/MessageDivider/MessageDivider.js +23 -0
- package/dist/cjs/MessageDivider/MessageDivider.test.d.ts +1 -0
- package/dist/cjs/MessageDivider/MessageDivider.test.js +29 -0
- package/dist/cjs/MessageDivider/index.d.ts +2 -0
- package/dist/cjs/MessageDivider/index.js +23 -0
- 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 +8 -3
- package/dist/cjs/ResponseActions/ResponseActions.js +39 -18
- package/dist/cjs/ResponseActions/ResponseActions.test.js +125 -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/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +4 -1
- package/dist/css/main.css +71 -62
- package/dist/css/main.css.map +1 -1
- package/dist/dynamic/MessageDivider/package.json +1 -0
- 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 +7 -3
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +19 -36
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +43 -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 -3
- 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 +28 -10
- package/dist/esm/Message/Message.js +50 -72
- package/dist/esm/Message/Message.test.js +138 -82
- package/dist/esm/Message/MessageInput.d.ts +4 -2
- package/dist/esm/Message/MessageInput.js +6 -12
- 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 +26 -3
- package/dist/esm/MessageBar/AttachButton.js +10 -17
- package/dist/esm/MessageBar/AttachButton.test.js +95 -17
- package/dist/esm/MessageBar/MessageBar.d.ts +32 -4
- 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/MessageDivider/MessageDivider.d.ts +9 -0
- package/dist/esm/MessageDivider/MessageDivider.js +21 -0
- package/dist/esm/MessageDivider/MessageDivider.test.d.ts +1 -0
- package/dist/esm/MessageDivider/MessageDivider.test.js +24 -0
- package/dist/esm/MessageDivider/index.d.ts +2 -0
- package/dist/esm/MessageDivider/index.js +2 -0
- 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 +8 -3
- package/dist/esm/ResponseActions/ResponseActions.js +40 -19
- package/dist/esm/ResponseActions/ResponseActions.test.js +100 -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/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -8
- 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/MessageWithDividers.tsx +24 -0
- 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 +33 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +5 -5
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +61 -18
- 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 +19 -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/ChatbotHeaderDrawerWithPin.tsx +196 -0
- 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 +12 -1
- package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +37 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +34 -1
- 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/ChatbotDisplayMode.tsx +486 -0
- 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/ChatbotTranscripts.tsx +565 -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.scss +1 -1
- 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.scss +1 -1
- 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.scss +14 -2
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +61 -3
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +37 -18
- package/src/ChatbotConversationHistoryNav/EmptyState.tsx +2 -2
- package/src/ChatbotConversationHistoryNav/LoadingState.tsx +2 -2
- package/src/ChatbotFooter/ChatbotFooter.scss +1 -1
- 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.scss +3 -3
- 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.scss +2 -2
- 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 +45 -5
- 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.scss +9 -7
- package/src/Message/Message.test.tsx +84 -6
- package/src/Message/Message.tsx +39 -18
- package/src/Message/MessageInput.tsx +9 -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 +50 -7
- package/src/MessageBar/MessageBar.test.tsx +81 -30
- package/src/MessageBar/MessageBar.tsx +86 -20
- package/src/MessageBar/MicrophoneButton.tsx +10 -7
- package/src/MessageBar/SendButton.scss +3 -3
- 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.scss +1 -1
- 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/MessageDivider/MessageDivider.scss +45 -0
- package/src/MessageDivider/MessageDivider.test.tsx +24 -0
- package/src/MessageDivider/MessageDivider.tsx +35 -0
- package/src/MessageDivider/index.ts +3 -0
- 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 +126 -4
- package/src/ResponseActions/ResponseActions.tsx +92 -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/src/index.ts +3 -0
- package/src/main.scss +1 -52
- package/tsconfig.cjs.json +0 -1
- package/tsconfig.json +3 -3
|
@@ -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';
|
|
@@ -12,6 +12,7 @@ const ALL_ACTIONS = [
|
|
|
12
12
|
{ label: /Good response/i },
|
|
13
13
|
{ label: /Bad response/i },
|
|
14
14
|
{ label: /Copy/i },
|
|
15
|
+
{ label: /Edit/i },
|
|
15
16
|
{ label: /Share/i },
|
|
16
17
|
{ label: /Listen/i }
|
|
17
18
|
];
|
|
@@ -142,18 +143,20 @@ const EMPTY_TABLE = `
|
|
|
142
143
|
|
|
143
144
|
const IMAGE = ``;
|
|
144
145
|
|
|
146
|
+
const INLINE_IMAGE = `inline text `;
|
|
147
|
+
|
|
145
148
|
const ERROR = {
|
|
146
149
|
title: 'Could not load chat',
|
|
147
150
|
children: 'Wait a few minutes and check your network settings. If the issue persists: ',
|
|
148
151
|
actionLinks: (
|
|
149
|
-
<
|
|
152
|
+
<Fragment>
|
|
150
153
|
<AlertActionLink component="a" href="#">
|
|
151
154
|
Start a new chat
|
|
152
155
|
</AlertActionLink>
|
|
153
156
|
<AlertActionLink component="a" href="#">
|
|
154
157
|
Contact support
|
|
155
158
|
</AlertActionLink>
|
|
156
|
-
</
|
|
159
|
+
</Fragment>
|
|
157
160
|
)
|
|
158
161
|
};
|
|
159
162
|
const checkListItemsRendered = () => {
|
|
@@ -424,8 +427,12 @@ describe('Message', () => {
|
|
|
424
427
|
// eslint-disable-next-line no-console
|
|
425
428
|
copy: { onClick: () => console.log('Copy') },
|
|
426
429
|
// eslint-disable-next-line no-console
|
|
430
|
+
edit: { onClick: () => console.log('Edit') },
|
|
431
|
+
// eslint-disable-next-line no-console
|
|
427
432
|
share: { onClick: () => console.log('Share') },
|
|
428
433
|
// eslint-disable-next-line no-console
|
|
434
|
+
download: { onClick: () => console.log('Download') },
|
|
435
|
+
// eslint-disable-next-line no-console
|
|
429
436
|
listen: { onClick: () => console.log('Listen') }
|
|
430
437
|
}}
|
|
431
438
|
/>
|
|
@@ -450,8 +457,12 @@ describe('Message', () => {
|
|
|
450
457
|
// eslint-disable-next-line no-console
|
|
451
458
|
copy: { onClick: () => console.log('Copy') },
|
|
452
459
|
// eslint-disable-next-line no-console
|
|
460
|
+
edit: { onClick: () => console.log('Edit') },
|
|
461
|
+
// eslint-disable-next-line no-console
|
|
453
462
|
share: { onClick: () => console.log('Share') },
|
|
454
463
|
// eslint-disable-next-line no-console
|
|
464
|
+
download: { onClick: () => console.log('Download') },
|
|
465
|
+
// eslint-disable-next-line no-console
|
|
455
466
|
listen: { onClick: () => console.log('Listen') }
|
|
456
467
|
}}
|
|
457
468
|
/>
|
|
@@ -461,6 +472,36 @@ describe('Message', () => {
|
|
|
461
472
|
expect(screen.queryByRole('button', { name: label })).toBeFalsy();
|
|
462
473
|
});
|
|
463
474
|
});
|
|
475
|
+
it('should not show actions if isEditable is true', async () => {
|
|
476
|
+
render(
|
|
477
|
+
<Message
|
|
478
|
+
avatar="./img"
|
|
479
|
+
role="bot"
|
|
480
|
+
name="Bot"
|
|
481
|
+
content="Hi"
|
|
482
|
+
isEditable
|
|
483
|
+
actions={{
|
|
484
|
+
// eslint-disable-next-line no-console
|
|
485
|
+
positive: { onClick: () => console.log('Good response') },
|
|
486
|
+
// eslint-disable-next-line no-console
|
|
487
|
+
negative: { onClick: () => console.log('Bad response') },
|
|
488
|
+
// eslint-disable-next-line no-console
|
|
489
|
+
copy: { onClick: () => console.log('Copy') },
|
|
490
|
+
// eslint-disable-next-line no-console
|
|
491
|
+
edit: { onClick: () => console.log('Edit') },
|
|
492
|
+
// eslint-disable-next-line no-console
|
|
493
|
+
share: { onClick: () => console.log('Share') },
|
|
494
|
+
// eslint-disable-next-line no-console
|
|
495
|
+
download: { onClick: () => console.log('Download') },
|
|
496
|
+
// eslint-disable-next-line no-console
|
|
497
|
+
listen: { onClick: () => console.log('Listen') }
|
|
498
|
+
}}
|
|
499
|
+
/>
|
|
500
|
+
);
|
|
501
|
+
ALL_ACTIONS.forEach(({ label }) => {
|
|
502
|
+
expect(screen.queryByRole('button', { name: label })).toBeFalsy();
|
|
503
|
+
});
|
|
504
|
+
});
|
|
464
505
|
it('should render unordered lists correctly', () => {
|
|
465
506
|
render(<Message avatar="./img" role="user" name="User" content={UNORDERED_LIST} />);
|
|
466
507
|
expect(screen.getByText('Here is an unordered list:')).toBeTruthy();
|
|
@@ -485,7 +526,37 @@ describe('Message', () => {
|
|
|
485
526
|
it('should render code correctly', () => {
|
|
486
527
|
render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
|
|
487
528
|
expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
|
|
488
|
-
expect(screen.getByRole('button', { name: 'Copy code
|
|
529
|
+
expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
|
|
530
|
+
expect(screen.getByText(/yaml/)).toBeTruthy();
|
|
531
|
+
expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
|
|
532
|
+
expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
|
|
533
|
+
expect(screen.getByText(/metadata:/i)).toBeTruthy();
|
|
534
|
+
expect(screen.getByText(/name:/i)).toBeTruthy();
|
|
535
|
+
expect(screen.getByText(/azure-sample-repo0oooo00ooo/i)).toBeTruthy();
|
|
536
|
+
expect(screen.getByText(/spec/i)).toBeTruthy();
|
|
537
|
+
expect(screen.getByText(/connectionConfig:/i)).toBeTruthy();
|
|
538
|
+
expect(screen.getByText(/url:/i)).toBeTruthy();
|
|
539
|
+
expect(
|
|
540
|
+
screen.getByText(/https:\/\/raw.githubusercontent.com\/Azure-Samples\/helm-charts\/master\/docs/i)
|
|
541
|
+
).toBeTruthy();
|
|
542
|
+
});
|
|
543
|
+
it('should render expandable code correctly', () => {
|
|
544
|
+
render(
|
|
545
|
+
<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
|
|
546
|
+
);
|
|
547
|
+
expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
|
|
548
|
+
expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
|
|
549
|
+
expect(screen.getByText(/yaml/)).toBeTruthy();
|
|
550
|
+
expect(screen.getByText(/apiVersion/i)).toBeTruthy();
|
|
551
|
+
expect(screen.getByRole('button', { name: /Show more/i })).toBeTruthy();
|
|
552
|
+
});
|
|
553
|
+
it('should handle click on expandable code correctly', async () => {
|
|
554
|
+
render(
|
|
555
|
+
<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
|
|
556
|
+
);
|
|
557
|
+
const button = screen.getByRole('button', { name: /Show more/i });
|
|
558
|
+
await userEvent.click(button);
|
|
559
|
+
expect(screen.getByRole('button', { name: /Show less/i })).toBeTruthy();
|
|
489
560
|
expect(screen.getByText(/yaml/)).toBeTruthy();
|
|
490
561
|
expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
|
|
491
562
|
expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
|
|
@@ -503,8 +574,8 @@ describe('Message', () => {
|
|
|
503
574
|
// need explicit setup since RTL stubs clipboard if you do this
|
|
504
575
|
const user = userEvent.setup();
|
|
505
576
|
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
|
|
577
|
+
expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
|
|
578
|
+
await user.click(screen.getByRole('button', { name: 'Copy code' }));
|
|
508
579
|
const clipboardText = await navigator.clipboard.readText();
|
|
509
580
|
expect(clipboardText.trim()).toEqual(CODE.trim());
|
|
510
581
|
});
|
|
@@ -787,6 +858,13 @@ describe('Message', () => {
|
|
|
787
858
|
render(<Message avatar="./img" role="user" name="User" content={IMAGE} />);
|
|
788
859
|
expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
|
|
789
860
|
});
|
|
861
|
+
it('inline image parent should have class pf-chatbot__message-and-actions', () => {
|
|
862
|
+
render(<Message avatar="./img" role="user" name="User" content={INLINE_IMAGE} />);
|
|
863
|
+
expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
|
|
864
|
+
expect(
|
|
865
|
+
screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i }).parentElement
|
|
866
|
+
).toHaveClass('pf-chatbot__message-and-actions');
|
|
867
|
+
});
|
|
790
868
|
it('should handle external links correctly', () => {
|
|
791
869
|
render(<Message avatar="./img" role="user" name="User" content={`[PatternFly](https://www.patternfly.org/)`} />);
|
|
792
870
|
// 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,
|
|
@@ -43,10 +44,11 @@ import ImageMessage from './ImageMessage/ImageMessage';
|
|
|
43
44
|
import rehypeUnwrapImages from 'rehype-unwrap-images';
|
|
44
45
|
import rehypeExternalLinks from 'rehype-external-links';
|
|
45
46
|
import rehypeSanitize from 'rehype-sanitize';
|
|
46
|
-
import { PluggableList } from '
|
|
47
|
+
import { PluggableList } from 'unified';
|
|
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 */
|
|
@@ -97,7 +99,7 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
|
|
|
97
99
|
isLoading?: boolean;
|
|
98
100
|
/** Array of attachments attached to a message */
|
|
99
101
|
attachments?: MessageAttachment[];
|
|
100
|
-
/** Props for message actions, such as feedback (positive or negative), copy button, share, and listen */
|
|
102
|
+
/** Props for message actions, such as feedback (positive or negative), copy button, edit message, share, and listen */
|
|
101
103
|
actions?: {
|
|
102
104
|
[key: string]: ActionProps;
|
|
103
105
|
};
|
|
@@ -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,18 @@ 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;
|
|
182
|
+
/** Ref applied to editable message input */
|
|
183
|
+
inputRef?: Ref<HTMLTextAreaElement>;
|
|
165
184
|
/** Props for edit form */
|
|
166
185
|
editFormProps?: FormProps;
|
|
167
186
|
/** Sets message to compact styling. */
|
|
168
187
|
isCompact?: boolean;
|
|
169
188
|
}
|
|
170
189
|
|
|
171
|
-
export const MessageBase:
|
|
190
|
+
export const MessageBase: FunctionComponent<MessageProps> = ({
|
|
172
191
|
role,
|
|
173
192
|
content,
|
|
174
193
|
extraContent,
|
|
@@ -202,18 +221,19 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
|
|
|
202
221
|
cancelWord = 'Cancel',
|
|
203
222
|
onEditUpdate,
|
|
204
223
|
onEditCancel,
|
|
224
|
+
inputRef,
|
|
205
225
|
editFormProps,
|
|
206
226
|
isCompact,
|
|
207
227
|
...props
|
|
208
228
|
}: MessageProps) => {
|
|
209
|
-
const [messageText, setMessageText] =
|
|
229
|
+
const [messageText, setMessageText] = useState(content);
|
|
210
230
|
|
|
211
|
-
|
|
231
|
+
useEffect(() => {
|
|
212
232
|
setMessageText(content);
|
|
213
233
|
}, [content]);
|
|
214
234
|
|
|
215
235
|
const { beforeMainContent, afterMainContent, endContent } = extraContent || {};
|
|
216
|
-
let rehypePlugins: PluggableList = [rehypeUnwrapImages];
|
|
236
|
+
let rehypePlugins: PluggableList = [rehypeUnwrapImages, rehypeMoveImagesOutOfParagraphs];
|
|
217
237
|
if (openLinkInNewTab) {
|
|
218
238
|
rehypePlugins = rehypePlugins.concat([[rehypeExternalLinks, { target: '_blank' }, rehypeSanitize]]);
|
|
219
239
|
}
|
|
@@ -239,15 +259,16 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
|
|
|
239
259
|
<>
|
|
240
260
|
{beforeMainContent && <>{beforeMainContent}</>}
|
|
241
261
|
<MessageInput
|
|
242
|
-
content={
|
|
262
|
+
content={messageText}
|
|
243
263
|
editPlaceholder={editPlaceholder}
|
|
244
264
|
updateWord={updateWord}
|
|
245
265
|
cancelWord={cancelWord}
|
|
246
|
-
onEditUpdate={(event,
|
|
266
|
+
onEditUpdate={(event: ReactMouseEvent<HTMLButtonElement, MouseEvent>, value: string) => {
|
|
247
267
|
onEditUpdate && onEditUpdate(event);
|
|
248
|
-
setMessageText(
|
|
268
|
+
setMessageText(value);
|
|
249
269
|
}}
|
|
250
270
|
onEditCancel={onEditCancel}
|
|
271
|
+
inputRef={inputRef}
|
|
251
272
|
{...editFormProps}
|
|
252
273
|
/>
|
|
253
274
|
</>
|
|
@@ -352,7 +373,7 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
|
|
|
352
373
|
isCompact={isCompact}
|
|
353
374
|
/>
|
|
354
375
|
)}
|
|
355
|
-
{!isLoading && actions && <ResponseActions actions={actions} />}
|
|
376
|
+
{!isLoading && !isEditable && actions && <ResponseActions actions={actions} />}
|
|
356
377
|
{userFeedbackForm && <UserFeedback {...userFeedbackForm} timestamp={dateString} isCompact={isCompact} />}
|
|
357
378
|
{userFeedbackComplete && (
|
|
358
379
|
<UserFeedbackComplete {...userFeedbackComplete} timestamp={dateString} isCompact={isCompact} />
|
|
@@ -390,7 +411,7 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
|
|
|
390
411
|
);
|
|
391
412
|
};
|
|
392
413
|
|
|
393
|
-
const Message =
|
|
414
|
+
const Message = forwardRef((props: MessageProps, ref: Ref<HTMLDivElement>) => (
|
|
394
415
|
<MessageBase innerRef={ref} {...props} />
|
|
395
416
|
));
|
|
396
417
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// Chatbot Main - Message Input
|
|
3
3
|
// ============================================================================
|
|
4
|
-
|
|
5
|
-
import
|
|
4
|
+
import type { FormEvent, FunctionComponent, Ref } 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 {
|
|
@@ -16,22 +16,25 @@ export interface MessageInputProps extends FormProps {
|
|
|
16
16
|
onEditUpdate?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>, value: string) => void;
|
|
17
17
|
/** Callback functionf or when edit cancel update button is clicked */
|
|
18
18
|
onEditCancel?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
|
|
19
|
+
/** Ref applied to editable message input */
|
|
20
|
+
inputRef?: Ref<HTMLTextAreaElement>;
|
|
19
21
|
/** Message text */
|
|
20
22
|
content?: string;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
const MessageInput:
|
|
25
|
+
const MessageInput: FunctionComponent<MessageInputProps> = ({
|
|
24
26
|
editPlaceholder = 'Edit prompt message...',
|
|
25
27
|
updateWord = 'Update',
|
|
26
28
|
cancelWord = 'Cancel',
|
|
27
29
|
onEditUpdate,
|
|
28
30
|
onEditCancel,
|
|
31
|
+
inputRef,
|
|
29
32
|
content,
|
|
30
33
|
...props
|
|
31
34
|
}: MessageInputProps) => {
|
|
32
|
-
const [messageText, setMessageText] =
|
|
35
|
+
const [messageText, setMessageText] = useState(content ?? '');
|
|
33
36
|
|
|
34
|
-
const onChange = (
|
|
37
|
+
const onChange = (_event: FormEvent<HTMLTextAreaElement>, value: string) => {
|
|
35
38
|
setMessageText(value);
|
|
36
39
|
};
|
|
37
40
|
|
|
@@ -43,6 +46,7 @@ const MessageInput: React.FunctionComponent<MessageInputProps> = ({
|
|
|
43
46
|
onChange={onChange}
|
|
44
47
|
aria-label={editPlaceholder}
|
|
45
48
|
autoResize
|
|
49
|
+
ref={inputRef}
|
|
46
50
|
/>
|
|
47
51
|
<ActionGroup className="pf-chatbot__message-edit-buttons">
|
|
48
52
|
<Button variant="primary" onClick={(event) => onEditUpdate && onEditUpdate(event, messageText)}>
|
|
@@ -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)} />;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { FC, ReactNode } from 'react';
|
|
2
2
|
import RocketIcon from '@patternfly/react-icons/dist/js/icons/rocket-icon';
|
|
3
3
|
import OutlinedBookmarkIcon from '@patternfly/react-icons/dist/js/icons/outlined-bookmark-icon';
|
|
4
4
|
import {
|
|
@@ -53,7 +53,7 @@ export interface QuickStartTileProps {
|
|
|
53
53
|
isCompact?: boolean;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
const QuickStartTile:
|
|
56
|
+
const QuickStartTile: FC<QuickStartTileProps> = ({
|
|
57
57
|
className,
|
|
58
58
|
quickStart,
|
|
59
59
|
onClick,
|
|
@@ -71,7 +71,7 @@ const QuickStartTile: React.FC<QuickStartTileProps> = ({
|
|
|
71
71
|
spec: { icon, displayName, description, durationMinutes, prerequisites, link, type }
|
|
72
72
|
} = quickStart;
|
|
73
73
|
|
|
74
|
-
let quickStartIcon:
|
|
74
|
+
let quickStartIcon: ReactNode;
|
|
75
75
|
if (typeof icon === 'object') {
|
|
76
76
|
quickStartIcon = <Icon size="2xl">{icon}</Icon>;
|
|
77
77
|
} else {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { FC } from 'react';
|
|
2
|
+
import { useRef } from 'react';
|
|
2
3
|
import { Button, Flex, pluralize, Popover } from '@patternfly/react-core';
|
|
3
4
|
import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
4
5
|
|
|
@@ -29,7 +30,7 @@ export function pluralizeWord(i: number, singular: string, plural?: string) {
|
|
|
29
30
|
return `${i === 1 ? singular : plural}`;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
const QuickStartTileDescription:
|
|
33
|
+
const QuickStartTileDescription: FC<QuickStartTileDescriptionProps> = ({
|
|
33
34
|
description,
|
|
34
35
|
prerequisites,
|
|
35
36
|
prerequisiteWord = 'Prerequisite',
|
|
@@ -37,7 +38,7 @@ const QuickStartTileDescription: React.FC<QuickStartTileDescriptionProps> = ({
|
|
|
37
38
|
quickStartButtonAriaLabel = 'Show prerequisites'
|
|
38
39
|
}) => {
|
|
39
40
|
const prereqs = prerequisites?.filter((p) => p);
|
|
40
|
-
const buttonRef =
|
|
41
|
+
const buttonRef = useRef<HTMLButtonElement>(null);
|
|
41
42
|
const pluralizedPrereq = pluralizeWord(prereqs?.length || 0, prerequisiteWord, prerequisiteWordPlural);
|
|
42
43
|
return (
|
|
43
44
|
<>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { Button, Flex } from '@patternfly/react-core';
|
|
2
|
+
import type { FunctionComponent } from 'react';
|
|
3
3
|
|
|
4
4
|
interface QuickStartTileHeaderProps {
|
|
5
5
|
/** Name for the header */
|
|
@@ -10,7 +10,7 @@ interface QuickStartTileHeaderProps {
|
|
|
10
10
|
onSelect: (e: React.FormEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent>) => void;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
const QuickStartTileHeader:
|
|
13
|
+
const QuickStartTileHeader: FunctionComponent<QuickStartTileHeaderProps> = ({ name, quickStartId, onSelect }) => (
|
|
14
14
|
<Flex flexWrap={{ default: 'nowrap' }}>
|
|
15
15
|
<Button data-test="title" id={quickStartId} variant="link" isInline onClick={onSelect}>
|
|
16
16
|
{name}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ButtonProps } from '@patternfly/react-core';
|
|
2
|
+
import type { ComponentType, ReactNode, SyntheticEvent } from 'react';
|
|
2
3
|
|
|
3
4
|
// These types are all from the QuickStart extension.
|
|
4
5
|
// We want to ensure parity, so be careful when adjusting these.
|
|
@@ -77,9 +78,9 @@ export interface QuickstartAction {
|
|
|
77
78
|
/** Screen reader aria label. */
|
|
78
79
|
'aria-label': string;
|
|
79
80
|
/** Icon to be rendered as a plain button, by default Bookmark outlined will be used. */
|
|
80
|
-
icon?:
|
|
81
|
+
icon?: ComponentType<unknown>;
|
|
81
82
|
/** Callback with synthetic event parameter. */
|
|
82
|
-
onClick?: (e:
|
|
83
|
+
onClick?: (e: SyntheticEvent) => void;
|
|
83
84
|
/** Additional button props to be rendered as extra props. */
|
|
84
85
|
buttonProps?: ButtonProps;
|
|
85
86
|
}
|
|
@@ -95,7 +96,7 @@ export interface QuickStartSpec {
|
|
|
95
96
|
version?: number;
|
|
96
97
|
displayName: string;
|
|
97
98
|
durationMinutes?: number;
|
|
98
|
-
icon:
|
|
99
|
+
icon: ReactNode;
|
|
99
100
|
description: string;
|
|
100
101
|
prerequisites?: string[];
|
|
101
102
|
introduction?: string;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Chatbot Main - Message - Content - Table
|
|
3
3
|
// ============================================================================
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { Children, cloneElement } from 'react';
|
|
6
6
|
import { ExtraProps } from 'react-markdown';
|
|
7
7
|
import { Table, TableProps } from '@patternfly/react-table';
|
|
8
8
|
|
|
@@ -19,7 +19,7 @@ export interface TableNode {
|
|
|
19
19
|
type: string;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const TableMessage = ({ children, ...props }: TableProps & ExtraProps) => {
|
|
22
|
+
const TableMessage = ({ children, ...props }: Omit<TableProps, 'ref'> & ExtraProps) => {
|
|
23
23
|
const { className, ...rest } = props;
|
|
24
24
|
|
|
25
25
|
// This allows us to parse the nested data we get back from the 3rd party Markdown parser
|
|
@@ -53,9 +53,9 @@ const TableMessage = ({ children, ...props }: TableProps & ExtraProps) => {
|
|
|
53
53
|
// This is somewhat opinionated and may break if 3rd party library changes
|
|
54
54
|
// See Tr and Tbody for other usage
|
|
55
55
|
const modifyChildren = (children) =>
|
|
56
|
-
|
|
56
|
+
Children.map(children, (child) => {
|
|
57
57
|
if (child && headerTextValues?.length > 0) {
|
|
58
|
-
return
|
|
58
|
+
return cloneElement(child, { extraHeaders: headerTextValues });
|
|
59
59
|
}
|
|
60
60
|
return child;
|
|
61
61
|
});
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
// Chatbot Main - Message - Content - Table
|
|
3
3
|
// ============================================================================
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { Children, cloneElement } from 'react';
|
|
6
6
|
import { ExtraProps } from 'react-markdown';
|
|
7
7
|
import { Tbody, TbodyProps } from '@patternfly/react-table';
|
|
8
8
|
|
|
9
|
-
const TbodyProps = ({ children, ...props }: TbodyProps & ExtraProps & { extraHeaders?: string[] }) => {
|
|
9
|
+
const TbodyProps = ({ children, ...props }: Omit<TbodyProps, 'ref'> & ExtraProps & { extraHeaders?: string[] }) => {
|
|
10
10
|
// passthrough so we can place dataLabel on tds
|
|
11
11
|
const modifyChildren = (children) => {
|
|
12
12
|
if (children && props.extraHeaders) {
|
|
13
|
-
return
|
|
13
|
+
return Children.map(children, (child) => cloneElement(child, { extraHeaders: props.extraHeaders }));
|
|
14
14
|
}
|
|
15
15
|
return children;
|
|
16
16
|
};
|