@patternfly/chatbot 6.3.0-prerelease.1 → 6.3.0-prerelease.10

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.
Files changed (250) hide show
  1. package/dist/cjs/AttachmentEdit/AttachmentEdit.d.ts +2 -0
  2. package/dist/cjs/AttachmentEdit/AttachmentEdit.js +2 -2
  3. package/dist/cjs/Chatbot/Chatbot.d.ts +2 -0
  4. package/dist/cjs/Chatbot/Chatbot.js +2 -2
  5. package/dist/cjs/Chatbot/Chatbot.test.js +4 -0
  6. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -0
  7. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +3 -3
  8. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +4 -0
  9. package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +1 -0
  10. package/dist/cjs/ChatbotFooter/ChatbotFooter.js +2 -2
  11. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -1
  12. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +5 -0
  13. package/dist/cjs/ChatbotHeader/ChatbotHeader.js +1 -1
  14. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +4 -2
  15. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +20 -6
  16. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -1
  17. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +5 -0
  18. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +1 -1
  19. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +3 -2
  20. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +20 -6
  21. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -1
  22. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +5 -0
  23. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +1 -0
  24. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -3
  25. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -1
  26. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +5 -0
  27. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +1 -0
  28. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +2 -2
  29. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -1
  30. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +5 -0
  31. package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +3 -0
  32. package/dist/cjs/ChatbotModal/ChatbotModal.js +2 -2
  33. package/dist/cjs/ChatbotModal/ChatbotModal.test.d.ts +1 -0
  34. package/dist/cjs/ChatbotModal/ChatbotModal.test.js +28 -0
  35. package/dist/cjs/ChatbotPopover/ChatbotPopover.js +1 -1
  36. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +1 -0
  37. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +3 -3
  38. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +4 -0
  39. package/dist/cjs/CodeModal/CodeModal.d.ts +2 -0
  40. package/dist/cjs/CodeModal/CodeModal.js +3 -3
  41. package/dist/cjs/CodeModal/CodeModal.test.d.ts +1 -0
  42. package/dist/cjs/CodeModal/CodeModal.test.js +15 -0
  43. package/dist/cjs/FileDetails/FileDetails.js +1 -1
  44. package/dist/cjs/Message/Message.d.ts +2 -0
  45. package/dist/cjs/Message/Message.js +6 -6
  46. package/dist/cjs/Message/Message.test.js +12 -0
  47. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +2 -0
  48. package/dist/cjs/Message/QuickResponse/QuickResponse.js +2 -2
  49. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +2 -0
  50. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +2 -2
  51. package/dist/cjs/Message/UserFeedback/UserFeedback.js +4 -4
  52. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +4 -0
  53. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +4 -4
  54. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +4 -0
  55. package/dist/cjs/MessageBar/AttachButton.d.ts +1 -0
  56. package/dist/cjs/MessageBar/AttachButton.js +3 -3
  57. package/dist/cjs/MessageBar/AttachButton.test.js +4 -0
  58. package/dist/cjs/MessageBar/MessageBar.d.ts +5 -0
  59. package/dist/cjs/MessageBar/MessageBar.js +14 -13
  60. package/dist/cjs/MessageBar/MessageBar.test.js +13 -0
  61. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +1 -0
  62. package/dist/cjs/MessageBar/MicrophoneButton.js +3 -3
  63. package/dist/cjs/MessageBar/SendButton.d.ts +1 -0
  64. package/dist/cjs/MessageBar/SendButton.js +3 -3
  65. package/dist/cjs/MessageBar/SendButton.test.js +4 -0
  66. package/dist/cjs/MessageBar/StopButton.d.ts +1 -0
  67. package/dist/cjs/MessageBar/StopButton.js +3 -3
  68. package/dist/cjs/MessageBar/StopButton.test.js +4 -0
  69. package/dist/cjs/MessageBox/MessageBox.d.ts +4 -0
  70. package/dist/cjs/MessageBox/MessageBox.js +16 -2
  71. package/dist/cjs/MessageBox/MessageBox.test.js +43 -0
  72. package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +2 -0
  73. package/dist/cjs/PreviewAttachment/PreviewAttachment.js +2 -2
  74. package/dist/cjs/Settings/SettingsForm.d.ts +2 -0
  75. package/dist/cjs/Settings/SettingsForm.js +2 -2
  76. package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -1
  77. package/dist/cjs/Settings/SettingsForm.test.js +12 -0
  78. package/dist/cjs/SourcesCard/SourcesCard.js +2 -2
  79. package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +2 -0
  80. package/dist/cjs/TermsOfUse/TermsOfUse.js +5 -5
  81. package/dist/css/main.css +218 -15
  82. package/dist/css/main.css.map +1 -1
  83. package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +2 -0
  84. package/dist/esm/AttachmentEdit/AttachmentEdit.js +2 -2
  85. package/dist/esm/Chatbot/Chatbot.d.ts +2 -0
  86. package/dist/esm/Chatbot/Chatbot.js +2 -2
  87. package/dist/esm/Chatbot/Chatbot.test.js +4 -0
  88. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -0
  89. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +3 -3
  90. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +4 -0
  91. package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +1 -0
  92. package/dist/esm/ChatbotFooter/ChatbotFooter.js +2 -2
  93. package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -1
  94. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +5 -0
  95. package/dist/esm/ChatbotHeader/ChatbotHeader.js +1 -1
  96. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +4 -2
  97. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +20 -6
  98. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -1
  99. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +5 -0
  100. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +1 -1
  101. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +3 -2
  102. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +20 -6
  103. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -1
  104. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +5 -0
  105. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +1 -0
  106. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -3
  107. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -1
  108. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +5 -0
  109. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +1 -0
  110. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +2 -2
  111. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -1
  112. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +5 -0
  113. package/dist/esm/ChatbotModal/ChatbotModal.d.ts +3 -0
  114. package/dist/esm/ChatbotModal/ChatbotModal.js +2 -2
  115. package/dist/esm/ChatbotModal/ChatbotModal.test.d.ts +1 -0
  116. package/dist/esm/ChatbotModal/ChatbotModal.test.js +23 -0
  117. package/dist/esm/ChatbotPopover/ChatbotPopover.js +1 -1
  118. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +1 -0
  119. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +3 -3
  120. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +4 -0
  121. package/dist/esm/CodeModal/CodeModal.d.ts +2 -0
  122. package/dist/esm/CodeModal/CodeModal.js +3 -3
  123. package/dist/esm/CodeModal/CodeModal.test.d.ts +1 -0
  124. package/dist/esm/CodeModal/CodeModal.test.js +10 -0
  125. package/dist/esm/FileDetails/FileDetails.js +1 -1
  126. package/dist/esm/Message/Message.d.ts +2 -0
  127. package/dist/esm/Message/Message.js +6 -6
  128. package/dist/esm/Message/Message.test.js +12 -0
  129. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +2 -0
  130. package/dist/esm/Message/QuickResponse/QuickResponse.js +2 -2
  131. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +2 -0
  132. package/dist/esm/Message/QuickStarts/QuickStartTile.js +2 -2
  133. package/dist/esm/Message/UserFeedback/UserFeedback.js +4 -4
  134. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +4 -0
  135. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +4 -4
  136. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +4 -0
  137. package/dist/esm/MessageBar/AttachButton.d.ts +1 -0
  138. package/dist/esm/MessageBar/AttachButton.js +3 -3
  139. package/dist/esm/MessageBar/AttachButton.test.js +4 -0
  140. package/dist/esm/MessageBar/MessageBar.d.ts +5 -0
  141. package/dist/esm/MessageBar/MessageBar.js +14 -13
  142. package/dist/esm/MessageBar/MessageBar.test.js +13 -0
  143. package/dist/esm/MessageBar/MicrophoneButton.d.ts +1 -0
  144. package/dist/esm/MessageBar/MicrophoneButton.js +3 -3
  145. package/dist/esm/MessageBar/SendButton.d.ts +1 -0
  146. package/dist/esm/MessageBar/SendButton.js +3 -3
  147. package/dist/esm/MessageBar/SendButton.test.js +4 -0
  148. package/dist/esm/MessageBar/StopButton.d.ts +1 -0
  149. package/dist/esm/MessageBar/StopButton.js +3 -3
  150. package/dist/esm/MessageBar/StopButton.test.js +4 -0
  151. package/dist/esm/MessageBox/MessageBox.d.ts +4 -0
  152. package/dist/esm/MessageBox/MessageBox.js +16 -2
  153. package/dist/esm/MessageBox/MessageBox.test.js +44 -1
  154. package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +2 -0
  155. package/dist/esm/PreviewAttachment/PreviewAttachment.js +2 -2
  156. package/dist/esm/Settings/SettingsForm.d.ts +2 -0
  157. package/dist/esm/Settings/SettingsForm.js +2 -2
  158. package/dist/esm/Settings/SettingsForm.test.d.ts +1 -1
  159. package/dist/esm/Settings/SettingsForm.test.js +12 -0
  160. package/dist/esm/SourcesCard/SourcesCard.js +2 -2
  161. package/dist/esm/TermsOfUse/TermsOfUse.d.ts +2 -0
  162. package/dist/esm/TermsOfUse/TermsOfUse.js +5 -5
  163. package/dist/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +1 -1
  165. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +10 -1
  166. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +33 -0
  167. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +24 -0
  168. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +11 -0
  169. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +21 -0
  170. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +10 -1
  171. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +9 -0
  172. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +9 -0
  173. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSelection.tsx +11 -2
  174. package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactSettings.tsx +289 -0
  175. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUseCompact.tsx +136 -0
  176. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +14 -0
  177. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +8 -1
  178. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotCompact.tsx +481 -0
  179. package/src/AttachmentEdit/AttachmentEdit.tsx +5 -1
  180. package/src/Chatbot/Chatbot.scss +7 -0
  181. package/src/Chatbot/Chatbot.test.tsx +9 -0
  182. package/src/Chatbot/Chatbot.tsx +4 -1
  183. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +38 -3
  184. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +18 -0
  185. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +9 -2
  186. package/src/ChatbotFooter/ChatbotFooter.scss +5 -0
  187. package/src/ChatbotFooter/ChatbotFooter.test.tsx +10 -0
  188. package/src/ChatbotFooter/ChatbotFooter.tsx +3 -1
  189. package/src/ChatbotHeader/ChatbotHeader.scss +25 -0
  190. package/src/ChatbotHeader/ChatbotHeader.tsx +1 -1
  191. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +6 -0
  192. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +12 -6
  193. package/src/ChatbotHeader/ChatbotHeaderMain.tsx +3 -1
  194. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +8 -0
  195. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +10 -5
  196. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +6 -0
  197. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +5 -2
  198. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +10 -0
  199. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +4 -0
  200. package/src/ChatbotModal/ChatbotModal.scss +15 -4
  201. package/src/ChatbotModal/ChatbotModal.test.tsx +59 -0
  202. package/src/ChatbotModal/ChatbotModal.tsx +5 -1
  203. package/src/ChatbotPopover/ChatbotPopover.scss +9 -5
  204. package/src/ChatbotPopover/ChatbotPopover.tsx +1 -1
  205. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.scss +9 -1
  206. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +13 -0
  207. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +13 -2
  208. package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +1 -1
  209. package/src/CodeModal/CodeModal.scss +11 -3
  210. package/src/CodeModal/CodeModal.test.tsx +24 -0
  211. package/src/CodeModal/CodeModal.tsx +6 -2
  212. package/src/FileDetails/FileDetails.tsx +1 -1
  213. package/src/FileDetails/__snapshots__/FileDetails.test.tsx.snap +1 -1
  214. package/src/FileDetailsLabel/__snapshots__/FileDetailsLabel.test.tsx.snap +1 -1
  215. package/src/Message/Message.scss +27 -0
  216. package/src/Message/Message.test.tsx +21 -0
  217. package/src/Message/Message.tsx +10 -3
  218. package/src/Message/QuickResponse/QuickResponse.tsx +5 -1
  219. package/src/Message/QuickStarts/QuickStartTile.tsx +5 -1
  220. package/src/Message/TextMessage/TextMessage.scss +25 -0
  221. package/src/Message/UserFeedback/UserFeedback.scss +24 -3
  222. package/src/Message/UserFeedback/UserFeedback.test.tsx +13 -0
  223. package/src/Message/UserFeedback/UserFeedback.tsx +4 -2
  224. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +4 -0
  225. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +10 -2
  226. package/src/MessageBar/AttachButton.scss +10 -0
  227. package/src/MessageBar/AttachButton.test.tsx +4 -0
  228. package/src/MessageBar/AttachButton.tsx +5 -2
  229. package/src/MessageBar/MessageBar.scss +17 -0
  230. package/src/MessageBar/MessageBar.test.tsx +13 -0
  231. package/src/MessageBar/MessageBar.tsx +23 -8
  232. package/src/MessageBar/MicrophoneButton.scss +10 -0
  233. package/src/MessageBar/MicrophoneButton.tsx +5 -2
  234. package/src/MessageBar/SendButton.scss +10 -0
  235. package/src/MessageBar/SendButton.test.tsx +5 -1
  236. package/src/MessageBar/SendButton.tsx +5 -2
  237. package/src/MessageBar/StopButton.scss +10 -0
  238. package/src/MessageBar/StopButton.test.tsx +5 -1
  239. package/src/MessageBar/StopButton.tsx +5 -2
  240. package/src/MessageBox/MessageBox.scss +6 -0
  241. package/src/MessageBox/MessageBox.test.tsx +45 -1
  242. package/src/MessageBox/MessageBox.tsx +11 -1
  243. package/src/PreviewAttachment/PreviewAttachment.tsx +5 -1
  244. package/src/Settings/Settings.scss +11 -0
  245. package/src/Settings/SettingsForm.test.tsx +17 -0
  246. package/src/Settings/SettingsForm.tsx +12 -2
  247. package/src/SourcesCard/SourcesCard.scss +8 -0
  248. package/src/SourcesCard/SourcesCard.tsx +2 -1
  249. package/src/TermsOfUse/TermsOfUse.scss +20 -0
  250. package/src/TermsOfUse/TermsOfUse.tsx +9 -4
