@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
|
@@ -7,36 +7,36 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
11
|
import { act, render, screen } from '@testing-library/react';
|
|
12
12
|
import '@testing-library/jest-dom';
|
|
13
13
|
import userEvent from '@testing-library/user-event';
|
|
14
14
|
import UserFeedbackComplete from './UserFeedbackComplete';
|
|
15
15
|
describe('UserFeedbackComplete', () => {
|
|
16
16
|
it('should render correctly', () => {
|
|
17
|
-
render(
|
|
17
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12" }));
|
|
18
18
|
expect(screen.getByText('Feedback submitted')).toBeTruthy();
|
|
19
19
|
screen.getByText(/We've received your response. Thank you for sharing your feedback!/i);
|
|
20
20
|
expect(screen.queryByRole('button', { name: /Close/i })).toBeFalsy();
|
|
21
21
|
});
|
|
22
22
|
it('should render different title correctly', () => {
|
|
23
|
-
render(
|
|
23
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", title: "Thanks!" }));
|
|
24
24
|
expect(screen.getByText('Thanks!')).toBeTruthy();
|
|
25
25
|
screen.getByText(/We've received your response. Thank you for sharing your feedback!/i);
|
|
26
26
|
});
|
|
27
27
|
it('should render different string body correctly', () => {
|
|
28
|
-
render(
|
|
28
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", body: "Thanks!" }));
|
|
29
29
|
expect(screen.getByText('Feedback submitted')).toBeTruthy();
|
|
30
30
|
expect(screen.getByText('Thanks!')).toBeTruthy();
|
|
31
31
|
});
|
|
32
32
|
it('should render different node body correctly', () => {
|
|
33
|
-
render(
|
|
33
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", body: _jsx("div", { children: "Thanks!" }) }));
|
|
34
34
|
expect(screen.getByText('Feedback submitted')).toBeTruthy();
|
|
35
35
|
expect(screen.getByText('Thanks!')).toBeTruthy();
|
|
36
36
|
});
|
|
37
37
|
it('should handle onClose correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
38
|
const spy = jest.fn();
|
|
39
|
-
render(
|
|
39
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", onClose: spy }));
|
|
40
40
|
const closeButton = screen.getByRole('button', { name: 'Close feedback for message received at 12/12/12' });
|
|
41
41
|
expect(closeButton).toBeTruthy();
|
|
42
42
|
yield userEvent.click(closeButton);
|
|
@@ -44,20 +44,20 @@ describe('UserFeedbackComplete', () => {
|
|
|
44
44
|
}));
|
|
45
45
|
it('should be able to change close button aria label', () => {
|
|
46
46
|
const spy = jest.fn();
|
|
47
|
-
render(
|
|
47
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", onClose: spy, closeButtonAriaLabel: "Ima button" }));
|
|
48
48
|
expect(screen.getByRole('button', { name: /Ima button/i })).toBeTruthy();
|
|
49
49
|
});
|
|
50
50
|
it('should handle className', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
-
render(
|
|
51
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", className: "test", "data-testid": "card" }));
|
|
52
52
|
expect(screen.getByTestId('card')).toHaveClass('test');
|
|
53
53
|
}));
|
|
54
54
|
it('should apply id', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
-
render(
|
|
55
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", id: "test", "data-testid": "card" }));
|
|
56
56
|
expect(screen.getByTestId('card').parentElement).toHaveAttribute('id', 'test');
|
|
57
57
|
}));
|
|
58
58
|
it('renders with no timeout by default', () => {
|
|
59
59
|
jest.useFakeTimers();
|
|
60
|
-
render(
|
|
60
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12" }));
|
|
61
61
|
act(() => {
|
|
62
62
|
jest.advanceTimersByTime(8000);
|
|
63
63
|
});
|
|
@@ -66,7 +66,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
66
66
|
});
|
|
67
67
|
it('should handle timeout correctly after 8000ms when timeout = true', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
68
|
jest.useFakeTimers();
|
|
69
|
-
render(
|
|
69
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true }));
|
|
70
70
|
act(() => {
|
|
71
71
|
jest.advanceTimersByTime(7999);
|
|
72
72
|
});
|
|
@@ -79,7 +79,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
79
79
|
}));
|
|
80
80
|
it('should handle timeout correctly when timeout = numeric value', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
81
|
jest.useFakeTimers();
|
|
82
|
-
render(
|
|
82
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: 300 }));
|
|
83
83
|
act(() => {
|
|
84
84
|
jest.advanceTimersByTime(299);
|
|
85
85
|
});
|
|
@@ -95,7 +95,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
95
95
|
advanceTimers: (delay) => jest.advanceTimersByTime(delay)
|
|
96
96
|
});
|
|
97
97
|
jest.useFakeTimers();
|
|
98
|
-
render(
|
|
98
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
|
|
99
99
|
expect(screen.getByText('Feedback submitted')).toBeTruthy();
|
|
100
100
|
yield user.click(screen.getByTestId('card'));
|
|
101
101
|
act(() => {
|
|
@@ -109,7 +109,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
109
109
|
advanceTimers: (delay) => jest.advanceTimersByTime(delay)
|
|
110
110
|
});
|
|
111
111
|
jest.useFakeTimers();
|
|
112
|
-
render(
|
|
112
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
|
|
113
113
|
const card = screen.getByTestId('card');
|
|
114
114
|
yield user.hover(card);
|
|
115
115
|
act(() => {
|
|
@@ -123,9 +123,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
123
123
|
advanceTimers: (delay) => jest.advanceTimersByTime(delay)
|
|
124
124
|
});
|
|
125
125
|
jest.useFakeTimers();
|
|
126
|
-
render(
|
|
127
|
-
React.createElement("input", null),
|
|
128
|
-
React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })));
|
|
126
|
+
render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })] }));
|
|
129
127
|
const card = screen.getByTestId('card');
|
|
130
128
|
yield user.click(card);
|
|
131
129
|
act(() => {
|
|
@@ -143,9 +141,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
143
141
|
advanceTimers: (delay) => jest.advanceTimersByTime(delay)
|
|
144
142
|
});
|
|
145
143
|
jest.useFakeTimers();
|
|
146
|
-
render(
|
|
147
|
-
React.createElement("input", null),
|
|
148
|
-
React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })));
|
|
144
|
+
render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })] }));
|
|
149
145
|
const card = screen.getByTestId('card');
|
|
150
146
|
yield user.hover(card);
|
|
151
147
|
act(() => {
|
|
@@ -163,9 +159,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
163
159
|
advanceTimers: (delay) => jest.advanceTimersByTime(delay)
|
|
164
160
|
});
|
|
165
161
|
jest.useFakeTimers();
|
|
166
|
-
render(
|
|
167
|
-
React.createElement("input", null),
|
|
168
|
-
React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", timeoutAnimation: 1000 })));
|
|
162
|
+
render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", timeoutAnimation: 1000 })] }));
|
|
169
163
|
const card = screen.getByTestId('card');
|
|
170
164
|
yield user.hover(card);
|
|
171
165
|
act(() => {
|
|
@@ -181,7 +175,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
181
175
|
it('does not call the onTimeout callback before the timeout period has expired', () => {
|
|
182
176
|
const spy = jest.fn();
|
|
183
177
|
jest.useFakeTimers();
|
|
184
|
-
render(
|
|
178
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", onTimeout: spy }));
|
|
185
179
|
act(() => {
|
|
186
180
|
jest.advanceTimersByTime(7999);
|
|
187
181
|
});
|
|
@@ -191,7 +185,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
191
185
|
it('calls the onTimeout callback after the timeout period has expired', () => {
|
|
192
186
|
jest.useFakeTimers();
|
|
193
187
|
const spy = jest.fn();
|
|
194
|
-
render(
|
|
188
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", onTimeout: spy }));
|
|
195
189
|
act(() => {
|
|
196
190
|
jest.advanceTimersByTime(8000);
|
|
197
191
|
});
|
|
@@ -199,13 +193,13 @@ describe('UserFeedbackComplete', () => {
|
|
|
199
193
|
jest.useRealTimers();
|
|
200
194
|
});
|
|
201
195
|
it('renders without aria-live and aria-atomic attributes by default', () => {
|
|
202
|
-
render(
|
|
196
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
|
|
203
197
|
const card = screen.getByTestId('card').parentElement;
|
|
204
198
|
expect(card).not.toHaveAttribute('aria-live');
|
|
205
199
|
expect(card).not.toHaveAttribute('aria-atomic');
|
|
206
200
|
});
|
|
207
201
|
it('has an aria-live value of polite and aria-atomic value of false when isLiveRegion = true', () => {
|
|
208
|
-
render(
|
|
202
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", isLiveRegion: true }));
|
|
209
203
|
const card = screen.getByTestId('card').parentElement;
|
|
210
204
|
expect(card).toHaveAttribute('aria-live', 'polite');
|
|
211
205
|
expect(card).toHaveAttribute('aria-atomic', 'false');
|
|
@@ -213,9 +207,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
213
207
|
it('calls onMouseEnter appropriately', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
214
208
|
const spy = jest.fn();
|
|
215
209
|
const user = userEvent.setup();
|
|
216
|
-
render(
|
|
217
|
-
React.createElement("input", null),
|
|
218
|
-
React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseEnter: spy })));
|
|
210
|
+
render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseEnter: spy })] }));
|
|
219
211
|
const card = screen.getByTestId('card');
|
|
220
212
|
expect(spy).toHaveBeenCalledTimes(0);
|
|
221
213
|
yield user.hover(card);
|
|
@@ -224,9 +216,7 @@ describe('UserFeedbackComplete', () => {
|
|
|
224
216
|
it('calls onMouseLeave appropriately', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
225
217
|
const spy = jest.fn();
|
|
226
218
|
const user = userEvent.setup();
|
|
227
|
-
render(
|
|
228
|
-
React.createElement("input", null),
|
|
229
|
-
React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseLeave: spy })));
|
|
219
|
+
render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseLeave: spy })] }));
|
|
230
220
|
const card = screen.getByTestId('card');
|
|
231
221
|
expect(spy).toHaveBeenCalledTimes(0);
|
|
232
222
|
yield user.hover(card);
|
|
@@ -234,15 +224,15 @@ describe('UserFeedbackComplete', () => {
|
|
|
234
224
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
235
225
|
}));
|
|
236
226
|
it('should focus on load by default', () => {
|
|
237
|
-
render(
|
|
227
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card" }));
|
|
238
228
|
expect(screen.getByTestId('card').parentElement).toHaveFocus();
|
|
239
229
|
});
|
|
240
230
|
it('should not focus on load if focusOnLoad = false', () => {
|
|
241
|
-
render(
|
|
231
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", focusOnLoad: false }));
|
|
242
232
|
expect(screen.getByTestId('card').parentElement).not.toHaveFocus();
|
|
243
233
|
});
|
|
244
234
|
it('should handle isCompact', () => {
|
|
245
|
-
render(
|
|
235
|
+
render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", isCompact: true }));
|
|
246
236
|
expect(screen.getByTestId('card')).toHaveClass('pf-m-compact');
|
|
247
237
|
});
|
|
248
238
|
});
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { ButtonProps, DropEvent, TooltipProps } from '@patternfly/react-core';
|
|
2
|
+
import { Accept, DropzoneOptions, FileError, FileRejection } from 'react-dropzone';
|
|
3
3
|
export interface AttachButtonProps extends ButtonProps {
|
|
4
4
|
/** Callback for when button is clicked */
|
|
5
5
|
onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
6
6
|
/** Callback function for AttachButton when an attachment is made */
|
|
7
7
|
onAttachAccepted?: (data: File[], event: DropEvent) => void;
|
|
8
|
+
/** Specifies the file types accepted by the attachment upload component.
|
|
9
|
+
* Files that don't match the accepted types will be disabled in the file picker.
|
|
10
|
+
* For example,
|
|
11
|
+
* allowedFileTypes: { 'application/json': ['.json'], 'text/plain': ['.txt'] }
|
|
12
|
+
**/
|
|
13
|
+
allowedFileTypes?: Accept;
|
|
8
14
|
/** Class name for AttachButton */
|
|
9
15
|
className?: string;
|
|
10
16
|
/** Props to control if the AttachButton should be disabled */
|
|
@@ -17,6 +23,23 @@ export interface AttachButtonProps extends ButtonProps {
|
|
|
17
23
|
tooltipContent?: string;
|
|
18
24
|
/** Test id applied to input */
|
|
19
25
|
inputTestId?: string;
|
|
26
|
+
/** Whether button is compact */
|
|
20
27
|
isCompact?: boolean;
|
|
28
|
+
/** Minimum file size allowed */
|
|
29
|
+
minSize?: number;
|
|
30
|
+
/** Max file size allowed */
|
|
31
|
+
maxSize?: number;
|
|
32
|
+
/** Max number of files allowed */
|
|
33
|
+
maxFiles?: number;
|
|
34
|
+
/** Whether attachments are disabled */
|
|
35
|
+
isAttachmentDisabled?: boolean;
|
|
36
|
+
/** Callback when file(s) are attached */
|
|
37
|
+
onAttach?: <T extends File>(acceptedFiles: T[], fileRejections: FileRejection[], event: DropEvent) => void;
|
|
38
|
+
/** Callback function for AttachButton when an attachment fails */
|
|
39
|
+
onAttachRejected?: (fileRejections: FileRejection[], event: DropEvent) => void;
|
|
40
|
+
/** Validator for files; see https://react-dropzone.js.org/#!/Custom%20validation for more information */
|
|
41
|
+
validator?: <T extends File>(file: T) => FileError | readonly FileError[] | null;
|
|
42
|
+
/** Additional props passed to react-dropzone */
|
|
43
|
+
dropzoneProps?: DropzoneOptions;
|
|
21
44
|
}
|
|
22
|
-
export declare const AttachButton:
|
|
45
|
+
export declare const AttachButton: import("react").ForwardRefExoticComponent<AttachButtonProps & import("react").RefAttributes<any>>;
|
|
@@ -9,26 +9,19 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
9
9
|
}
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// ============================================================================
|
|
15
|
-
import React from 'react';
|
|
12
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { forwardRef } from 'react';
|
|
16
14
|
// Import PatternFly components
|
|
17
15
|
import { Button, Icon, Tooltip } from '@patternfly/react-core';
|
|
18
16
|
import { useDropzone } from 'react-dropzone';
|
|
19
17
|
import { PaperclipIcon } from '@patternfly/react-icons/dist/esm/icons/paperclip-icon';
|
|
20
18
|
const AttachButtonBase = (_a) => {
|
|
21
|
-
var { onAttachAccepted, onClick, isDisabled, className, tooltipProps, innerRef, tooltipContent = 'Attach', inputTestId, isCompact } = _a, props = __rest(_a, ["onAttachAccepted", "onClick", "isDisabled", "className", "tooltipProps", "innerRef", "tooltipContent", "inputTestId", "isCompact"]);
|
|
22
|
-
const { open, getInputProps } = useDropzone({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
React.createElement(Tooltip, Object.assign({ id: "pf-chatbot__tooltip--attach", content: tooltipContent, position: "top", entryDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.entryDelay) || 0, exitDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.exitDelay) || 0, distance: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.distance) || 8, animationDuration: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.animationDuration) || 0,
|
|
29
|
-
// prevents VO announcements of both aria label and tooltip
|
|
30
|
-
aria: "none" }, tooltipProps),
|
|
31
|
-
React.createElement(Button, Object.assign({ variant: "plain", ref: innerRef, className: `pf-chatbot__button--attach ${isCompact ? 'pf-m-compact' : ''} ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || 'Attach button', isDisabled: isDisabled, onClick: onClick !== null && onClick !== void 0 ? onClick : open, icon: React.createElement(Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true },
|
|
32
|
-
React.createElement(PaperclipIcon, null)), size: isCompact ? 'sm' : undefined }, props)))));
|
|
19
|
+
var { onAttachAccepted, onClick, isDisabled, className, tooltipProps, innerRef, tooltipContent = 'Attach', inputTestId, isCompact, allowedFileTypes, minSize, maxSize, maxFiles, isAttachmentDisabled, onAttach, onAttachRejected, validator, dropzoneProps } = _a, props = __rest(_a, ["onAttachAccepted", "onClick", "isDisabled", "className", "tooltipProps", "innerRef", "tooltipContent", "inputTestId", "isCompact", "allowedFileTypes", "minSize", "maxSize", "maxFiles", "isAttachmentDisabled", "onAttach", "onAttachRejected", "validator", "dropzoneProps"]);
|
|
20
|
+
const { open, getInputProps } = useDropzone(Object.assign({ multiple: true, onDropAccepted: onAttachAccepted, accept: allowedFileTypes, minSize,
|
|
21
|
+
maxSize,
|
|
22
|
+
maxFiles, disabled: isAttachmentDisabled, onDrop: onAttach, onDropRejected: onAttachRejected, validator }, dropzoneProps));
|
|
23
|
+
return (_jsxs(_Fragment, { children: [_jsx("input", Object.assign({ "data-testid": inputTestId }, getInputProps(), { hidden: true })), _jsx(Tooltip, Object.assign({ id: "pf-chatbot__tooltip--attach", content: tooltipContent, position: "top", entryDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.entryDelay) || 0, exitDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.exitDelay) || 0, distance: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.distance) || 8, animationDuration: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.animationDuration) || 0,
|
|
24
|
+
// prevents VO announcements of both aria label and tooltip
|
|
25
|
+
aria: "none" }, tooltipProps, { children: _jsx(Button, Object.assign({ variant: "plain", ref: innerRef, className: `pf-chatbot__button--attach ${isCompact ? 'pf-m-compact' : ''} ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || 'Attach', isDisabled: isDisabled, onClick: onClick !== null && onClick !== void 0 ? onClick : open, icon: _jsx(Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true, children: _jsx(PaperclipIcon, {}) }), size: isCompact ? 'sm' : undefined }, props)) }))] }));
|
|
33
26
|
};
|
|
34
|
-
export const AttachButton =
|
|
27
|
+
export const AttachButton = forwardRef((props, ref) => (_jsx(AttachButtonBase, Object.assign({ innerRef: ref }, props))));
|
|
@@ -7,51 +7,51 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
import { render, screen } from '@testing-library/react';
|
|
12
12
|
import '@testing-library/jest-dom';
|
|
13
13
|
import userEvent from '@testing-library/user-event';
|
|
14
14
|
import { AttachButton } from './AttachButton';
|
|
15
15
|
describe('Attach button', () => {
|
|
16
16
|
it('should render button correctly', () => {
|
|
17
|
-
render(
|
|
18
|
-
expect(screen.getByRole('button', { name: 'Attach
|
|
17
|
+
render(_jsx(AttachButton, {}));
|
|
18
|
+
expect(screen.getByRole('button', { name: 'Attach' })).toBeTruthy();
|
|
19
19
|
});
|
|
20
20
|
it('should handle isDisabled prop', () => {
|
|
21
|
-
render(
|
|
22
|
-
expect(screen.getByRole('button', { name: 'Attach
|
|
21
|
+
render(_jsx(AttachButton, { isDisabled: true }));
|
|
22
|
+
expect(screen.getByRole('button', { name: 'Attach' })).toBeDisabled();
|
|
23
23
|
});
|
|
24
24
|
it('should handle spread props, including aria-label', () => {
|
|
25
|
-
render(
|
|
25
|
+
render(_jsx(AttachButton, { "aria-label": "test" }));
|
|
26
26
|
expect(screen.getByRole('button', { name: 'test' }));
|
|
27
27
|
});
|
|
28
28
|
it('should handle onClick', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
29
|
const spy = jest.fn();
|
|
30
|
-
render(
|
|
31
|
-
yield userEvent.click(screen.getByRole('button', { name: 'Attach
|
|
30
|
+
render(_jsx(AttachButton, { onClick: spy }));
|
|
31
|
+
yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
|
|
32
32
|
expect(screen.getByRole('tooltip', { name: 'Attach' })).toBeTruthy();
|
|
33
33
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
34
34
|
}));
|
|
35
35
|
it('should handle className prop', () => {
|
|
36
|
-
render(
|
|
37
|
-
expect(screen.getByRole('button', { name: 'Attach
|
|
36
|
+
render(_jsx(AttachButton, { className: "test" }));
|
|
37
|
+
expect(screen.getByRole('button', { name: 'Attach' })).toHaveClass('test');
|
|
38
38
|
});
|
|
39
39
|
it('should handle custom tooltip correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
-
render(
|
|
41
|
-
yield userEvent.click(screen.getByRole('button', { name: 'Attach
|
|
40
|
+
render(_jsx(AttachButton, { onClick: jest.fn, tooltipContent: "Test" }));
|
|
41
|
+
yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
|
|
42
42
|
expect(screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
|
|
43
43
|
}));
|
|
44
44
|
it('should handle tooltipProps prop', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
-
render(
|
|
46
|
-
yield userEvent.click(screen.getByRole('button', { name: 'Attach
|
|
45
|
+
render(_jsx(AttachButton, { tooltipProps: { id: 'test' } }));
|
|
46
|
+
yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
|
|
47
47
|
expect(screen.getByRole('tooltip', { name: 'Attach' })).toHaveAttribute('id', 'test');
|
|
48
48
|
}));
|
|
49
49
|
// Based on this because I had no idea how to do this and was looking around: https://stackoverflow.com/a/75562651
|
|
50
50
|
// See also https://developer.mozilla.org/en-US/docs/Web/API/File/File for what that file variable is doing
|
|
51
51
|
it('should handle onAttachAccepted prop', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
52
|
const spy = jest.fn();
|
|
53
|
-
render(
|
|
54
|
-
yield userEvent.click(screen.getByRole('button', { name: 'Attach
|
|
53
|
+
render(_jsx(AttachButton, { onAttachAccepted: spy, inputTestId: "input" }));
|
|
54
|
+
yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
|
|
55
55
|
const file = new File(['test'], 'test.json');
|
|
56
56
|
const input = screen.getByTestId('input');
|
|
57
57
|
yield userEvent.upload(input, file);
|
|
@@ -59,7 +59,85 @@ describe('Attach button', () => {
|
|
|
59
59
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
60
60
|
}));
|
|
61
61
|
it('should handle isCompact', () => {
|
|
62
|
-
render(
|
|
62
|
+
render(_jsx(AttachButton, { isCompact: true, "data-testid": "button" }));
|
|
63
63
|
expect(screen.getByTestId('button')).toHaveClass('pf-m-compact');
|
|
64
64
|
});
|
|
65
|
+
it('should set correct accept attribute on file input', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
render(_jsx(AttachButton, { inputTestId: "input", allowedFileTypes: { 'text/plain': ['.txt'] } }));
|
|
67
|
+
yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
|
|
68
|
+
const input = screen.getByTestId('input');
|
|
69
|
+
expect(input).toHaveAttribute('accept', 'text/plain,.txt');
|
|
70
|
+
}));
|
|
71
|
+
it('should call onAttachAccepted when file type is accepted', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
72
|
+
const onAttachAccepted = jest.fn();
|
|
73
|
+
render(_jsx(AttachButton, { inputTestId: "input", allowedFileTypes: { 'text/plain': ['.txt'] }, onAttachAccepted: onAttachAccepted }));
|
|
74
|
+
const file = new File(['hello'], 'example.txt', { type: 'text/plain' });
|
|
75
|
+
const input = screen.getByTestId('input');
|
|
76
|
+
yield userEvent.upload(input, file);
|
|
77
|
+
expect(onAttachAccepted).toHaveBeenCalled();
|
|
78
|
+
const [attachedFile] = onAttachAccepted.mock.calls[0][0];
|
|
79
|
+
expect(attachedFile).toEqual(file);
|
|
80
|
+
}));
|
|
81
|
+
it('should not call onAttachAccepted when file type is not accepted', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
+
const onAttachAccepted = jest.fn();
|
|
83
|
+
render(_jsx(AttachButton, { inputTestId: "input", allowedFileTypes: { 'text/plain': ['.txt'] }, onAttachAccepted: onAttachAccepted }));
|
|
84
|
+
const file = new File(['[]'], 'example.json', { type: 'application/json' });
|
|
85
|
+
const input = screen.getByTestId('input');
|
|
86
|
+
yield userEvent.upload(input, file);
|
|
87
|
+
expect(onAttachAccepted).not.toHaveBeenCalled();
|
|
88
|
+
}));
|
|
89
|
+
it('should respect minSize restriction', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
+
const onAttachRejected = jest.fn();
|
|
91
|
+
render(_jsx(AttachButton, { inputTestId: "input", minSize: 1000, onAttachRejected: onAttachRejected }));
|
|
92
|
+
const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
|
|
93
|
+
const input = screen.getByTestId('input');
|
|
94
|
+
yield userEvent.upload(input, file);
|
|
95
|
+
expect(onAttachRejected).toHaveBeenCalled();
|
|
96
|
+
}));
|
|
97
|
+
it('should respect maxSize restriction', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
+
const onAttachRejected = jest.fn();
|
|
99
|
+
render(_jsx(AttachButton, { inputTestId: "input", maxSize: 100, onAttachRejected: onAttachRejected }));
|
|
100
|
+
const largeContent = 'x'.repeat(200);
|
|
101
|
+
const file = new File([largeContent], 'example.txt', { type: 'text/plain' });
|
|
102
|
+
const input = screen.getByTestId('input');
|
|
103
|
+
yield userEvent.upload(input, file);
|
|
104
|
+
expect(onAttachRejected).toHaveBeenCalled();
|
|
105
|
+
}));
|
|
106
|
+
it('should respect maxFiles restriction', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
|
+
const onAttachRejected = jest.fn();
|
|
108
|
+
render(_jsx(AttachButton, { inputTestId: "input", maxFiles: 1, onAttachRejected: onAttachRejected }));
|
|
109
|
+
const files = [
|
|
110
|
+
new File(['Test1'], 'example1.txt', { type: 'text/plain' }),
|
|
111
|
+
new File(['Test2'], 'example2.txt', { type: 'text/plain' })
|
|
112
|
+
];
|
|
113
|
+
const input = screen.getByTestId('input');
|
|
114
|
+
yield userEvent.upload(input, files);
|
|
115
|
+
expect(onAttachRejected).toHaveBeenCalled();
|
|
116
|
+
}));
|
|
117
|
+
it('should be disabled when isAttachmentDisabled is true', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
118
|
+
const onFileDrop = jest.fn();
|
|
119
|
+
render(_jsx(AttachButton, { inputTestId: "input", isAttachmentDisabled: true }));
|
|
120
|
+
const file = new File(['Test'], 'example.text', { type: 'text/plain' });
|
|
121
|
+
const input = screen.getByTestId('input');
|
|
122
|
+
yield userEvent.upload(input, file);
|
|
123
|
+
expect(onFileDrop).not.toHaveBeenCalled();
|
|
124
|
+
}));
|
|
125
|
+
it('should call onAttach when files are attached', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
126
|
+
const onAttach = jest.fn();
|
|
127
|
+
render(_jsx(AttachButton, { inputTestId: "input", onAttach: onAttach }));
|
|
128
|
+
const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
|
|
129
|
+
const input = screen.getByTestId('input');
|
|
130
|
+
yield userEvent.upload(input, file);
|
|
131
|
+
expect(onAttach).toHaveBeenCalled();
|
|
132
|
+
}));
|
|
133
|
+
it('should use custom validator when provided', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
134
|
+
const validator = jest.fn().mockReturnValue({ message: 'Custom error' });
|
|
135
|
+
const onAttachRejected = jest.fn();
|
|
136
|
+
render(_jsx(AttachButton, { inputTestId: "input", validator: validator, onAttachRejected: onAttachRejected }));
|
|
137
|
+
const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
|
|
138
|
+
const input = screen.getByTestId('input');
|
|
139
|
+
yield userEvent.upload(input, file);
|
|
140
|
+
expect(validator).toHaveBeenCalledWith(file);
|
|
141
|
+
expect(onAttachRejected).toHaveBeenCalled();
|
|
142
|
+
}));
|
|
65
143
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { FunctionComponent } from 'react';
|
|
2
|
+
import { Accept, DropzoneOptions, FileError, FileRejection } from 'react-dropzone/.';
|
|
2
3
|
import { ButtonProps, DropEvent, TextAreaProps, TooltipProps } from '@patternfly/react-core';
|
|
3
4
|
import { ChatbotDisplayMode } from '../Chatbot';
|
|
4
5
|
export interface MessageBarWithAttachMenuProps {
|
|
@@ -21,7 +22,7 @@ export interface MessageBarWithAttachMenuProps {
|
|
|
21
22
|
/** Callback to change the open state of the menu. Triggered by clicking outside of the menu. */
|
|
22
23
|
onAttachMenuOpenChange?: (isOpen: boolean) => void;
|
|
23
24
|
}
|
|
24
|
-
export interface MessageBarProps extends TextAreaProps {
|
|
25
|
+
export interface MessageBarProps extends Omit<TextAreaProps, 'innerRef'> {
|
|
25
26
|
/** Callback to get the value of input message by user */
|
|
26
27
|
onSendMessage: (message: string | number) => void;
|
|
27
28
|
/** Class Name for the MessageBar component */
|
|
@@ -42,6 +43,28 @@ export interface MessageBarProps extends TextAreaProps {
|
|
|
42
43
|
handleStopButton?: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
43
44
|
/** Callback function for when attach button is used to upload a file */
|
|
44
45
|
handleAttach?: (data: File[], event: DropEvent) => void;
|
|
46
|
+
/** Specifies the file types accepted by the attachment upload component.
|
|
47
|
+
* Files that don't match the accepted types will be disabled in the file picker.
|
|
48
|
+
* For example,
|
|
49
|
+
* allowedFileTypes: { 'application/json': ['.json'], 'text/plain': ['.txt'] }
|
|
50
|
+
**/
|
|
51
|
+
allowedFileTypes?: Accept;
|
|
52
|
+
/** Minimum file size allowed */
|
|
53
|
+
minSize?: number;
|
|
54
|
+
/** Max file size allowed */
|
|
55
|
+
maxSize?: number;
|
|
56
|
+
/** Max number of files allowed */
|
|
57
|
+
maxFiles?: number;
|
|
58
|
+
/** Whether attachments are disabled */
|
|
59
|
+
isAttachmentDisabled?: boolean;
|
|
60
|
+
/** Callback when file(s) are attached */
|
|
61
|
+
onAttach?: <T extends File>(acceptedFiles: T[], fileRejections: FileRejection[], event: DropEvent) => void;
|
|
62
|
+
/** Callback function for AttachButton when an attachment fails */
|
|
63
|
+
onAttachRejected?: (fileRejections: FileRejection[], event: DropEvent) => void;
|
|
64
|
+
/** Validator for files; see https://react-dropzone.js.org/#!/Custom%20validation for more information */
|
|
65
|
+
validator?: <T extends File>(file: T) => FileError | readonly FileError[] | null;
|
|
66
|
+
/** Additional props passed to react-dropzone */
|
|
67
|
+
dropzoneProps?: DropzoneOptions;
|
|
45
68
|
/** Props to enable a menu that opens when the Attach button is clicked, instead of the attachment window */
|
|
46
69
|
attachMenuProps?: MessageBarWithAttachMenuProps;
|
|
47
70
|
/** Flag to provide manual control over whether send button is disabled */
|
|
@@ -78,7 +101,12 @@ export interface MessageBarProps extends TextAreaProps {
|
|
|
78
101
|
onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>, value: string | number) => void;
|
|
79
102
|
/** Display mode of chatbot, if you want to message bar to resize when the display mode changes */
|
|
80
103
|
displayMode?: ChatbotDisplayMode;
|
|
104
|
+
/** Whether message bar is compact */
|
|
81
105
|
isCompact?: boolean;
|
|
106
|
+
/** Ref applied to message bar textarea, for use with focus or other custom behaviors */
|
|
107
|
+
innerRef?: React.Ref<HTMLTextAreaElement>;
|
|
82
108
|
}
|
|
83
|
-
export declare const
|
|
109
|
+
export declare const MessageBarBase: FunctionComponent<MessageBarProps>;
|
|
110
|
+
declare const MessageBar: import("react").ForwardRefExoticComponent<MessageBarProps & import("react").RefAttributes<HTMLTextAreaElement>>;
|
|
111
|
+
export { MessageBar };
|
|
84
112
|
export default MessageBar;
|