@patternfly/chatbot 6.3.0-prerelease.1 → 6.3.0-prerelease.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AttachmentEdit/AttachmentEdit.d.ts +2 -0
- package/dist/cjs/AttachmentEdit/AttachmentEdit.js +2 -2
- package/dist/cjs/Chatbot/Chatbot.d.ts +2 -0
- package/dist/cjs/Chatbot/Chatbot.js +2 -2
- package/dist/cjs/Chatbot/Chatbot.test.js +4 -0
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -0
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +3 -3
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +4 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +1 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooter.js +2 -2
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -1
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +5 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeader.js +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +4 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +20 -6
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +5 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +3 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +20 -6
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +5 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -3
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +5 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +2 -2
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +5 -0
- package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +3 -0
- package/dist/cjs/ChatbotModal/ChatbotModal.js +2 -2
- package/dist/cjs/ChatbotModal/ChatbotModal.test.d.ts +1 -0
- package/dist/cjs/ChatbotModal/ChatbotModal.test.js +28 -0
- package/dist/cjs/ChatbotPopover/ChatbotPopover.js +1 -1
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +1 -0
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +3 -3
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +4 -0
- package/dist/cjs/CodeModal/CodeModal.d.ts +2 -0
- package/dist/cjs/CodeModal/CodeModal.js +3 -3
- package/dist/cjs/CodeModal/CodeModal.test.d.ts +1 -0
- package/dist/cjs/CodeModal/CodeModal.test.js +15 -0
- package/dist/cjs/FileDetails/FileDetails.js +1 -1
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +1 -1
- package/dist/cjs/Message/Message.d.ts +2 -0
- package/dist/cjs/Message/Message.js +6 -6
- package/dist/cjs/Message/Message.test.js +15 -3
- package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +2 -0
- package/dist/cjs/Message/QuickResponse/QuickResponse.js +2 -2
- package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +2 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTile.js +2 -2
- package/dist/cjs/Message/UserFeedback/UserFeedback.js +4 -4
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +4 -0
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +4 -4
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +4 -0
- package/dist/cjs/MessageBar/AttachButton.d.ts +1 -0
- package/dist/cjs/MessageBar/AttachButton.js +3 -3
- package/dist/cjs/MessageBar/AttachButton.test.js +11 -7
- package/dist/cjs/MessageBar/MessageBar.d.ts +5 -0
- package/dist/cjs/MessageBar/MessageBar.js +14 -13
- package/dist/cjs/MessageBar/MessageBar.test.js +41 -28
- package/dist/cjs/MessageBar/MicrophoneButton.d.ts +1 -0
- package/dist/cjs/MessageBar/MicrophoneButton.js +3 -3
- package/dist/cjs/MessageBar/SendButton.d.ts +1 -0
- package/dist/cjs/MessageBar/SendButton.js +3 -3
- package/dist/cjs/MessageBar/SendButton.test.js +9 -5
- package/dist/cjs/MessageBar/StopButton.d.ts +1 -0
- package/dist/cjs/MessageBar/StopButton.js +3 -3
- package/dist/cjs/MessageBar/StopButton.test.js +9 -5
- package/dist/cjs/MessageBox/JumpButton.js +1 -1
- package/dist/cjs/MessageBox/JumpButton.test.js +4 -4
- package/dist/cjs/MessageBox/MessageBox.d.ts +4 -0
- package/dist/cjs/MessageBox/MessageBox.js +16 -2
- package/dist/cjs/MessageBox/MessageBox.test.js +43 -0
- package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +2 -0
- package/dist/cjs/PreviewAttachment/PreviewAttachment.js +2 -2
- package/dist/cjs/Settings/SettingsForm.d.ts +2 -0
- package/dist/cjs/Settings/SettingsForm.js +2 -2
- package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -1
- package/dist/cjs/Settings/SettingsForm.test.js +12 -0
- package/dist/cjs/SourcesCard/SourcesCard.js +2 -2
- package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +2 -0
- package/dist/cjs/TermsOfUse/TermsOfUse.js +5 -5
- package/dist/css/main.css +218 -15
- package/dist/css/main.css.map +1 -1
- package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +2 -0
- package/dist/esm/AttachmentEdit/AttachmentEdit.js +2 -2
- package/dist/esm/Chatbot/Chatbot.d.ts +2 -0
- package/dist/esm/Chatbot/Chatbot.js +2 -2
- package/dist/esm/Chatbot/Chatbot.test.js +4 -0
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -0
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +3 -3
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +4 -0
- package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +1 -0
- package/dist/esm/ChatbotFooter/ChatbotFooter.js +2 -2
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -1
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +5 -0
- package/dist/esm/ChatbotHeader/ChatbotHeader.js +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +4 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +20 -6
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +5 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +3 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +20 -6
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +5 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -3
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +5 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +2 -2
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +5 -0
- package/dist/esm/ChatbotModal/ChatbotModal.d.ts +3 -0
- package/dist/esm/ChatbotModal/ChatbotModal.js +2 -2
- package/dist/esm/ChatbotModal/ChatbotModal.test.d.ts +1 -0
- package/dist/esm/ChatbotModal/ChatbotModal.test.js +23 -0
- package/dist/esm/ChatbotPopover/ChatbotPopover.js +1 -1
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +1 -0
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +3 -3
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +4 -0
- package/dist/esm/CodeModal/CodeModal.d.ts +2 -0
- package/dist/esm/CodeModal/CodeModal.js +3 -3
- package/dist/esm/CodeModal/CodeModal.test.d.ts +1 -0
- package/dist/esm/CodeModal/CodeModal.test.js +10 -0
- package/dist/esm/FileDetails/FileDetails.js +1 -1
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +1 -1
- package/dist/esm/Message/Message.d.ts +2 -0
- package/dist/esm/Message/Message.js +6 -6
- package/dist/esm/Message/Message.test.js +15 -3
- package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +2 -0
- package/dist/esm/Message/QuickResponse/QuickResponse.js +2 -2
- package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +2 -0
- package/dist/esm/Message/QuickStarts/QuickStartTile.js +2 -2
- package/dist/esm/Message/UserFeedback/UserFeedback.js +4 -4
- package/dist/esm/Message/UserFeedback/UserFeedback.test.js +4 -0
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +4 -4
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +4 -0
- package/dist/esm/MessageBar/AttachButton.d.ts +1 -0
- package/dist/esm/MessageBar/AttachButton.js +3 -3
- package/dist/esm/MessageBar/AttachButton.test.js +11 -7
- package/dist/esm/MessageBar/MessageBar.d.ts +5 -0
- package/dist/esm/MessageBar/MessageBar.js +14 -13
- package/dist/esm/MessageBar/MessageBar.test.js +41 -28
- package/dist/esm/MessageBar/MicrophoneButton.d.ts +1 -0
- package/dist/esm/MessageBar/MicrophoneButton.js +3 -3
- package/dist/esm/MessageBar/SendButton.d.ts +1 -0
- package/dist/esm/MessageBar/SendButton.js +3 -3
- package/dist/esm/MessageBar/SendButton.test.js +9 -5
- package/dist/esm/MessageBar/StopButton.d.ts +1 -0
- package/dist/esm/MessageBar/StopButton.js +3 -3
- package/dist/esm/MessageBar/StopButton.test.js +9 -5
- package/dist/esm/MessageBox/JumpButton.js +1 -1
- package/dist/esm/MessageBox/JumpButton.test.js +4 -4
- package/dist/esm/MessageBox/MessageBox.d.ts +4 -0
- package/dist/esm/MessageBox/MessageBox.js +16 -2
- package/dist/esm/MessageBox/MessageBox.test.js +44 -1
- package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +2 -0
- package/dist/esm/PreviewAttachment/PreviewAttachment.js +2 -2
- package/dist/esm/Settings/SettingsForm.d.ts +2 -0
- package/dist/esm/Settings/SettingsForm.js +2 -2
- package/dist/esm/Settings/SettingsForm.test.d.ts +1 -1
- package/dist/esm/Settings/SettingsForm.test.js +12 -0
- package/dist/esm/SourcesCard/SourcesCard.js +2 -2
- package/dist/esm/TermsOfUse/TermsOfUse.d.ts +2 -0
- package/dist/esm/TermsOfUse/TermsOfUse.js +5 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +10 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +33 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +24 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +11 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +21 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +10 -1
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +9 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +9 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSelection.tsx +11 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactSettings.tsx +289 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUseCompact.tsx +136 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +14 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +8 -1
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotCompact.tsx +481 -0
- package/src/AttachmentEdit/AttachmentEdit.tsx +5 -1
- package/src/Chatbot/Chatbot.scss +7 -0
- package/src/Chatbot/Chatbot.test.tsx +9 -0
- package/src/Chatbot/Chatbot.tsx +4 -1
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +38 -3
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +18 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +9 -2
- package/src/ChatbotFooter/ChatbotFooter.scss +5 -0
- package/src/ChatbotFooter/ChatbotFooter.test.tsx +10 -0
- package/src/ChatbotFooter/ChatbotFooter.tsx +3 -1
- package/src/ChatbotHeader/ChatbotHeader.scss +25 -0
- package/src/ChatbotHeader/ChatbotHeader.tsx +1 -1
- package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +6 -0
- package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +12 -6
- package/src/ChatbotHeader/ChatbotHeaderMain.tsx +3 -1
- package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +8 -0
- package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +10 -5
- package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +6 -0
- package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +5 -2
- package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +10 -0
- package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +4 -0
- package/src/ChatbotModal/ChatbotModal.scss +15 -4
- package/src/ChatbotModal/ChatbotModal.test.tsx +59 -0
- package/src/ChatbotModal/ChatbotModal.tsx +5 -1
- package/src/ChatbotPopover/ChatbotPopover.scss +9 -5
- package/src/ChatbotPopover/ChatbotPopover.tsx +1 -1
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.scss +9 -1
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +13 -0
- package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +13 -2
- package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +1 -1
- package/src/CodeModal/CodeModal.scss +11 -3
- package/src/CodeModal/CodeModal.test.tsx +24 -0
- package/src/CodeModal/CodeModal.tsx +6 -2
- package/src/FileDetails/FileDetails.tsx +1 -1
- package/src/FileDetails/__snapshots__/FileDetails.test.tsx.snap +1 -1
- package/src/FileDetailsLabel/__snapshots__/FileDetailsLabel.test.tsx.snap +1 -1
- package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +1 -1
- package/src/Message/Message.scss +27 -0
- package/src/Message/Message.test.tsx +24 -3
- package/src/Message/Message.tsx +10 -3
- package/src/Message/QuickResponse/QuickResponse.tsx +5 -1
- package/src/Message/QuickStarts/QuickStartTile.tsx +5 -1
- package/src/Message/TextMessage/TextMessage.scss +25 -0
- package/src/Message/UserFeedback/UserFeedback.scss +24 -3
- package/src/Message/UserFeedback/UserFeedback.test.tsx +13 -0
- package/src/Message/UserFeedback/UserFeedback.tsx +4 -2
- package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +4 -0
- package/src/Message/UserFeedback/UserFeedbackComplete.tsx +10 -2
- package/src/MessageBar/AttachButton.scss +10 -0
- package/src/MessageBar/AttachButton.test.tsx +11 -7
- package/src/MessageBar/AttachButton.tsx +6 -3
- package/src/MessageBar/MessageBar.scss +17 -0
- package/src/MessageBar/MessageBar.test.tsx +41 -28
- package/src/MessageBar/MessageBar.tsx +23 -8
- package/src/MessageBar/MicrophoneButton.scss +10 -0
- package/src/MessageBar/MicrophoneButton.tsx +7 -3
- package/src/MessageBar/SendButton.scss +10 -0
- package/src/MessageBar/SendButton.test.tsx +10 -6
- package/src/MessageBar/SendButton.tsx +6 -3
- package/src/MessageBar/StopButton.scss +10 -0
- package/src/MessageBar/StopButton.test.tsx +10 -6
- package/src/MessageBar/StopButton.tsx +6 -3
- package/src/MessageBox/JumpButton.test.tsx +4 -4
- package/src/MessageBox/JumpButton.tsx +1 -1
- package/src/MessageBox/MessageBox.scss +6 -0
- package/src/MessageBox/MessageBox.test.tsx +45 -1
- package/src/MessageBox/MessageBox.tsx +11 -1
- package/src/PreviewAttachment/PreviewAttachment.tsx +5 -1
- package/src/Settings/Settings.scss +11 -0
- package/src/Settings/SettingsForm.test.tsx +17 -0
- package/src/Settings/SettingsForm.tsx +12 -2
- package/src/SourcesCard/SourcesCard.scss +8 -0
- package/src/SourcesCard/SourcesCard.tsx +2 -1
- package/src/TermsOfUse/TermsOfUse.scss +20 -0
- package/src/TermsOfUse/TermsOfUse.tsx +9 -4
@@ -53,9 +53,9 @@ describe('Message bar', () => {
|
|
53
53
|
});
|
54
54
|
it('should render correctly', () => {
|
55
55
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn }));
|
56
|
-
expect(react_2.screen.getByRole('button', { name: 'Attach
|
57
|
-
expect(react_2.screen.queryByRole('button', { name: 'Send
|
58
|
-
expect(react_2.screen.queryByRole('button', { name: '
|
56
|
+
expect(react_2.screen.getByRole('button', { name: 'Attach' })).toBeTruthy();
|
57
|
+
expect(react_2.screen.queryByRole('button', { name: 'Send' })).toBeFalsy();
|
58
|
+
expect(react_2.screen.queryByRole('button', { name: 'Use microphone' })).toBeFalsy();
|
59
59
|
expect(react_2.screen.getByRole('textbox', { name: /Send a message.../i })).toBeTruthy();
|
60
60
|
});
|
61
61
|
it('can send via enter key', () => __awaiter(void 0, void 0, void 0, function* () {
|
@@ -76,6 +76,12 @@ describe('Message bar', () => {
|
|
76
76
|
expect(spy).toHaveBeenCalledTimes(1);
|
77
77
|
expect(spy).toHaveBeenCalledWith(expect.any(Object), 'A');
|
78
78
|
}));
|
79
|
+
it('can use specified placeholder text', () => __awaiter(void 0, void 0, void 0, function* () {
|
80
|
+
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, placeholder: "test placeholder" }));
|
81
|
+
const input = react_2.screen.getByRole('textbox', { name: /test placeholder/i });
|
82
|
+
yield user_event_1.default.type(input, 'Hello world');
|
83
|
+
expect(input).toHaveTextContent('Hello world');
|
84
|
+
}));
|
79
85
|
// Send button
|
80
86
|
// --------------------------------------------------------------------------
|
81
87
|
it('shows send button when text is input', () => __awaiter(void 0, void 0, void 0, function* () {
|
@@ -83,15 +89,15 @@ describe('Message bar', () => {
|
|
83
89
|
const input = react_2.screen.getByRole('textbox', { name: /Send a message.../i });
|
84
90
|
yield user_event_1.default.type(input, 'Hello world');
|
85
91
|
expect(input).toHaveTextContent('Hello world');
|
86
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
92
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeTruthy();
|
87
93
|
}));
|
88
94
|
it('can disable send button shown when text is input', () => __awaiter(void 0, void 0, void 0, function* () {
|
89
95
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, isSendButtonDisabled: true }));
|
90
96
|
const input = react_2.screen.getByRole('textbox', { name: /Send a message.../i });
|
91
97
|
yield user_event_1.default.type(input, 'Hello world');
|
92
98
|
expect(input).toHaveTextContent('Hello world');
|
93
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
94
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
99
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeTruthy();
|
100
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeDisabled();
|
95
101
|
}));
|
96
102
|
it('can click send button', () => __awaiter(void 0, void 0, void 0, function* () {
|
97
103
|
const spy = jest.fn();
|
@@ -99,24 +105,24 @@ describe('Message bar', () => {
|
|
99
105
|
const input = react_2.screen.getByRole('textbox', { name: /Send a message.../i });
|
100
106
|
yield user_event_1.default.type(input, 'Hello world');
|
101
107
|
expect(input).toHaveTextContent('Hello world');
|
102
|
-
const sendButton = react_2.screen.getByRole('button', { name: 'Send
|
108
|
+
const sendButton = react_2.screen.getByRole('button', { name: 'Send' });
|
103
109
|
expect(sendButton).toBeTruthy();
|
104
110
|
yield user_event_1.default.click(sendButton);
|
105
111
|
expect(spy).toHaveBeenCalledTimes(1);
|
106
112
|
}));
|
107
113
|
it('can always show send button', () => {
|
108
114
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, alwayShowSendButton: true }));
|
109
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
110
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
115
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeTruthy();
|
116
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeEnabled();
|
111
117
|
});
|
112
118
|
it('can disable send button if always showing', () => {
|
113
119
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, alwayShowSendButton: true, isSendButtonDisabled: true }));
|
114
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
115
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
120
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeTruthy();
|
121
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeDisabled();
|
116
122
|
});
|
117
123
|
it('can handle buttonProps tooltipContent appropriately for send', () => __awaiter(void 0, void 0, void 0, function* () {
|
118
124
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, alwayShowSendButton: true, buttonProps: { send: { tooltipContent: 'Test' } } }));
|
119
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send
|
125
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send' }));
|
120
126
|
expect(react_2.screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
|
121
127
|
}));
|
122
128
|
it('can handle buttonProps props appropriately for send', () => __awaiter(void 0, void 0, void 0, function* () {
|
@@ -157,30 +163,30 @@ describe('Message bar', () => {
|
|
157
163
|
expect(react_2.screen.queryByRole('menuitem', { name: /Logs/i })).toBeFalsy();
|
158
164
|
expect(react_2.screen.queryByRole('menuitem', { name: /YAML - Status/i })).toBeFalsy();
|
159
165
|
expect(react_2.screen.queryByRole('menuitem', { name: /YAML - All contents/i })).toBeFalsy();
|
160
|
-
const attachButton = react_2.screen.getByRole('button', { name: 'Attach
|
166
|
+
const attachButton = react_2.screen.getByRole('button', { name: 'Attach' });
|
161
167
|
yield user_event_1.default.click(attachButton);
|
162
168
|
expect(attachToggleClickSpy).toHaveBeenCalledTimes(1);
|
163
169
|
}));
|
164
170
|
it('can hide attach button', () => {
|
165
171
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasAttachButton: false }));
|
166
|
-
expect(react_2.screen.queryByRole('button', { name: 'Attach
|
172
|
+
expect(react_2.screen.queryByRole('button', { name: 'Attach' })).toBeFalsy();
|
167
173
|
});
|
168
174
|
// Based on this because I had no idea how to do this and was looking around: https://stackoverflow.com/a/75562651
|
169
175
|
// See also https://developer.mozilla.org/en-US/docs/Web/API/File/File for what that file variable is doing
|
170
176
|
it('can handle handleAttach', () => __awaiter(void 0, void 0, void 0, function* () {
|
171
177
|
const spy = jest.fn();
|
172
178
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasAttachButton: true, handleAttach: spy, buttonProps: { attach: { inputTestId: 'input' } } }));
|
173
|
-
expect(react_2.screen.getByRole('button', { name: 'Attach
|
174
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Attach
|
179
|
+
expect(react_2.screen.getByRole('button', { name: 'Attach' })).toBeTruthy();
|
180
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Attach' }));
|
175
181
|
const file = new File(['test'], 'test.json');
|
176
182
|
const input = react_2.screen.getByTestId('input');
|
177
183
|
yield user_event_1.default.upload(input, file);
|
178
184
|
expect(input.files).toHaveLength(1);
|
179
185
|
expect(spy).toHaveBeenCalledTimes(1);
|
180
186
|
}));
|
181
|
-
it('can handle buttonProps tooltipContent
|
187
|
+
it('can handle buttonProps tooltipContent appropriately for attach', () => __awaiter(void 0, void 0, void 0, function* () {
|
182
188
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasAttachButton: true, buttonProps: { attach: { tooltipContent: 'Test' } } }));
|
183
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Attach
|
189
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Attach' }));
|
184
190
|
expect(react_2.screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
|
185
191
|
}));
|
186
192
|
it('can handle buttonProps props appropriately for attach', () => __awaiter(void 0, void 0, void 0, function* () {
|
@@ -191,17 +197,17 @@ describe('Message bar', () => {
|
|
191
197
|
// --------------------------------------------------------------------------
|
192
198
|
it('can show stop button', () => {
|
193
199
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasStopButton: true, handleStopButton: jest.fn }));
|
194
|
-
expect(react_2.screen.getByRole('button', { name: 'Stop
|
200
|
+
expect(react_2.screen.getByRole('button', { name: 'Stop' })).toBeTruthy();
|
195
201
|
});
|
196
202
|
it('can call handleStopButton', () => __awaiter(void 0, void 0, void 0, function* () {
|
197
203
|
const spy = jest.fn();
|
198
204
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasStopButton: true, handleStopButton: spy }));
|
199
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop
|
205
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop' }));
|
200
206
|
expect(spy).toHaveBeenCalledTimes(1);
|
201
207
|
}));
|
202
208
|
it('can handle buttonProps tooltipContent appropriately for stop', () => __awaiter(void 0, void 0, void 0, function* () {
|
203
209
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasStopButton: true, handleStopButton: jest.fn, buttonProps: { stop: { tooltipContent: 'Test' } } }));
|
204
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop
|
210
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop' }));
|
205
211
|
expect(react_2.screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
|
206
212
|
}));
|
207
213
|
it('can handle buttonProps props appropriately for stop', () => __awaiter(void 0, void 0, void 0, function* () {
|
@@ -212,23 +218,30 @@ describe('Message bar', () => {
|
|
212
218
|
// --------------------------------------------------------------------------
|
213
219
|
it('can hide microphone button when window.SpeechRecognition is not there', () => {
|
214
220
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasMicrophoneButton: true }));
|
215
|
-
expect(react_2.screen.queryByRole('button', { name: '
|
221
|
+
expect(react_2.screen.queryByRole('button', { name: 'Use microphone' })).toBeFalsy();
|
216
222
|
});
|
217
223
|
it('can show microphone button', () => {
|
218
224
|
mockSpeechRecognition();
|
219
225
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasMicrophoneButton: true }));
|
220
|
-
expect(react_2.screen.getByRole('button', { name: '
|
226
|
+
expect(react_2.screen.getByRole('button', { name: 'Use microphone' })).toBeTruthy();
|
221
227
|
});
|
222
228
|
it('can handle buttonProps appropriately for microphone', () => __awaiter(void 0, void 0, void 0, function* () {
|
223
229
|
mockSpeechRecognition();
|
224
230
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasMicrophoneButton: true, buttonProps: {
|
225
231
|
microphone: { tooltipContent: { active: 'Currently listening', inactive: 'Not currently listening' } }
|
226
232
|
} }));
|
227
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: '
|
233
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Use microphone' }));
|
228
234
|
expect(react_2.screen.getByRole('tooltip', { name: 'Currently listening' })).toBeTruthy();
|
229
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: '
|
235
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop listening' }));
|
230
236
|
expect(react_2.screen.getByRole('tooltip', { name: 'Not currently listening' })).toBeTruthy();
|
231
237
|
}));
|
238
|
+
it('can customize the listening placeholder', () => __awaiter(void 0, void 0, void 0, function* () {
|
239
|
+
mockSpeechRecognition();
|
240
|
+
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasMicrophoneButton: true, listeningText: "I am listening" }));
|
241
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Use microphone' }));
|
242
|
+
const input = react_2.screen.getByRole('textbox', { name: /I am listening/i });
|
243
|
+
expect(input).toBeTruthy();
|
244
|
+
}));
|
232
245
|
it('can handle buttonProps props appropriately for microphone', () => __awaiter(void 0, void 0, void 0, function* () {
|
233
246
|
mockSpeechRecognition();
|
234
247
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, hasMicrophoneButton: true, buttonProps: { microphone: { props: { 'aria-label': 'Test' } } } }));
|
@@ -236,9 +249,9 @@ describe('Message bar', () => {
|
|
236
249
|
}));
|
237
250
|
it('can be controlled', () => {
|
238
251
|
(0, react_2.render)(react_1.default.createElement(MessageBar_1.MessageBar, { onSendMessage: jest.fn, value: "test" }));
|
239
|
-
expect(react_2.screen.getByRole('button', { name: 'Attach
|
240
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
241
|
-
expect(react_2.screen.queryByRole('button', { name: '
|
252
|
+
expect(react_2.screen.getByRole('button', { name: 'Attach' })).toBeTruthy();
|
253
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeTruthy();
|
254
|
+
expect(react_2.screen.queryByRole('button', { name: 'Use microphone' })).toBeFalsy();
|
242
255
|
expect(react_2.screen.getByRole('textbox', { name: /Send a message.../i })).toBeTruthy();
|
243
256
|
expect(react_2.screen.getByRole('textbox', { name: /Send a message.../i })).toHaveValue('test');
|
244
257
|
});
|
@@ -18,6 +18,7 @@ export interface MicrophoneButtonProps extends ButtonProps {
|
|
18
18
|
};
|
19
19
|
/** Locale code for language speech recognition is conducted in. This should be in the format 'en-US', a.k.a. the ISO 639-1 code, a dash, and the ISO_3166-1 code. */
|
20
20
|
language?: string;
|
21
|
+
isCompact?: boolean;
|
21
22
|
}
|
22
23
|
export declare const MicrophoneButton: React.FunctionComponent<MicrophoneButtonProps>;
|
23
24
|
export default MicrophoneButton;
|
@@ -24,7 +24,7 @@ const react_core_1 = require("@patternfly/react-core");
|
|
24
24
|
// Import FontAwesome icons
|
25
25
|
const microphone_icon_1 = require("@patternfly/react-icons/dist/esm/icons/microphone-icon");
|
26
26
|
const MicrophoneButton = (_a) => {
|
27
|
-
var { isListening, onIsListeningChange, onSpeechRecognition, className, tooltipProps, tooltipContent = { active: 'Stop listening', inactive: 'Use microphone' }, language = 'en-US' } = _a, props = __rest(_a, ["isListening", "onIsListeningChange", "onSpeechRecognition", "className", "tooltipProps", "tooltipContent", "language"]);
|
27
|
+
var { isListening, onIsListeningChange, onSpeechRecognition, className, tooltipProps, tooltipContent = { active: 'Stop listening', inactive: 'Use microphone' }, language = 'en-US', isCompact } = _a, props = __rest(_a, ["isListening", "onIsListeningChange", "onSpeechRecognition", "className", "tooltipProps", "tooltipContent", "language", "isCompact"]);
|
28
28
|
// Microphone
|
29
29
|
// --------------------------------------------------------------------------
|
30
30
|
const [speechRecognition, setSpeechRecognition] = react_1.default.useState();
|
@@ -69,8 +69,8 @@ const MicrophoneButton = (_a) => {
|
|
69
69
|
return null;
|
70
70
|
}
|
71
71
|
return (react_1.default.createElement(react_core_1.Tooltip, Object.assign({ aria: "none", "aria-live": "polite", id: "pf-chatbot__tooltip--use-microphone", content: isListening ? tooltipContent.active : tooltipContent.inactive, position: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.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 }, tooltipProps),
|
72
|
-
react_1.default.createElement(react_core_1.Button, Object.assign({ variant: "plain", className: `pf-chatbot__button--microphone ${isListening ? 'pf-chatbot__button--microphone--active' : ''} ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || '
|
73
|
-
react_1.default.createElement(microphone_icon_1.MicrophoneIcon, null)) }, props))));
|
72
|
+
react_1.default.createElement(react_core_1.Button, Object.assign({ variant: "plain", className: `pf-chatbot__button--microphone ${isListening ? 'pf-chatbot__button--microphone--active' : ''} ${isCompact ? 'pf-m-compact' : ''} ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || (isListening ? 'Stop listening' : 'Use microphone'), "aria-pressed": isListening, onClick: isListening ? stopListening : startListening, icon: react_1.default.createElement(react_core_1.Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true },
|
73
|
+
react_1.default.createElement(microphone_icon_1.MicrophoneIcon, null)), size: isCompact ? 'sm' : undefined }, props))));
|
74
74
|
};
|
75
75
|
exports.MicrophoneButton = MicrophoneButton;
|
76
76
|
exports.default = exports.MicrophoneButton;
|
@@ -9,6 +9,7 @@ export interface SendButtonProps extends ButtonProps {
|
|
9
9
|
tooltipProps?: Omit<TooltipProps, 'content'>;
|
10
10
|
/** English text "Send" used in the tooltip */
|
11
11
|
tooltipContent?: string;
|
12
|
+
isCompact?: boolean;
|
12
13
|
}
|
13
14
|
export declare const SendButton: React.FunctionComponent<SendButtonProps>;
|
14
15
|
export default SendButton;
|
@@ -23,12 +23,12 @@ const react_1 = __importDefault(require("react"));
|
|
23
23
|
const react_core_1 = require("@patternfly/react-core");
|
24
24
|
const paper_plane_icon_1 = require("@patternfly/react-icons/dist/esm/icons/paper-plane-icon");
|
25
25
|
const SendButton = (_a) => {
|
26
|
-
var { className, onClick, tooltipProps, tooltipContent = 'Send' } = _a, props = __rest(_a, ["className", "onClick", "tooltipProps", "tooltipContent"]);
|
26
|
+
var { className, onClick, tooltipProps, tooltipContent = 'Send', isCompact } = _a, props = __rest(_a, ["className", "onClick", "tooltipProps", "tooltipContent", "isCompact"]);
|
27
27
|
return (react_1.default.createElement(react_core_1.Tooltip, Object.assign({ id: "pf-chatbot__tooltip--send", content: tooltipContent, position: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.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,
|
28
28
|
// prevents VO announcements of both aria label and tooltip
|
29
29
|
aria: "none" }, tooltipProps),
|
30
|
-
react_1.default.createElement(react_core_1.Button, Object.assign({ variant: "plain", className: `pf-chatbot__button--send ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || 'Send
|
31
|
-
react_1.default.createElement(paper_plane_icon_1.PaperPlaneIcon, null)) }, props))));
|
30
|
+
react_1.default.createElement(react_core_1.Button, Object.assign({ variant: "plain", className: `pf-chatbot__button--send ${isCompact ? 'pf-m-compact' : ''} ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || 'Send', onClick: onClick, icon: react_1.default.createElement(react_core_1.Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true },
|
31
|
+
react_1.default.createElement(paper_plane_icon_1.PaperPlaneIcon, null)), size: isCompact ? 'sm' : undefined }, props))));
|
32
32
|
};
|
33
33
|
exports.SendButton = SendButton;
|
34
34
|
exports.default = exports.SendButton;
|
@@ -24,23 +24,23 @@ const renderSend = (props) => {
|
|
24
24
|
describe('Send button', () => {
|
25
25
|
it('should render button correctly', () => {
|
26
26
|
renderSend();
|
27
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
27
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toBeTruthy();
|
28
28
|
});
|
29
29
|
it('should handle onClick correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
30
30
|
const spy = jest.fn();
|
31
31
|
(0, react_2.render)(react_1.default.createElement(SendButton_1.SendButton, { onClick: spy }));
|
32
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send
|
32
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send' }));
|
33
33
|
expect(react_2.screen.getByRole('tooltip', { name: 'Send' })).toBeTruthy();
|
34
34
|
expect(spy).toHaveBeenCalledTimes(1);
|
35
35
|
}));
|
36
36
|
it('should handle custom tooltip correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
37
37
|
(0, react_2.render)(react_1.default.createElement(SendButton_1.SendButton, { onClick: jest.fn, tooltipContent: "Test" }));
|
38
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send
|
38
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send' }));
|
39
39
|
expect(react_2.screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
|
40
40
|
}));
|
41
41
|
it('should handle className prop', () => {
|
42
42
|
renderSend({ className: 'test' });
|
43
|
-
expect(react_2.screen.getByRole('button', { name: 'Send
|
43
|
+
expect(react_2.screen.getByRole('button', { name: 'Send' })).toHaveClass('test');
|
44
44
|
});
|
45
45
|
it('should handle spread props, including aria-label', () => {
|
46
46
|
renderSend({ 'aria-label': 'test' });
|
@@ -48,7 +48,11 @@ describe('Send button', () => {
|
|
48
48
|
});
|
49
49
|
it('should handle tooltipProps prop', () => __awaiter(void 0, void 0, void 0, function* () {
|
50
50
|
renderSend({ tooltipProps: { id: 'test' } });
|
51
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send
|
51
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send' }));
|
52
52
|
expect(react_2.screen.getByRole('tooltip', { name: 'Send' })).toHaveAttribute('id', 'test');
|
53
53
|
}));
|
54
|
+
it('should handle isCompact', () => {
|
55
|
+
renderSend({ 'data-testid': 'button', isCompact: true });
|
56
|
+
expect(react_2.screen.getByTestId('button')).toHaveClass('pf-m-compact');
|
57
|
+
});
|
54
58
|
});
|
@@ -9,6 +9,7 @@ export interface StopButtonProps extends ButtonProps {
|
|
9
9
|
tooltipProps?: Omit<TooltipProps, 'content'>;
|
10
10
|
/** English text "Stop" used in the tooltip */
|
11
11
|
tooltipContent?: string;
|
12
|
+
isCompact?: boolean;
|
12
13
|
}
|
13
14
|
export declare const StopButton: React.FunctionComponent<StopButtonProps>;
|
14
15
|
export default StopButton;
|
@@ -22,13 +22,13 @@ const react_1 = __importDefault(require("react"));
|
|
22
22
|
// Import PatternFly components
|
23
23
|
const react_core_1 = require("@patternfly/react-core");
|
24
24
|
const StopButton = (_a) => {
|
25
|
-
var { className, onClick, tooltipProps, tooltipContent = 'Stop' } = _a, props = __rest(_a, ["className", "onClick", "tooltipProps", "tooltipContent"]);
|
25
|
+
var { className, onClick, tooltipProps, tooltipContent = 'Stop', isCompact } = _a, props = __rest(_a, ["className", "onClick", "tooltipProps", "tooltipContent", "isCompact"]);
|
26
26
|
return (react_1.default.createElement(react_core_1.Tooltip, Object.assign({ id: "pf-chatbot__tooltip--stop", content: tooltipContent, position: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.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,
|
27
27
|
// prevents VO announcements of both aria label and tooltip
|
28
28
|
aria: "none" }, tooltipProps),
|
29
|
-
react_1.default.createElement(react_core_1.Button, Object.assign({ className: `pf-chatbot__button--stop ${className !== null && className !== void 0 ? className : ''}`, variant: "link", "aria-label": props['aria-label'] || 'Stop
|
29
|
+
react_1.default.createElement(react_core_1.Button, Object.assign({ className: `pf-chatbot__button--stop ${isCompact ? 'pf-m-compact' : ''} ${className !== null && className !== void 0 ? className : ''}`, variant: "link", "aria-label": props['aria-label'] || 'Stop', onClick: onClick, icon: react_1.default.createElement(react_core_1.Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true },
|
30
30
|
react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
31
|
-
react_1.default.createElement("path", { d: "M0.5 3C0.5 1.62109 1.62109 0.5 3 0.5H13C14.3789 0.5 15.5 1.62109 15.5 3V13C15.5 14.3789 14.3789 15.5 13 15.5H3C1.62109 15.5 0.5 14.3789 0.5 13V3Z", fill: "currentColor" }))) }, props))));
|
31
|
+
react_1.default.createElement("path", { d: "M0.5 3C0.5 1.62109 1.62109 0.5 3 0.5H13C14.3789 0.5 15.5 1.62109 15.5 3V13C15.5 14.3789 14.3789 15.5 13 15.5H3C1.62109 15.5 0.5 14.3789 0.5 13V3Z", fill: "currentColor" }))), size: isCompact ? 'sm' : undefined }, props))));
|
32
32
|
};
|
33
33
|
exports.StopButton = StopButton;
|
34
34
|
exports.default = exports.StopButton;
|
@@ -24,23 +24,23 @@ const renderStop = (props) => {
|
|
24
24
|
describe('Stop button', () => {
|
25
25
|
it('should render button correctly', () => {
|
26
26
|
renderStop();
|
27
|
-
expect(react_2.screen.getByRole('button', { name: 'Stop
|
27
|
+
expect(react_2.screen.getByRole('button', { name: 'Stop' })).toBeTruthy();
|
28
28
|
});
|
29
29
|
it('should handle onClick correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
30
30
|
const spy = jest.fn();
|
31
31
|
(0, react_2.render)(react_1.default.createElement(StopButton_1.StopButton, { onClick: spy }));
|
32
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop
|
32
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop' }));
|
33
33
|
expect(react_2.screen.getByRole('tooltip', { name: 'Stop' })).toBeTruthy();
|
34
34
|
expect(spy).toHaveBeenCalledTimes(1);
|
35
35
|
}));
|
36
36
|
it('should handle custom tooltip correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
37
37
|
(0, react_2.render)(react_1.default.createElement(StopButton_1.StopButton, { onClick: jest.fn, tooltipContent: "Test" }));
|
38
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop
|
38
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop' }));
|
39
39
|
expect(react_2.screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
|
40
40
|
}));
|
41
41
|
it('should handle className prop', () => {
|
42
42
|
renderStop({ className: 'test' });
|
43
|
-
expect(react_2.screen.getByRole('button', { name: 'Stop
|
43
|
+
expect(react_2.screen.getByRole('button', { name: 'Stop' })).toHaveClass('test');
|
44
44
|
});
|
45
45
|
it('should handle spread props, including aria-label', () => {
|
46
46
|
renderStop({ 'aria-label': 'test' });
|
@@ -48,7 +48,11 @@ describe('Stop button', () => {
|
|
48
48
|
});
|
49
49
|
it('should handle tooltipProps prop', () => __awaiter(void 0, void 0, void 0, function* () {
|
50
50
|
renderStop({ tooltipProps: { id: 'test' } });
|
51
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop
|
51
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop' }));
|
52
52
|
expect(react_2.screen.getByRole('tooltip', { name: 'Stop' })).toHaveAttribute('id', 'test');
|
53
53
|
}));
|
54
|
+
it('should handle isCompact', () => {
|
55
|
+
renderStop({ 'data-testid': 'button', isCompact: true });
|
56
|
+
expect(react_2.screen.getByTestId('button')).toHaveClass('pf-m-compact');
|
57
|
+
});
|
54
58
|
});
|
@@ -12,6 +12,6 @@ const react_core_1 = require("@patternfly/react-core");
|
|
12
12
|
const arrow_up_icon_1 = require("@patternfly/react-icons/dist/esm/icons/arrow-up-icon");
|
13
13
|
const arrow_down_icon_1 = require("@patternfly/react-icons/dist/esm/icons/arrow-down-icon");
|
14
14
|
const JumpButton = ({ position, isHidden, onClick }) => isHidden ? null : (react_1.default.createElement(react_core_1.Tooltip, { id: `pf-chatbot__tooltip--jump-${position}`, content: `Back to ${position}`, position: "top" },
|
15
|
-
react_1.default.createElement(react_core_1.Button, { variant: "plain", className: `pf-chatbot__jump pf-chatbot__jump--${position}`, "aria-label": `Jump ${position}
|
15
|
+
react_1.default.createElement(react_core_1.Button, { variant: "plain", className: `pf-chatbot__jump pf-chatbot__jump--${position}`, "aria-label": `Jump ${position}`, onClick: onClick },
|
16
16
|
react_1.default.createElement(react_core_1.Icon, { iconSize: "lg", isInline: true }, position === 'top' ? react_1.default.createElement(arrow_up_icon_1.ArrowUpIcon, null) : react_1.default.createElement(arrow_down_icon_1.ArrowDownIcon, null)))));
|
17
17
|
exports.default = JumpButton;
|
@@ -20,20 +20,20 @@ const user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
20
20
|
describe('JumpButton', () => {
|
21
21
|
it('should render top button correctly', () => {
|
22
22
|
(0, react_2.render)(react_1.default.createElement(JumpButton_1.default, { position: "top", onClick: jest.fn() }));
|
23
|
-
expect(react_2.screen.getByRole('button', { name: /Jump top
|
23
|
+
expect(react_2.screen.getByRole('button', { name: /Jump top/i })).toBeTruthy();
|
24
24
|
});
|
25
25
|
it('should render bottom button correctly', () => {
|
26
26
|
(0, react_2.render)(react_1.default.createElement(JumpButton_1.default, { position: "bottom", onClick: jest.fn() }));
|
27
|
-
expect(react_2.screen.getByRole('button', { name: /Jump bottom
|
27
|
+
expect(react_2.screen.getByRole('button', { name: /Jump bottom/i })).toBeTruthy();
|
28
28
|
});
|
29
29
|
it('should call onClick appropriately', () => __awaiter(void 0, void 0, void 0, function* () {
|
30
30
|
const spy = jest.fn();
|
31
31
|
(0, react_2.render)(react_1.default.createElement(JumpButton_1.default, { position: "bottom", onClick: spy }));
|
32
|
-
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: /Jump bottom
|
32
|
+
yield user_event_1.default.click(react_2.screen.getByRole('button', { name: /Jump bottom/i }));
|
33
33
|
expect(spy).toHaveBeenCalledTimes(1);
|
34
34
|
}));
|
35
35
|
it('should be hidden if isHidden prop is used', () => __awaiter(void 0, void 0, void 0, function* () {
|
36
36
|
(0, react_2.render)(react_1.default.createElement(JumpButton_1.default, { position: "bottom", onClick: jest.fn(), isHidden: true }));
|
37
|
-
expect(react_2.screen.queryByRole('button', { name: /Jump bottom
|
37
|
+
expect(react_2.screen.queryByRole('button', { name: /Jump bottom/i })).toBeFalsy();
|
38
38
|
}));
|
39
39
|
});
|
@@ -12,6 +12,10 @@ export interface MessageBoxProps extends React.HTMLProps<HTMLDivElement> {
|
|
12
12
|
innerRef?: React.Ref<HTMLDivElement>;
|
13
13
|
/** Modifier that controls how content in MessageBox is positioned within the container */
|
14
14
|
position?: 'top' | 'bottom';
|
15
|
+
/** Click handler for additional logic for when scroll to top jump button is clicked */
|
16
|
+
onScrollToTopClick?: () => void;
|
17
|
+
/** Click handler for additional logic for when scroll to bottom jump button is clicked */
|
18
|
+
onScrollToBottomClick?: () => void;
|
15
19
|
}
|
16
20
|
export declare const MessageBox: React.ForwardRefExoticComponent<Omit<MessageBoxProps, "ref"> & React.RefAttributes<any>>;
|
17
21
|
export default MessageBox;
|
@@ -1,4 +1,15 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
3
|
+
var t = {};
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
5
|
+
t[p] = s[p];
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
9
|
+
t[p[i]] = s[p[i]];
|
10
|
+
}
|
11
|
+
return t;
|
12
|
+
};
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
15
|
};
|
@@ -9,7 +20,8 @@ exports.MessageBox = void 0;
|
|
9
20
|
// ============================================================================
|
10
21
|
const react_1 = __importDefault(require("react"));
|
11
22
|
const JumpButton_1 = __importDefault(require("./JumpButton"));
|
12
|
-
const MessageBoxBase = (
|
23
|
+
const MessageBoxBase = (_a) => {
|
24
|
+
var { announcement, ariaLabel = 'Scrollable message log', children, innerRef, className, position = 'top', onScrollToTopClick, onScrollToBottomClick } = _a, props = __rest(_a, ["announcement", "ariaLabel", "children", "innerRef", "className", "position", "onScrollToTopClick", "onScrollToBottomClick"]);
|
13
25
|
const [atTop, setAtTop] = react_1.default.useState(false);
|
14
26
|
const [atBottom, setAtBottom] = react_1.default.useState(true);
|
15
27
|
const [isOverflowing, setIsOverflowing] = react_1.default.useState(false);
|
@@ -42,12 +54,14 @@ const MessageBoxBase = ({ announcement, ariaLabel = 'Scrollable message log', ch
|
|
42
54
|
if (element) {
|
43
55
|
element.scrollTo({ top: 0, behavior: 'smooth' });
|
44
56
|
}
|
57
|
+
onScrollToTopClick && onScrollToTopClick();
|
45
58
|
}, [messageBoxRef]);
|
46
59
|
const scrollToBottom = react_1.default.useCallback(() => {
|
47
60
|
const element = messageBoxRef.current;
|
48
61
|
if (element) {
|
49
62
|
element.scrollTo({ top: element.scrollHeight, behavior: 'smooth' });
|
50
63
|
}
|
64
|
+
onScrollToBottomClick && onScrollToBottomClick();
|
51
65
|
}, [messageBoxRef]);
|
52
66
|
// Detect scroll position
|
53
67
|
react_1.default.useEffect(() => {
|
@@ -65,7 +79,7 @@ const MessageBoxBase = ({ announcement, ariaLabel = 'Scrollable message log', ch
|
|
65
79
|
}, [checkOverflow, handleScroll, messageBoxRef]);
|
66
80
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
67
81
|
react_1.default.createElement(JumpButton_1.default, { position: "top", isHidden: isOverflowing && atTop, onClick: scrollToTop }),
|
68
|
-
react_1.default.createElement("div", { role: "region", tabIndex: 0, "aria-label": ariaLabel, className: `pf-chatbot__messagebox ${position === 'bottom' && 'pf-chatbot__messagebox--bottom'} ${className !== null && className !== void 0 ? className : ''}`, ref: innerRef !== null && innerRef !== void 0 ? innerRef : messageBoxRef },
|
82
|
+
react_1.default.createElement("div", Object.assign({ role: "region", tabIndex: 0, "aria-label": ariaLabel, className: `pf-chatbot__messagebox ${position === 'bottom' && 'pf-chatbot__messagebox--bottom'} ${className !== null && className !== void 0 ? className : ''}`, ref: innerRef !== null && innerRef !== void 0 ? innerRef : messageBoxRef }, props),
|
69
83
|
children,
|
70
84
|
react_1.default.createElement("div", { className: "pf-chatbot__messagebox-announcement", "aria-live": "polite" }, announcement)),
|
71
85
|
react_1.default.createElement(JumpButton_1.default, { position: "bottom", isHidden: isOverflowing && atBottom, onClick: scrollToBottom })));
|
@@ -1,4 +1,13 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
13
|
};
|
@@ -6,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
15
|
const react_1 = __importDefault(require("react"));
|
7
16
|
const react_2 = require("@testing-library/react");
|
8
17
|
const MessageBox_1 = require("./MessageBox");
|
18
|
+
const user_event_1 = __importDefault(require("@testing-library/user-event"));
|
9
19
|
describe('MessageBox', () => {
|
10
20
|
it('should render Message box', () => {
|
11
21
|
(0, react_2.render)(react_1.default.createElement(MessageBox_1.MessageBox, null,
|
@@ -19,4 +29,37 @@ describe('MessageBox', () => {
|
|
19
29
|
expect(ref.current).not.toBeNull();
|
20
30
|
expect(ref.current).toBeInstanceOf(HTMLDivElement);
|
21
31
|
});
|
32
|
+
it('should call onScrollToBottomClick when scroll to top button is clicked', () => __awaiter(void 0, void 0, void 0, function* () {
|
33
|
+
const spy = jest.fn();
|
34
|
+
(0, react_2.render)(react_1.default.createElement(MessageBox_1.MessageBox, { onScrollToBottomClick: spy },
|
35
|
+
react_1.default.createElement("div", null, "Test message content")));
|
36
|
+
// this forces button to show
|
37
|
+
const region = react_2.screen.getByRole('region');
|
38
|
+
Object.defineProperty(region, 'scrollHeight', { configurable: true, value: 1000 });
|
39
|
+
Object.defineProperty(region, 'clientHeight', { configurable: true, value: 500 });
|
40
|
+
Object.defineProperty(region, 'scrollTop', { configurable: true, value: 0 });
|
41
|
+
region.dispatchEvent(new Event('scroll'));
|
42
|
+
yield (0, react_2.waitFor)(() => {
|
43
|
+
user_event_1.default.click(react_2.screen.getByRole('button', { name: /Jump bottom/i }));
|
44
|
+
expect(spy).toHaveBeenCalled();
|
45
|
+
});
|
46
|
+
}));
|
47
|
+
it('should call onScrollToTopClick when scroll to top button is clicked', () => __awaiter(void 0, void 0, void 0, function* () {
|
48
|
+
const spy = jest.fn();
|
49
|
+
(0, react_2.render)(react_1.default.createElement(MessageBox_1.MessageBox, { onScrollToTopClick: spy },
|
50
|
+
react_1.default.createElement("div", null, "Test message content")));
|
51
|
+
// this forces button to show
|
52
|
+
const region = react_2.screen.getByRole('region');
|
53
|
+
Object.defineProperty(region, 'scrollHeight', { configurable: true, value: 1000 });
|
54
|
+
Object.defineProperty(region, 'clientHeight', { configurable: true, value: 500 });
|
55
|
+
Object.defineProperty(region, 'scrollTop', {
|
56
|
+
configurable: true,
|
57
|
+
value: 500
|
58
|
+
});
|
59
|
+
region.dispatchEvent(new Event('scroll'));
|
60
|
+
yield (0, react_2.waitFor)(() => {
|
61
|
+
user_event_1.default.click(react_2.screen.getByRole('button', { name: /Jump top/i }));
|
62
|
+
expect(spy).toHaveBeenCalled();
|
63
|
+
});
|
64
|
+
}));
|
22
65
|
});
|
@@ -17,6 +17,8 @@ export interface PreviewAttachmentProps {
|
|
17
17
|
title?: string;
|
18
18
|
/** Display mode for the Chatbot parent; this influences the styles applied */
|
19
19
|
displayMode?: ChatbotDisplayMode;
|
20
|
+
/** Sets modal to compact styling. */
|
21
|
+
isCompact?: boolean;
|
20
22
|
}
|
21
23
|
export declare const PreviewAttachment: React.FunctionComponent<PreviewAttachmentProps>;
|
22
24
|
export default PreviewAttachment;
|
@@ -10,7 +10,7 @@ exports.PreviewAttachment = void 0;
|
|
10
10
|
const react_1 = __importDefault(require("react"));
|
11
11
|
const CodeModal_1 = __importDefault(require("../CodeModal"));
|
12
12
|
const Chatbot_1 = require("../Chatbot");
|
13
|
-
const PreviewAttachment = ({ fileName, code, handleModalToggle, isModalOpen, onDismiss = undefined, onEdit, title = 'Preview attachment', displayMode = Chatbot_1.ChatbotDisplayMode.default }) => {
|
13
|
+
const PreviewAttachment = ({ fileName, code, handleModalToggle, isModalOpen, onDismiss = undefined, onEdit, title = 'Preview attachment', displayMode = Chatbot_1.ChatbotDisplayMode.default, isCompact }) => {
|
14
14
|
const handleEdit = (_event) => {
|
15
15
|
handleModalToggle(_event);
|
16
16
|
onEdit(_event);
|
@@ -19,7 +19,7 @@ const PreviewAttachment = ({ fileName, code, handleModalToggle, isModalOpen, onD
|
|
19
19
|
handleModalToggle(_event);
|
20
20
|
onDismiss && onDismiss(_event);
|
21
21
|
};
|
22
|
-
return (react_1.default.createElement(CodeModal_1.default, { codeEditorControlClassName: "pf-chatbot__code-modal--controls", code: code, fileName: fileName, handleModalToggle: handleModalToggle, isCopyEnabled: true, isLineNumbersVisible: false, isModalOpen: isModalOpen, onPrimaryAction: handleEdit, onSecondaryAction: handleDismiss, primaryActionBtn: "Edit", secondaryActionBtn: "Dismiss", title: title, isReadOnly: true, displayMode: displayMode }));
|
22
|
+
return (react_1.default.createElement(CodeModal_1.default, { codeEditorControlClassName: "pf-chatbot__code-modal--controls", code: code, fileName: fileName, handleModalToggle: handleModalToggle, isCopyEnabled: true, isLineNumbersVisible: false, isModalOpen: isModalOpen, onPrimaryAction: handleEdit, onSecondaryAction: handleDismiss, primaryActionBtn: "Edit", secondaryActionBtn: "Dismiss", title: title, isReadOnly: true, displayMode: displayMode, isCompact: isCompact }));
|
23
23
|
};
|
24
24
|
exports.PreviewAttachment = PreviewAttachment;
|
25
25
|
exports.default = exports.PreviewAttachment;
|
@@ -8,6 +8,8 @@ export interface SettingsFormProps {
|
|
8
8
|
label: string;
|
9
9
|
field: React.ReactElement;
|
10
10
|
}[];
|
11
|
+
/** Sets form to compact styling. */
|
12
|
+
isCompact?: boolean;
|
11
13
|
}
|
12
14
|
export declare const SettingsForm: React.FunctionComponent<SettingsFormProps>;
|
13
15
|
export default SettingsForm;
|
@@ -17,8 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.SettingsForm = void 0;
|
18
18
|
const react_1 = __importDefault(require("react"));
|
19
19
|
const SettingsForm = (_a) => {
|
20
|
-
var { className, fields = [] } = _a, props = __rest(_a, ["className", "fields"]);
|
21
|
-
return (react_1.default.createElement("div", Object.assign({ className: `pf-chatbot__settings-form-container ${className}` }, props),
|
20
|
+
var { className, fields = [], isCompact } = _a, props = __rest(_a, ["className", "fields", "isCompact"]);
|
21
|
+
return (react_1.default.createElement("div", Object.assign({ className: `pf-chatbot__settings-form-container ${isCompact ? 'pf-m-compact' : ''} ${className ? ` ${className}` : ''}` }, props),
|
22
22
|
react_1.default.createElement("form", { className: "pf-chatbot__settings-form" }, fields.map((field) => (react_1.default.createElement("div", { className: "pf-chatbot__settings-form-row", key: field.label },
|
23
23
|
react_1.default.createElement("label", { className: "pf-chatbot__settings-label", htmlFor: field.id }, field.label),
|
24
24
|
field.field))))));
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
import '@testing-library/jest-dom';
|
@@ -7,6 +7,7 @@ const react_1 = __importDefault(require("react"));
|
|
7
7
|
const react_core_1 = require("@patternfly/react-core");
|
8
8
|
const react_2 = require("@testing-library/react");
|
9
9
|
const SettingsForm_1 = require("./SettingsForm");
|
10
|
+
require("@testing-library/jest-dom");
|
10
11
|
describe('SettingsForm', () => {
|
11
12
|
it('should render settingsForm with custom classname', () => {
|
12
13
|
const { container } = (0, react_2.render)(react_1.default.createElement(SettingsForm_1.SettingsForm, { className: "custom-settings" }));
|
@@ -23,4 +24,15 @@ describe('SettingsForm', () => {
|
|
23
24
|
(0, react_2.render)(react_1.default.createElement(SettingsForm_1.SettingsForm, { fields: fields }));
|
24
25
|
expect(react_2.screen.getByRole('button', { name: 'Archive chat' })).toBeTruthy();
|
25
26
|
});
|
27
|
+
it('should render settingsForm with isCompact', () => {
|
28
|
+
const fields = [
|
29
|
+
{
|
30
|
+
id: 'archived-chat',
|
31
|
+
label: 'Archive chat',
|
32
|
+
field: (react_1.default.createElement(react_core_1.Button, { id: "archived-chat", variant: "secondary" }, "Archive chat"))
|
33
|
+
}
|
34
|
+
];
|
35
|
+
(0, react_2.render)(react_1.default.createElement(SettingsForm_1.SettingsForm, { "data-testid": "settings-form", fields: fields, isCompact: true }));
|
36
|
+
expect(react_2.screen.getByTestId('settings-form')).toHaveClass('pf-m-compact');
|
37
|
+
});
|
26
38
|
});
|