@@ -50,7 +50,7 @@ const FileDetails_1 = __importStar(require("../FileDetails"));
50
50
  const Chatbot_1 = require("../Chatbot");
51
51
  const ChatbotModal_1 = __importDefault(require("../ChatbotModal/ChatbotModal"));
52
52
  const CodeModal = (_a) => {
53
- var { fileName, code, codeEditorControlClassName: codeEditorClassName, handleModalToggle, isCopyEnabled, isLineNumbersVisible, isModalOpen, isReadOnly, onPrimaryAction, onSecondaryAction, primaryActionBtn, secondaryActionBtn, title, displayMode = Chatbot_1.ChatbotDisplayMode.default } = _a, props = __rest(_a, ["fileName", "code", "codeEditorControlClassName", "handleModalToggle", "isCopyEnabled", "isLineNumbersVisible", "isModalOpen", "isReadOnly", "onPrimaryAction", "onSecondaryAction", "primaryActionBtn", "secondaryActionBtn", "title", "displayMode"]);
53
+ var { fileName, code, codeEditorControlClassName: codeEditorClassName, handleModalToggle, isCopyEnabled, isLineNumbersVisible, isModalOpen, isReadOnly, onPrimaryAction, onSecondaryAction, primaryActionBtn, secondaryActionBtn, title, displayMode = Chatbot_1.ChatbotDisplayMode.default, isCompact } = _a, props = __rest(_a, ["fileName", "code", "codeEditorControlClassName", "handleModalToggle", "isCopyEnabled", "isLineNumbersVisible", "isModalOpen", "isReadOnly", "onPrimaryAction", "onSecondaryAction", "primaryActionBtn", "secondaryActionBtn", "title", "displayMode", "isCompact"]);
54
54
  const [newCode, setNewCode] = react_1.default.useState(code);
55
55
  const handlePrimaryAction = (_event) => {
56
56
  handleModalToggle(_event);
@@ -75,13 +75,13 @@ const CodeModal = (_a) => {
75
75
  setNewCode(value);
76
76
  }
77
77
  };
78
- const modal = (react_1.default.createElement(ChatbotModal_1.default, { isOpen: isModalOpen, onClose: handleModalToggle, ouiaId: "CodeModal", "aria-labelledby": "code-modal-title", "aria-describedby": "code-modal", className: `pf-chatbot__code-modal pf-chatbot__code-modal--${displayMode}`, displayMode: displayMode },
78
+ const modal = (react_1.default.createElement(ChatbotModal_1.default, { isOpen: isModalOpen, onClose: handleModalToggle, ouiaId: "CodeModal", "aria-labelledby": "code-modal-title", "aria-describedby": "code-modal", className: `pf-chatbot__code-modal ${isCompact ? 'pf-m-compact' : ''} pf-chatbot__code-modal--${displayMode}`, displayMode: displayMode, isCompact: isCompact },
79
79
  react_1.default.createElement(react_core_1.ModalHeader, { title: title, labelId: "code-modal-title" }),
80
80
  react_1.default.createElement(react_core_1.ModalBody, { id: "code-modal-body" },
81
81
  react_1.default.createElement(react_core_1.Stack, { className: "pf-chatbot__code-modal-body" },
82
82
  react_1.default.createElement(react_core_1.StackItem, { className: "pf-chatbot__code-modal-file-details" },
83
83
  react_1.default.createElement(FileDetails_1.default, { fileName: fileName })),
84
- react_1.default.createElement(react_core_1.StackItem, { className: "pf-chatbot__code-modal-body" },
84
+ react_1.default.createElement(react_core_1.StackItem, { className: "pf-chatbot__code-modal-editor" },
85
85
  react_1.default.createElement(react_code_editor_1.CodeEditor, Object.assign({ isDarkTheme: true, isLineNumbersVisible: isLineNumbersVisible, isLanguageLabelVisible: true, isCopyEnabled: isCopyEnabled, isReadOnly: isReadOnly, code: newCode, language: FileDetails_1.extensionToLanguage[path_browserify_1.default.extname(fileName).slice(1)], onEditorDidMount: onEditorDidMount, onCodeChange: onCodeChange, className: codeEditorClassName, isFullHeight: true, options: {
86
86
  glyphMargin: false,
87
87
  folding: false
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ require("@testing-library/jest-dom");
9
+ const CodeModal_1 = __importDefault(require("./CodeModal"));
10
+ describe('ChatbotModal', () => {
11
+ it('should render compact modal', () => {
12
+ (0, react_2.render)(react_1.default.createElement(CodeModal_1.default, { isCompact: true, code: "Hello world", fileName: "greetings.txt", isModalOpen: true, handleModalToggle: jest.fn(), onPrimaryAction: jest.fn(), onSecondaryAction: jest.fn(), title: "Preview attachment", primaryActionBtn: "Submit", secondaryActionBtn: "Cancel" }));
13
+ expect(react_2.screen.getByRole('dialog')).toHaveClass('pf-m-compact');
14
+ });
15
+ });
@@ -935,7 +935,7 @@ exports.extensionToLanguage = {
935
935
  const FileDetails = ({ className, fileName, fileNameClassName, languageTestId }) => {
936
936
  var _a;
937
937
  const language = (_a = exports.extensionToLanguage[path_browserify_1.default.extname(fileName).slice(1)]) === null || _a === void 0 ? void 0 : _a.toUpperCase();
938
- return (react_1.default.createElement(react_core_1.Flex, { className: `pf-chatbot__file-details ${className}`, gap: { default: 'gapSm' } },
938
+ return (react_1.default.createElement(react_core_1.Flex, { className: `pf-chatbot__file-details ${className ? className : ''}`, gap: { default: 'gapSm' } },
939
939
  react_1.default.createElement(react_core_1.Flex, { className: "pf-chatbot__code-icon", justifyContent: { default: 'justifyContentCenter' }, alignItems: { default: 'alignItemsCenter' }, alignSelf: { default: 'alignSelfCenter' } },
940
940
  react_1.default.createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg" },
941
941
  react_1.default.createElement("path", { d: "M0 4C0 1.79086 1.79086 0 4 0H20C22.2091 0 24 1.79086 24 4V20C24 22.2091 22.2091 24 20 24H4C1.79086 24 0 22.2091 0 20V4Z", fill: "currentColor" }),
@@ -120,6 +120,8 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
120
120
  onEditCancel?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
121
121
  /** Props for edit form */
122
122
  editFormProps?: FormProps;
123
+ /** Sets message to compact styling. */
124
+ isCompact?: boolean;
123
125
  }
124
126
  export declare const MessageBase: React.FunctionComponent<MessageProps>;
125
127
  declare const Message: React.ForwardRefExoticComponent<Omit<MessageProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -49,7 +49,7 @@ const LinkMessage_1 = __importDefault(require("./LinkMessage/LinkMessage"));
49
49
  const ErrorMessage_1 = __importDefault(require("./ErrorMessage/ErrorMessage"));
50
50
  const MessageInput_1 = __importDefault(require("./MessageInput"));
51
51
  const MessageBase = (_a) => {
52
- var { role, content, extraContent, name, avatar, timestamp, isLoading, actions, sources, botWord = 'AI', loadingWord = 'Loading message', codeBlockProps, quickResponses, quickResponseContainerProps = { numLabels: 5 }, attachments, hasRoundAvatar = true, avatarProps, quickStarts, userFeedbackForm, userFeedbackComplete, isLiveRegion = true, innerRef, tableProps, openLinkInNewTab = true, additionalRehypePlugins = [], linkProps, error, isEditable, editPlaceholder = 'Edit prompt message...', updateWord = 'Update', cancelWord = 'Cancel', onEditUpdate, onEditCancel, editFormProps } = _a, props = __rest(_a, ["role", "content", "extraContent", "name", "avatar", "timestamp", "isLoading", "actions", "sources", "botWord", "loadingWord", "codeBlockProps", "quickResponses", "quickResponseContainerProps", "attachments", "hasRoundAvatar", "avatarProps", "quickStarts", "userFeedbackForm", "userFeedbackComplete", "isLiveRegion", "innerRef", "tableProps", "openLinkInNewTab", "additionalRehypePlugins", "linkProps", "error", "isEditable", "editPlaceholder", "updateWord", "cancelWord", "onEditUpdate", "onEditCancel", "editFormProps"]);
52
+ var { role, content, extraContent, name, avatar, timestamp, isLoading, actions, sources, botWord = 'AI', loadingWord = 'Loading message', codeBlockProps, quickResponses, quickResponseContainerProps = { numLabels: 5 }, attachments, hasRoundAvatar = true, avatarProps, quickStarts, userFeedbackForm, userFeedbackComplete, isLiveRegion = true, innerRef, tableProps, openLinkInNewTab = true, additionalRehypePlugins = [], linkProps, error, isEditable, editPlaceholder = 'Edit prompt message...', updateWord = 'Update', cancelWord = 'Cancel', onEditUpdate, onEditCancel, editFormProps, isCompact } = _a, props = __rest(_a, ["role", "content", "extraContent", "name", "avatar", "timestamp", "isLoading", "actions", "sources", "botWord", "loadingWord", "codeBlockProps", "quickResponses", "quickResponseContainerProps", "attachments", "hasRoundAvatar", "avatarProps", "quickStarts", "userFeedbackForm", "userFeedbackComplete", "isLiveRegion", "innerRef", "tableProps", "openLinkInNewTab", "additionalRehypePlugins", "linkProps", "error", "isEditable", "editPlaceholder", "updateWord", "cancelWord", "onEditUpdate", "onEditCancel", "editFormProps", "isCompact"]);
53
53
  const [messageText, setMessageText] = react_1.default.useState(content);
54
54
  react_1.default.useEffect(() => {
55
55
  setMessageText(content);
@@ -128,12 +128,12 @@ const MessageBase = (_a) => {
128
128
  react_1.default.createElement("div", { className: "pf-chatbot__message-and-actions" },
129
129
  renderMessage(),
130
130
  afterMainContent && react_1.default.createElement(react_1.default.Fragment, null, afterMainContent),
131
- !isLoading && sources && react_1.default.createElement(SourcesCard_1.default, Object.assign({}, sources)),
132
- quickStarts && quickStarts.quickStart && (react_1.default.createElement(QuickStartTile_1.default, { quickStart: quickStarts.quickStart, onSelectQuickStart: quickStarts.onSelectQuickStart, minuteWord: quickStarts.minuteWord, minuteWordPlural: quickStarts.minuteWordPlural, prerequisiteWord: quickStarts.prerequisiteWord, prerequisiteWordPlural: quickStarts.prerequisiteWordPlural, quickStartButtonAriaLabel: quickStarts.quickStartButtonAriaLabel })),
131
+ !isLoading && sources && react_1.default.createElement(SourcesCard_1.default, Object.assign({}, sources, { isCompact: isCompact })),
132
+ quickStarts && quickStarts.quickStart && (react_1.default.createElement(QuickStartTile_1.default, { quickStart: quickStarts.quickStart, onSelectQuickStart: quickStarts.onSelectQuickStart, minuteWord: quickStarts.minuteWord, minuteWordPlural: quickStarts.minuteWordPlural, prerequisiteWord: quickStarts.prerequisiteWord, prerequisiteWordPlural: quickStarts.prerequisiteWordPlural, quickStartButtonAriaLabel: quickStarts.quickStartButtonAriaLabel, isCompact: isCompact })),
133
133
  !isLoading && actions && react_1.default.createElement(ResponseActions_1.default, { actions: actions }),
134
- userFeedbackForm && react_1.default.createElement(UserFeedback_1.default, Object.assign({}, userFeedbackForm, { timestamp: dateString })),
135
- userFeedbackComplete && react_1.default.createElement(UserFeedbackComplete_1.default, Object.assign({}, userFeedbackComplete, { timestamp: dateString })),
136
- !isLoading && quickResponses && (react_1.default.createElement(QuickResponse_1.default, { quickResponses: quickResponses, quickResponseContainerProps: quickResponseContainerProps }))),
134
+ userFeedbackForm && react_1.default.createElement(UserFeedback_1.default, Object.assign({}, userFeedbackForm, { timestamp: dateString, isCompact: isCompact })),
135
+ userFeedbackComplete && (react_1.default.createElement(UserFeedbackComplete_1.default, Object.assign({}, userFeedbackComplete, { timestamp: dateString, isCompact: isCompact }))),
136
+ !isLoading && quickResponses && (react_1.default.createElement(QuickResponse_1.default, { quickResponses: quickResponses, quickResponseContainerProps: quickResponseContainerProps, isCompact: isCompact }))),
137
137
  attachments && (react_1.default.createElement("div", { className: "pf-chatbot__message-attachments-container" }, attachments.map((attachment) => {
138
138
  var _a;
139
139
  return (react_1.default.createElement("div", { key: (_a = attachment.id) !== null && _a !== void 0 ? _a : attachment.name, className: "pf-chatbot__message-attachment" },
@@ -287,6 +287,18 @@ describe('Message', () => {
287
287
  yield user_event_1.default.click(quickResponse);
288
288
  expect(spy).toHaveBeenCalledTimes(1);
289
289
  }));
290
+ it('should be able to handle isCompact', () => __awaiter(void 0, void 0, void 0, function* () {
291
+ (0, react_2.render)(react_1.default.createElement(Message_1.default, { avatar: "./img", role: "bot", name: "Bot", content: "Hi", quickResponses: [
292
+ {
293
+ id: '1',
294
+ content: 'Yes',
295
+ onClick: jest.fn(),
296
+ className: 'test'
297
+ }
298
+ ], isCompact: true }));
299
+ const parent = react_2.screen.getByRole('button', { name: /Yes/i }).parentNode;
300
+ expect(parent).toHaveClass('pf-m-compact');
301
+ }));
290
302
  it('should be able to show more than 1 quick response', () => __awaiter(void 0, void 0, void 0, function* () {
291
303
  const spy = jest.fn();
292
304
  (0, react_2.render)(react_1.default.createElement(Message_1.default, { avatar: "./img", role: "bot", name: "Bot", content: "Hi", quickResponses: [
@@ -12,6 +12,8 @@ export interface QuickResponseProps {
12
12
  quickResponseContainerProps?: Omit<LabelGroupProps, 'ref'>;
13
13
  /** Callback when a response is clicked; used in feedback cards */
14
14
  onSelect?: (id: string) => void;
15
+ /** Sets the quick responses to compact styling */
16
+ isCompact?: boolean;
15
17
  }
16
18
  export declare const QuickResponse: React.FunctionComponent<QuickResponseProps>;
17
19
  export default QuickResponse;
@@ -18,7 +18,7 @@ exports.QuickResponse = void 0;
18
18
  const react_1 = __importDefault(require("react"));
19
19
  const react_core_1 = require("@patternfly/react-core");
20
20
  const react_icons_1 = require("@patternfly/react-icons");
21
- const QuickResponse = ({ quickResponses, quickResponseContainerProps = { numLabels: 5 }, onSelect }) => {
21
+ const QuickResponse = ({ quickResponses, quickResponseContainerProps = { numLabels: 5 }, onSelect, isCompact }) => {
22
22
  const [selectedQuickResponse, setSelectedQuickResponse] = react_1.default.useState();
23
23
  const handleQuickResponseClick = (id, onClick) => {
24
24
  setSelectedQuickResponse(id);
@@ -27,7 +27,7 @@ const QuickResponse = ({ quickResponses, quickResponseContainerProps = { numLabe
27
27
  };
28
28
  return (react_1.default.createElement(react_core_1.LabelGroup, Object.assign({ className: `pf-chatbot__message-quick-response ${(quickResponseContainerProps === null || quickResponseContainerProps === void 0 ? void 0 : quickResponseContainerProps.className) ? quickResponseContainerProps === null || quickResponseContainerProps === void 0 ? void 0 : quickResponseContainerProps.className : ''}` }, quickResponseContainerProps), quickResponses.map((_a) => {
29
29
  var { id, onClick, content, className } = _a, props = __rest(_a, ["id", "onClick", "content", "className"]);
30
- return (react_1.default.createElement(react_core_1.Label, Object.assign({ variant: id === selectedQuickResponse ? undefined : 'outline', icon: id === selectedQuickResponse ? react_1.default.createElement(react_icons_1.CheckIcon, null) : undefined, color: "blue", key: id, onClick: () => handleQuickResponseClick(id, onClick), className: `${id === selectedQuickResponse ? 'pf-chatbot__message-quick-response--selected' : ''} ${className ? className : ''}` }, props), content));
30
+ return (react_1.default.createElement(react_core_1.Label, Object.assign({ variant: id === selectedQuickResponse ? undefined : 'outline', icon: id === selectedQuickResponse ? react_1.default.createElement(react_icons_1.CheckIcon, null) : undefined, color: "blue", key: id, onClick: () => handleQuickResponseClick(id, onClick), className: `${id === selectedQuickResponse ? 'pf-chatbot__message-quick-response--selected' : ''} ${className ? className : ''}`, isCompact: isCompact }, props), content));
31
31
  })));
32
32
  };
33
33
  exports.QuickResponse = QuickResponse;
@@ -22,6 +22,8 @@ export interface QuickStartTileProps {
22
22
  prerequisiteWordPlural?: string;
23
23
  /** Aria-label for the quick start description button */
24
24
  quickStartButtonAriaLabel?: string;
25
+ /** Sets the tile to compact styling */
26
+ isCompact?: boolean;
25
27
  }
26
28
  declare const QuickStartTile: React.FC<QuickStartTileProps>;
27
29
  export default QuickStartTile;
@@ -42,7 +42,7 @@ const camelize = (str) => str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match
42
42
  return index === 0 ? match.toLowerCase() : match.toUpperCase();
43
43
  });
44
44
  exports.camelize = camelize;
45
- const QuickStartTile = ({ className, quickStart, onClick, onSelectQuickStart, minuteWord = 'minute', minuteWordPlural = 'minutes', prerequisiteWord, prerequisiteWordPlural, quickStartButtonAriaLabel, action }) => {
45
+ const QuickStartTile = ({ className, quickStart, onClick, onSelectQuickStart, minuteWord = 'minute', minuteWordPlural = 'minutes', prerequisiteWord, prerequisiteWordPlural, quickStartButtonAriaLabel, action, isCompact }) => {
46
46
  const { metadata: { name: id }, spec: { icon, displayName, description, durationMinutes, prerequisites, link, type } } = quickStart;
47
47
  let quickStartIcon;
48
48
  if (typeof icon === 'object') {
@@ -63,7 +63,7 @@ const QuickStartTile = ({ className, quickStart, onClick, onSelectQuickStart, mi
63
63
  };
64
64
  const ActionIcon = (action === null || action === void 0 ? void 0 : action.icon) || outlined_bookmark_icon_1.default;
65
65
  const additionalAction = action ? (React.createElement(react_core_1.Button, Object.assign({ "aria-label": action['aria-label'], icon: React.createElement(ActionIcon, null), variant: "plain", onClick: action.onClick }, action.buttonProps))) : undefined;
66
- return (React.createElement(react_core_1.Card, { className: `pf-chatbot__quickstarts-tile ${className ? className : ''}`, id: `${id}-chatbot-qs-tile`, style: { height: '100%' }, "data-testid": `chatbot-qs-card-${(0, exports.camelize)(displayName)}` },
66
+ return (React.createElement(react_core_1.Card, { className: `pf-chatbot__quickstarts-tile ${className ? className : ''}`, id: `${id}-chatbot-qs-tile`, style: { height: '100%' }, "data-testid": `chatbot-qs-card-${(0, exports.camelize)(displayName)}`, isCompact: isCompact },
67
67
  React.createElement(react_core_1.CardHeader, Object.assign({}, (action && {
68
68
  actions: { actions: additionalAction }
69
69
  })), quickStartIcon),
@@ -23,7 +23,7 @@ const react_core_1 = require("@patternfly/react-core");
23
23
  const QuickResponse_1 = __importDefault(require("../QuickResponse/QuickResponse"));
24
24
  const CloseButton_1 = __importDefault(require("./CloseButton"));
25
25
  const UserFeedback = (_a) => {
26
- var { className, timestamp, title = 'Why did you choose this rating?', hasTextArea, textAreaAriaLabel = `Provide optional additional feedback for message received at ${timestamp}`, textAreaPlaceholder = 'Provide optional additional feedback', onTextAreaChange, submitWord = 'Submit', quickResponses, quickResponseContainerProps = { 'aria-label': `Quick feedback for message received at ${timestamp}` }, onSubmit, onClose, closeButtonAriaLabel = `Close feedback for message received at ${timestamp}`, id, headingLevel: HeadingLevel = 'h1', focusOnLoad = true } = _a, props = __rest(_a, ["className", "timestamp", "title", "hasTextArea", "textAreaAriaLabel", "textAreaPlaceholder", "onTextAreaChange", "submitWord", "quickResponses", "quickResponseContainerProps", "onSubmit", "onClose", "closeButtonAriaLabel", "id", "headingLevel", "focusOnLoad"]);
26
+ var { className, timestamp, title = 'Why did you choose this rating?', hasTextArea, textAreaAriaLabel = `Provide optional additional feedback for message received at ${timestamp}`, textAreaPlaceholder = 'Provide optional additional feedback', onTextAreaChange, submitWord = 'Submit', quickResponses, quickResponseContainerProps = { 'aria-label': `Quick feedback for message received at ${timestamp}` }, onSubmit, onClose, closeButtonAriaLabel = `Close feedback for message received at ${timestamp}`, id, headingLevel: HeadingLevel = 'h1', focusOnLoad = true, isCompact } = _a, props = __rest(_a, ["className", "timestamp", "title", "hasTextArea", "textAreaAriaLabel", "textAreaPlaceholder", "onTextAreaChange", "submitWord", "quickResponses", "quickResponseContainerProps", "onSubmit", "onClose", "closeButtonAriaLabel", "id", "headingLevel", "focusOnLoad", "isCompact"]);
27
27
  const [selectedResponse, setSelectedResponse] = react_1.default.useState();
28
28
  const [value, setValue] = react_1.default.useState('');
29
29
  const divRef = react_1.default.useRef(null);
@@ -36,14 +36,14 @@ const UserFeedback = (_a) => {
36
36
  return (
37
37
  /* card does not have ref forwarding; hence wrapper div */
38
38
  react_1.default.createElement("div", { ref: divRef, id: id, tabIndex: 0, "aria-label": title },
39
- react_1.default.createElement(react_core_1.Card, Object.assign({ className: `pf-chatbot__feedback-card ${className ? className : ''}` }, props),
39
+ react_1.default.createElement(react_core_1.Card, Object.assign({ isCompact: isCompact, className: `pf-chatbot__feedback-card ${className ? className : ''}` }, props),
40
40
  react_1.default.createElement(react_core_1.CardHeader, { actions: {
41
41
  actions: react_1.default.createElement(CloseButton_1.default, { onClose: onClose, ariaLabel: closeButtonAriaLabel })
42
42
  } },
43
43
  react_1.default.createElement(HeadingLevel, { className: "pf-chatbot__feedback-card-title" }, title)),
44
44
  react_1.default.createElement(react_core_1.CardBody, null,
45
- react_1.default.createElement(react_core_1.Form, { className: "pf-chatbot__feedback-card-form" },
46
- quickResponses && (react_1.default.createElement(QuickResponse_1.default, { quickResponses: quickResponses, quickResponseContainerProps: quickResponseContainerProps, onSelect: (id) => setSelectedResponse(id) })),
45
+ react_1.default.createElement(react_core_1.Form, { className: `pf-chatbot__feedback-card-form ${isCompact ? 'pf-m-compact' : ''}` },
46
+ quickResponses && (react_1.default.createElement(QuickResponse_1.default, { quickResponses: quickResponses, quickResponseContainerProps: quickResponseContainerProps, onSelect: (id) => setSelectedResponse(id), isCompact: isCompact })),
47
47
  hasTextArea && (react_1.default.createElement(react_core_1.TextArea, { value: value, onChange: (_event, value) => {
48
48
  setValue(value);
49
49
  onTextAreaChange && onTextAreaChange(_event, value);
@@ -130,4 +130,8 @@ describe('UserFeedback', () => {
130
130
  (0, react_2.render)(react_1.default.createElement(UserFeedback_1.default, { timestamp: "12/12/12", onClose: jest.fn, onSubmit: jest.fn, quickResponses: MOCK_RESPONSES, "data-testid": "card", focusOnLoad: false }));
131
131
  expect(react_2.screen.getByTestId('card').parentElement).not.toHaveFocus();
132
132
  });
133
+ it('should handle isCompact', () => {
134
+ (0, react_2.render)(react_1.default.createElement(UserFeedback_1.default, { timestamp: "12/12/12", onClose: jest.fn, onSubmit: jest.fn, quickResponses: MOCK_RESPONSES, "data-testid": "card", isCompact: true }));
135
+ expect(react_2.screen.getByTestId('card')).toHaveClass('pf-m-compact');
136
+ });
133
137
  });
@@ -22,7 +22,7 @@ const react_1 = __importDefault(require("react"));
22
22
  const react_core_1 = require("@patternfly/react-core");
23
23
  const CloseButton_1 = __importDefault(require("./CloseButton"));
24
24
  const UserFeedbackComplete = (_a) => {
25
- var { className, title = 'Feedback submitted', body = "We've received your response. Thank you for sharing your feedback!", timestamp, timeout = false, timeoutAnimation = 3000, onTimeout, onClose, closeButtonAriaLabel = `Close feedback for message received at ${timestamp}`, onMouseEnter, onMouseLeave, ouiaId, ouiaSafe, isLiveRegion, id, focusOnLoad = true } = _a, props = __rest(_a, ["className", "title", "body", "timestamp", "timeout", "timeoutAnimation", "onTimeout", "onClose", "closeButtonAriaLabel", "onMouseEnter", "onMouseLeave", "ouiaId", "ouiaSafe", "isLiveRegion", "id", "focusOnLoad"]);
25
+ var { className, title = 'Feedback submitted', body = "We've received your response. Thank you for sharing your feedback!", timestamp, timeout = false, timeoutAnimation = 3000, onTimeout, onClose, closeButtonAriaLabel = `Close feedback for message received at ${timestamp}`, onMouseEnter, onMouseLeave, ouiaId, ouiaSafe, isLiveRegion, id, focusOnLoad = true, isCompact } = _a, props = __rest(_a, ["className", "title", "body", "timestamp", "timeout", "timeoutAnimation", "onTimeout", "onClose", "closeButtonAriaLabel", "onMouseEnter", "onMouseLeave", "ouiaId", "ouiaSafe", "isLiveRegion", "id", "focusOnLoad", "isCompact"]);
26
26
  const [timedOut, setTimedOut] = react_1.default.useState(false);
27
27
  const [timedOutAnimation, setTimedOutAnimation] = react_1.default.useState(true);
28
28
  const [isMouseOver, setIsMouseOver] = react_1.default.useState();
@@ -85,8 +85,8 @@ const UserFeedbackComplete = (_a) => {
85
85
  'aria-live': 'polite',
86
86
  'aria-atomic': 'false'
87
87
  }), { id: id, tabIndex: 0, "aria-label": title }, ouiaProps),
88
- react_1.default.createElement(react_core_1.Card, Object.assign({ className: `pf-chatbot__feedback-card ${className ? className : ''}` }, props),
89
- react_1.default.createElement(react_core_1.CardHeader, { actions:
88
+ react_1.default.createElement(react_core_1.Card, Object.assign({ isCompact: isCompact, className: `pf-chatbot__feedback-card pf-chatbot__feedback-card-complete${className ? ` ${className}` : ''}` }, props),
89
+ react_1.default.createElement(react_core_1.CardHeader, { className: onClose ? 'pf-chatbot__feedback-card-complete-header' : 'pf-chatbot__feedback-card-complete-empty-header', actions:
90
90
  /* eslint-disable indent */
91
91
  onClose
92
92
  ? {
@@ -112,6 +112,6 @@ const UserFeedbackComplete = (_a) => {
112
112
  react_1.default.createElement("path", { d: "M27.7803 30.1276C27.6098 30.1276 27.4497 30.0614 27.3298 29.9406L22.9465 25.5562C22.8267 25.4364 22.7595 25.2762 22.7595 25.1068C22.7595 24.9374 22.8256 24.7762 22.9465 24.6554L24.2379 23.364C24.3577 23.2442 24.5178 23.177 24.6883 23.177C24.8587 23.177 25.0168 23.2431 25.1377 23.363L27.7803 26.0056L34.861 18.9259C34.9808 18.8061 35.1409 18.7389 35.3103 18.7389C35.4798 18.7389 35.6389 18.8051 35.7597 18.9239L37.0531 20.2173C37.173 20.3361 37.2401 20.4962 37.2401 20.6677C37.2401 20.8392 37.174 20.9983 37.0531 21.1181L28.2317 29.9406C28.1119 30.0604 27.9518 30.1265 27.7823 30.1265L27.7803 30.1276Z", fill: "white" }))),
113
113
  react_1.default.createElement("div", { className: "pf-chatbot__feedback-complete-text" },
114
114
  react_1.default.createElement(react_core_1.CardTitle, { className: "pf-chatbot__feedback-complete-title" }, title),
115
- react_1.default.createElement(react_core_1.CardBody, { className: `pf-chatbot__feedback-complete-body` }, body))))));
115
+ react_1.default.createElement(react_core_1.CardBody, { className: `pf-chatbot__feedback-complete-card-body` }, body))))));
116
116
  };
117
117
  exports.default = UserFeedbackComplete;
@@ -246,4 +246,8 @@ describe('UserFeedbackComplete', () => {
246
246
  (0, react_2.render)(react_1.default.createElement(UserFeedbackComplete_1.default, { timestamp: "12/12/12", "data-testid": "card", focusOnLoad: false }));
247
247
  expect(react_2.screen.getByTestId('card').parentElement).not.toHaveFocus();
248
248
  });
249
+ it('should handle isCompact', () => {
250
+ (0, react_2.render)(react_1.default.createElement(UserFeedbackComplete_1.default, { timestamp: "12/12/12", "data-testid": "card", isCompact: true }));
251
+ expect(react_2.screen.getByTestId('card')).toHaveClass('pf-m-compact');
252
+ });
249
253
  });
@@ -17,5 +17,6 @@ export interface AttachButtonProps extends ButtonProps {
17
17
  tooltipContent?: string;
18
18
  /** Test id applied to input */
19
19
  inputTestId?: string;
20
+ isCompact?: boolean;
20
21
  }
21
22
  export declare const AttachButton: React.ForwardRefExoticComponent<AttachButtonProps & React.RefAttributes<any>>;
@@ -24,7 +24,7 @@ const react_core_1 = require("@patternfly/react-core");
24
24
  const react_dropzone_1 = require("react-dropzone");
25
25
  const paperclip_icon_1 = require("@patternfly/react-icons/dist/esm/icons/paperclip-icon");
26
26
  const AttachButtonBase = (_a) => {
27
- var { onAttachAccepted, onClick, isDisabled, className, tooltipProps, innerRef, tooltipContent = 'Attach', inputTestId } = _a, props = __rest(_a, ["onAttachAccepted", "onClick", "isDisabled", "className", "tooltipProps", "innerRef", "tooltipContent", "inputTestId"]);
27
+ var { onAttachAccepted, onClick, isDisabled, className, tooltipProps, innerRef, tooltipContent = 'Attach', inputTestId, isCompact } = _a, props = __rest(_a, ["onAttachAccepted", "onClick", "isDisabled", "className", "tooltipProps", "innerRef", "tooltipContent", "inputTestId", "isCompact"]);
28
28
  const { open, getInputProps } = (0, react_dropzone_1.useDropzone)({
29
29
  multiple: true,
30
30
  onDropAccepted: onAttachAccepted
@@ -34,7 +34,7 @@ const AttachButtonBase = (_a) => {
34
34
  react_1.default.createElement(react_core_1.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,
35
35
  // prevents VO announcements of both aria label and tooltip
36
36
  aria: "none" }, tooltipProps),
37
- react_1.default.createElement(react_core_1.Button, Object.assign({ variant: "plain", ref: innerRef, className: `pf-chatbot__button--attach ${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_1.default.createElement(react_core_1.Icon, { iconSize: "xl", isInline: true },
38
- react_1.default.createElement(paperclip_icon_1.PaperclipIcon, null)) }, props)))));
37
+ react_1.default.createElement(react_core_1.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_1.default.createElement(react_core_1.Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true },
38
+ react_1.default.createElement(paperclip_icon_1.PaperclipIcon, null)), size: isCompact ? 'sm' : undefined }, props)))));
39
39
  };
40
40
  exports.AttachButton = react_1.default.forwardRef((props, ref) => (react_1.default.createElement(AttachButtonBase, Object.assign({ innerRef: ref }, props))));
@@ -63,4 +63,8 @@ describe('Attach button', () => {
63
63
  expect(input.files).toHaveLength(1);
64
64
  expect(spy).toHaveBeenCalledTimes(1);
65
65
  }));
66
+ it('should handle isCompact', () => {
67
+ (0, react_2.render)(react_1.default.createElement(AttachButton_1.AttachButton, { isCompact: true, "data-testid": "button" }));
68
+ expect(react_2.screen.getByTestId('button')).toHaveClass('pf-m-compact');
69
+ });
66
70
  });
@@ -28,10 +28,14 @@ export interface MessageBarProps extends TextAreaProps {
28
28
  className?: string;
29
29
  /** Flag to always to show the send button. By default send button is shown when there is a message in the input field */
30
30
  alwayShowSendButton?: boolean;
31
+ /** Placeholder for message input */
32
+ placeholder?: string;
31
33
  /** Flag to disable/enable the Attach button */
32
34
  hasAttachButton?: boolean;
33
35
  /** Flag to enable the Microphone button */
34
36
  hasMicrophoneButton?: boolean;
37
+ /** Placeholder text when listening */
38
+ listeningText?: string;
35
39
  /** Flag to enable the Stop button, used for streaming content */
36
40
  hasStopButton?: boolean;
37
41
  /** Callback function for when stop button is clicked */
@@ -74,6 +78,7 @@ export interface MessageBarProps extends TextAreaProps {
74
78
  onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>, value: string | number) => void;
75
79
  /** Display mode of chatbot, if you want to message bar to resize when the display mode changes */
76
80
  displayMode?: ChatbotDisplayMode;
81
+ isCompact?: boolean;
77
82
  }
78
83
  export declare const MessageBar: React.FunctionComponent<MessageBarProps>;
79
84
  export default MessageBar;
@@ -24,7 +24,7 @@ const AttachButton_1 = require("./AttachButton");
24
24
  const AttachMenu_1 = __importDefault(require("../AttachMenu"));
25
25
  const StopButton_1 = __importDefault(require("./StopButton"));
26
26
  const MessageBar = (_a) => {
27
- var { onSendMessage, className, alwayShowSendButton, hasAttachButton = true, hasMicrophoneButton, handleAttach, attachMenuProps, isSendButtonDisabled, handleStopButton, hasStopButton, buttonProps, onChange, displayMode, value } = _a, props = __rest(_a, ["onSendMessage", "className", "alwayShowSendButton", "hasAttachButton", "hasMicrophoneButton", "handleAttach", "attachMenuProps", "isSendButtonDisabled", "handleStopButton", "hasStopButton", "buttonProps", "onChange", "displayMode", "value"]);
27
+ var { onSendMessage, className, alwayShowSendButton, placeholder = 'Send a message...', hasAttachButton = true, hasMicrophoneButton, listeningText = 'Listening', handleAttach, attachMenuProps, isSendButtonDisabled, handleStopButton, hasStopButton, buttonProps, onChange, displayMode, value, isCompact = false } = _a, props = __rest(_a, ["onSendMessage", "className", "alwayShowSendButton", "placeholder", "hasAttachButton", "hasMicrophoneButton", "listeningText", "handleAttach", "attachMenuProps", "isSendButtonDisabled", "handleStopButton", "hasStopButton", "buttonProps", "onChange", "displayMode", "value", "isCompact"]);
28
28
  // Text Input
29
29
  // --------------------------------------------------------------------------
30
30
  const [message, setMessage] = react_1.default.useState(value !== null && value !== void 0 ? value : '');
@@ -32,11 +32,12 @@ const MessageBar = (_a) => {
32
32
  const [hasSentMessage, setHasSentMessage] = react_1.default.useState(false);
33
33
  const textareaRef = react_1.default.useRef(null);
34
34
  const attachButtonRef = react_1.default.useRef(null);
35
+ const topMargin = '1rem';
35
36
  const setInitialLineHeight = (field) => {
36
37
  field.style.setProperty('line-height', '1rem');
37
38
  const parent = field.parentElement;
38
39
  if (parent) {
39
- parent.style.setProperty('margin-top', `1rem`);
40
+ parent.style.setProperty('margin-top', topMargin);
40
41
  parent.style.setProperty('margin-bottom', `0rem`);
41
42
  parent.style.setProperty('height', 'inherit');
42
43
  const grandparent = parent.parentElement;
@@ -58,8 +59,8 @@ const MessageBar = (_a) => {
58
59
  parseInt(computed.getPropertyValue('border-bottom-width'));
59
60
  parent.style.setProperty('height', `${height}px`);
60
61
  if (height > 32 || window.innerWidth <= 507) {
61
- parent.style.setProperty('margin-bottom', `1rem`);
62
- parent.style.setProperty('margin-top', `1rem`);
62
+ parent.style.setProperty('margin-bottom', topMargin);
63
+ parent.style.setProperty('margin-top', topMargin);
63
64
  }
64
65
  }
65
66
  };
@@ -80,8 +81,8 @@ const MessageBar = (_a) => {
80
81
  const handleNewLine = (field) => {
81
82
  const parent = field.parentElement;
82
83
  if (parent) {
83
- parent.style.setProperty('margin-bottom', `1rem`);
84
- parent.style.setProperty('margin-top', `1rem`);
84
+ parent.style.setProperty('margin-bottom', topMargin);
85
+ parent.style.setProperty('margin-top', topMargin);
85
86
  }
86
87
  };
87
88
  react_1.default.useEffect(() => {
@@ -176,17 +177,17 @@ const MessageBar = (_a) => {
176
177
  const renderButtons = () => {
177
178
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
178
179
  if (hasStopButton && handleStopButton) {
179
- return (react_1.default.createElement(StopButton_1.default, Object.assign({ onClick: handleStopButton, tooltipContent: (_a = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.stop) === null || _a === void 0 ? void 0 : _a.tooltipContent }, (_b = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.stop) === null || _b === void 0 ? void 0 : _b.props)));
180
+ return (react_1.default.createElement(StopButton_1.default, Object.assign({ onClick: handleStopButton, tooltipContent: (_a = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.stop) === null || _a === void 0 ? void 0 : _a.tooltipContent, isCompact: isCompact }, (_b = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.stop) === null || _b === void 0 ? void 0 : _b.props)));
180
181
  }
181
182
  return (react_1.default.createElement(react_1.default.Fragment, null,
182
- attachMenuProps && (react_1.default.createElement(AttachButton_1.AttachButton, Object.assign({ ref: attachButtonRef, onClick: handleAttachMenuToggle, isDisabled: isListeningMessage, tooltipContent: (_c = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _c === void 0 ? void 0 : _c.tooltipContent }, (_d = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _d === void 0 ? void 0 : _d.props))),
183
- !attachMenuProps && hasAttachButton && (react_1.default.createElement(AttachButton_1.AttachButton, Object.assign({ onAttachAccepted: handleAttach, isDisabled: isListeningMessage, tooltipContent: (_e = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _e === void 0 ? void 0 : _e.tooltipContent, inputTestId: (_f = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _f === void 0 ? void 0 : _f.inputTestId }, (_g = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _g === void 0 ? void 0 : _g.props))),
184
- hasMicrophoneButton && (react_1.default.createElement(MicrophoneButton_1.default, Object.assign({ isListening: isListeningMessage, onIsListeningChange: setIsListeningMessage, onSpeechRecognition: handleSpeechRecognition, tooltipContent: (_h = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.microphone) === null || _h === void 0 ? void 0 : _h.tooltipContent, language: (_j = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.microphone) === null || _j === void 0 ? void 0 : _j.language }, (_k = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.microphone) === null || _k === void 0 ? void 0 : _k.props))),
185
- (alwayShowSendButton || message) && (react_1.default.createElement(SendButton_1.default, Object.assign({ value: message, onClick: () => handleSend(message), isDisabled: isSendButtonDisabled, tooltipContent: (_l = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.send) === null || _l === void 0 ? void 0 : _l.tooltipContent }, (_m = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.send) === null || _m === void 0 ? void 0 : _m.props)))));
183
+ attachMenuProps && (react_1.default.createElement(AttachButton_1.AttachButton, Object.assign({ ref: attachButtonRef, onClick: handleAttachMenuToggle, isDisabled: isListeningMessage, tooltipContent: (_c = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _c === void 0 ? void 0 : _c.tooltipContent, isCompact: isCompact }, (_d = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _d === void 0 ? void 0 : _d.props))),
184
+ !attachMenuProps && hasAttachButton && (react_1.default.createElement(AttachButton_1.AttachButton, Object.assign({ onAttachAccepted: handleAttach, isDisabled: isListeningMessage, tooltipContent: (_e = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _e === void 0 ? void 0 : _e.tooltipContent, inputTestId: (_f = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _f === void 0 ? void 0 : _f.inputTestId, isCompact: isCompact }, (_g = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.attach) === null || _g === void 0 ? void 0 : _g.props))),
185
+ hasMicrophoneButton && (react_1.default.createElement(MicrophoneButton_1.default, Object.assign({ isListening: isListeningMessage, onIsListeningChange: setIsListeningMessage, onSpeechRecognition: handleSpeechRecognition, tooltipContent: (_h = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.microphone) === null || _h === void 0 ? void 0 : _h.tooltipContent, language: (_j = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.microphone) === null || _j === void 0 ? void 0 : _j.language, isCompact: isCompact }, (_k = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.microphone) === null || _k === void 0 ? void 0 : _k.props))),
186
+ (alwayShowSendButton || message) && (react_1.default.createElement(SendButton_1.default, Object.assign({ value: message, onClick: () => handleSend(message), isDisabled: isSendButtonDisabled, tooltipContent: (_l = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.send) === null || _l === void 0 ? void 0 : _l.tooltipContent, isCompact: isCompact }, (_m = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.send) === null || _m === void 0 ? void 0 : _m.props)))));
186
187
  };
187
188
  const messageBarContents = (react_1.default.createElement(react_1.default.Fragment, null,
188
- react_1.default.createElement("div", { className: "pf-chatbot__message-bar-input" },
189
- react_1.default.createElement(react_core_1.TextArea, Object.assign({ className: "pf-chatbot__message-textarea", value: message, onChange: handleChange, "aria-label": isListeningMessage ? 'Listening' : 'Send a message...', placeholder: isListeningMessage ? 'Listening' : 'Send a message...', ref: textareaRef, onKeyDown: handleKeyDown }, props))),
189
+ react_1.default.createElement("div", { className: `pf-chatbot__message-bar-input ${isCompact ? 'pf-m-compact' : ''}` },
190
+ react_1.default.createElement(react_core_1.TextArea, Object.assign({ className: "pf-chatbot__message-textarea", value: message, onChange: handleChange, "aria-label": isListeningMessage ? listeningText : placeholder, placeholder: isListeningMessage ? listeningText : placeholder, ref: textareaRef, onKeyDown: handleKeyDown }, props))),
190
191
  react_1.default.createElement("div", { className: "pf-chatbot__message-bar-actions" }, renderButtons())));
191
192
  if (attachMenuProps) {
192
193
  return (react_1.default.createElement(AttachMenu_1.default, Object.assign({ toggle: (toggleRef) => (react_1.default.createElement("div", { ref: toggleRef, className: `pf-chatbot__message-bar ${className !== null && className !== void 0 ? className : ''}` }, messageBarContents)), filteredItems: attachMenuProps === null || attachMenuProps === void 0 ? void 0 : attachMenuProps.attachMenuItems }, (attachMenuProps && { isOpen: attachMenuProps.isAttachMenuOpen }), { onOpenChange: (isAttachMenuOpen) => {
@@ -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* () {
@@ -229,6 +235,13 @@ describe('Message bar', () => {
229
235
  yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Microphone button' }));
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: 'Microphone button' }));
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' } } } }));
@@ -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'] || 'Microphone button', onClick: isListening ? stopListening : startListening, icon: react_1.default.createElement(react_core_1.Icon, { iconSize: "xl", isInline: true },
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'] || 'Microphone button', 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 button', onClick: onClick, icon: react_1.default.createElement(react_core_1.Icon, { iconSize: "xl", isInline: true },
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 button', 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;
@@ -51,4 +51,8 @@ describe('Send button', () => {
51
51
  yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Send button' }));
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 button', onClick: onClick, icon: react_1.default.createElement(react_core_1.Icon, { iconSize: "xl", isInline: true },
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 button', 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;
@@ -51,4 +51,8 @@ describe('Stop button', () => {
51
51
  yield user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Stop button' }));
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,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;