@patternfly/chatbot 6.3.0-prerelease.9 → 6.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/dist/cjs/AttachMenu/AttachMenu.d.ts +2 -2
  2. package/dist/cjs/AttachMenu/AttachMenu.js +2 -12
  3. package/dist/cjs/AttachmentEdit/AttachmentEdit.d.ts +12 -2
  4. package/dist/cjs/AttachmentEdit/AttachmentEdit.js +3 -6
  5. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -1
  6. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +33 -8
  7. package/dist/cjs/Chatbot/Chatbot.d.ts +1 -2
  8. package/dist/cjs/Chatbot/Chatbot.js +4 -9
  9. package/dist/cjs/Chatbot/Chatbot.test.js +11 -11
  10. package/dist/cjs/ChatbotAlert/ChatbotAlert.d.ts +2 -2
  11. package/dist/cjs/ChatbotAlert/ChatbotAlert.js +4 -8
  12. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +10 -10
  13. package/dist/cjs/ChatbotContent/ChatbotContent.d.ts +3 -3
  14. package/dist/cjs/ChatbotContent/ChatbotContent.js +2 -8
  15. package/dist/cjs/ChatbotContent/ChatbotContent.test.js +5 -5
  16. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -2
  17. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +7 -11
  18. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +31 -33
  19. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -2
  20. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +16 -33
  21. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +56 -64
  22. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.d.ts +2 -2
  23. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.js +2 -9
  24. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.d.ts +2 -2
  25. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.js +2 -25
  26. package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +3 -3
  27. package/dist/cjs/ChatbotFooter/ChatbotFooter.js +2 -15
  28. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +7 -7
  29. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +28 -28
  30. package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
  31. package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +10 -23
  32. package/dist/cjs/ChatbotHeader/ChatbotHeader.d.ts +3 -3
  33. package/dist/cjs/ChatbotHeader/ChatbotHeader.js +2 -7
  34. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +5 -5
  35. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
  36. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.js +2 -5
  37. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +5 -5
  38. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +1 -2
  39. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +5 -10
  40. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +7 -10
  41. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
  42. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +2 -5
  43. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +5 -5
  44. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -2
  45. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +5 -7
  46. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +7 -10
  47. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +6 -3
  48. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
  49. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +19 -21
  50. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +8 -3
  51. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -12
  52. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +17 -19
  53. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
  54. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +2 -5
  55. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +23 -23
  56. package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +2 -2
  57. package/dist/cjs/ChatbotModal/ChatbotModal.js +3 -9
  58. package/dist/cjs/ChatbotModal/ChatbotModal.test.js +4 -16
  59. package/dist/cjs/ChatbotPopover/ChatbotPopover.d.ts +2 -2
  60. package/dist/cjs/ChatbotPopover/ChatbotPopover.js +2 -8
  61. package/dist/cjs/ChatbotToggle/ChatbotToggle.d.ts +1 -2
  62. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +8 -13
  63. package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +25 -25
  64. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +2 -2
  65. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +6 -20
  66. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +16 -16
  67. package/dist/cjs/CodeModal/CodeModal.d.ts +8 -2
  68. package/dist/cjs/CodeModal/CodeModal.js +8 -20
  69. package/dist/cjs/CodeModal/CodeModal.test.js +23 -4
  70. package/dist/cjs/Compare/Compare.d.ts +2 -2
  71. package/dist/cjs/Compare/Compare.js +7 -16
  72. package/dist/cjs/Compare/Compare.test.js +7 -9
  73. package/dist/cjs/FileDetails/FileDetails.d.ts +2 -2
  74. package/dist/cjs/FileDetails/FileDetails.js +2 -15
  75. package/dist/cjs/FileDetails/FileDetails.test.js +10 -10
  76. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
  77. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.js +2 -5
  78. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +21 -21
  79. package/dist/cjs/FileDropZone/FileDropZone.d.ts +23 -2
  80. package/dist/cjs/FileDropZone/FileDropZone.js +11 -9
  81. package/dist/cjs/FileDropZone/FileDropZone.test.js +86 -5
  82. package/dist/cjs/LoadingMessage/LoadingMessage.d.ts +2 -2
  83. package/dist/cjs/LoadingMessage/LoadingMessage.js +2 -10
  84. package/dist/cjs/LoadingMessage/LoadingMessage.test.js +6 -6
  85. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
  86. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +30 -21
  87. package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
  88. package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +5 -8
  89. package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +1 -2
  90. package/dist/cjs/Message/ImageMessage/ImageMessage.js +2 -8
  91. package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +1 -2
  92. package/dist/cjs/Message/LinkMessage/LinkMessage.js +6 -9
  93. package/dist/cjs/Message/ListMessage/ListItemMessage.d.ts +1 -2
  94. package/dist/cjs/Message/ListMessage/ListItemMessage.js +2 -8
  95. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +1 -2
  96. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -9
  97. package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
  98. package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +2 -9
  99. package/dist/cjs/Message/Message.d.ts +24 -8
  100. package/dist/cjs/Message/Message.js +49 -71
  101. package/dist/cjs/Message/Message.test.js +112 -82
  102. package/dist/cjs/Message/MessageInput.d.ts +2 -2
  103. package/dist/cjs/Message/MessageInput.js +5 -14
  104. package/dist/cjs/Message/MessageLoading.d.ts +1 -2
  105. package/dist/cjs/Message/MessageLoading.js +3 -8
  106. package/dist/cjs/Message/Plugins/index.d.ts +1 -0
  107. package/dist/cjs/Message/Plugins/index.js +5 -0
  108. package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
  109. package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.js +24 -0
  110. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  111. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +47 -0
  112. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +2 -2
  113. package/dist/cjs/Message/QuickResponse/QuickResponse.js +7 -9
  114. package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +2 -2
  115. package/dist/cjs/Message/QuickStarts/FallbackImg.js +5 -27
  116. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +2 -2
  117. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +7 -43
  118. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
  119. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +9 -38
  120. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +16 -16
  121. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
  122. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +2 -26
  123. package/dist/cjs/Message/QuickStarts/types.d.ts +4 -3
  124. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +1 -2
  125. package/dist/cjs/Message/TableMessage/TableMessage.js +8 -10
  126. package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +2 -3
  127. package/dist/cjs/Message/TableMessage/TbodyMessage.js +7 -9
  128. package/dist/cjs/Message/TableMessage/TdMessage.d.ts +1 -2
  129. package/dist/cjs/Message/TableMessage/TdMessage.js +2 -8
  130. package/dist/cjs/Message/TableMessage/ThMessage.d.ts +1 -2
  131. package/dist/cjs/Message/TableMessage/ThMessage.js +2 -8
  132. package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +1 -2
  133. package/dist/cjs/Message/TableMessage/TheadMessage.js +2 -8
  134. package/dist/cjs/Message/TableMessage/TrMessage.d.ts +2 -3
  135. package/dist/cjs/Message/TableMessage/TrMessage.js +8 -10
  136. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +1 -2
  137. package/dist/cjs/Message/TextMessage/TextMessage.js +2 -9
  138. package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +2 -2
  139. package/dist/cjs/Message/UserFeedback/CloseButton.js +2 -8
  140. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +2 -2
  141. package/dist/cjs/Message/UserFeedback/UserFeedback.js +12 -23
  142. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +53 -53
  143. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
  144. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +20 -44
  145. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +81 -91
  146. package/dist/cjs/Message/index.d.ts +1 -0
  147. package/dist/cjs/Message/index.js +3 -1
  148. package/dist/cjs/MessageBar/AttachButton.d.ts +25 -2
  149. package/dist/cjs/MessageBar/AttachButton.js +10 -20
  150. package/dist/cjs/MessageBar/AttachButton.test.js +102 -24
  151. package/dist/cjs/MessageBar/MessageBar.d.ts +31 -3
  152. package/dist/cjs/MessageBar/MessageBar.js +30 -32
  153. package/dist/cjs/MessageBar/MessageBar.test.js +122 -108
  154. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +2 -2
  155. package/dist/cjs/MessageBar/MicrophoneButton.js +7 -14
  156. package/dist/cjs/MessageBar/SendButton.d.ts +3 -2
  157. package/dist/cjs/MessageBar/SendButton.js +3 -11
  158. package/dist/cjs/MessageBar/SendButton.test.js +15 -15
  159. package/dist/cjs/MessageBar/StopButton.d.ts +3 -2
  160. package/dist/cjs/MessageBar/StopButton.js +3 -12
  161. package/dist/cjs/MessageBar/StopButton.test.js +15 -15
  162. package/dist/cjs/MessageBox/JumpButton.d.ts +2 -2
  163. package/dist/cjs/MessageBox/JumpButton.js +2 -10
  164. package/dist/cjs/MessageBox/JumpButton.test.js +10 -10
  165. package/dist/cjs/MessageBox/MessageBox.d.ts +21 -5
  166. package/dist/cjs/MessageBox/MessageBox.js +170 -45
  167. package/dist/cjs/MessageBox/MessageBox.test.js +219 -6
  168. package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +12 -2
  169. package/dist/cjs/PreviewAttachment/PreviewAttachment.js +3 -6
  170. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
  171. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +34 -12
  172. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +5 -5
  173. package/dist/cjs/ResponseActions/ResponseActionButton.js +5 -8
  174. package/dist/cjs/ResponseActions/ResponseActionButton.test.js +19 -19
  175. package/dist/cjs/ResponseActions/ResponseActions.d.ts +7 -3
  176. package/dist/cjs/ResponseActions/ResponseActions.js +39 -18
  177. package/dist/cjs/ResponseActions/ResponseActions.test.js +120 -41
  178. package/dist/cjs/Settings/SettingsForm.d.ts +2 -2
  179. package/dist/cjs/Settings/SettingsForm.js +2 -8
  180. package/dist/cjs/Settings/SettingsForm.test.js +9 -12
  181. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
  182. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -11
  183. package/dist/cjs/SourcesCard/SourcesCard.d.ts +12 -3
  184. package/dist/cjs/SourcesCard/SourcesCard.js +17 -42
  185. package/dist/cjs/SourcesCard/SourcesCard.test.js +70 -60
  186. package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +3 -3
  187. package/dist/cjs/TermsOfUse/TermsOfUse.js +4 -16
  188. package/dist/cjs/TermsOfUse/TermsOfUse.test.js +31 -33
  189. package/dist/css/main.css +15 -7
  190. package/dist/css/main.css.map +1 -1
  191. package/dist/esm/AttachMenu/AttachMenu.d.ts +2 -2
  192. package/dist/esm/AttachMenu/AttachMenu.js +2 -9
  193. package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +12 -2
  194. package/dist/esm/AttachmentEdit/AttachmentEdit.js +3 -6
  195. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -1
  196. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +30 -5
  197. package/dist/esm/Chatbot/Chatbot.d.ts +1 -2
  198. package/dist/esm/Chatbot/Chatbot.js +4 -6
  199. package/dist/esm/Chatbot/Chatbot.test.js +6 -6
  200. package/dist/esm/ChatbotAlert/ChatbotAlert.d.ts +2 -2
  201. package/dist/esm/ChatbotAlert/ChatbotAlert.js +4 -5
  202. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +4 -4
  203. package/dist/esm/ChatbotContent/ChatbotContent.d.ts +3 -3
  204. package/dist/esm/ChatbotContent/ChatbotContent.js +2 -5
  205. package/dist/esm/ChatbotContent/ChatbotContent.test.js +3 -3
  206. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -2
  207. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +7 -11
  208. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +8 -10
  209. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -2
  210. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +16 -33
  211. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +26 -34
  212. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +2 -2
  213. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +2 -6
  214. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +2 -2
  215. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +2 -22
  216. package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +3 -3
  217. package/dist/esm/ChatbotFooter/ChatbotFooter.js +2 -12
  218. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +4 -4
  219. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +5 -5
  220. package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
  221. package/dist/esm/ChatbotFooter/ChatbotFootnote.js +10 -23
  222. package/dist/esm/ChatbotHeader/ChatbotHeader.d.ts +3 -3
  223. package/dist/esm/ChatbotHeader/ChatbotHeader.js +2 -4
  224. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +3 -3
  225. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
  226. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.js +2 -2
  227. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +3 -3
  228. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +1 -2
  229. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +5 -7
  230. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +4 -4
  231. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
  232. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +2 -2
  233. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +3 -3
  234. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -2
  235. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +5 -7
  236. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +4 -4
  237. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +6 -3
  238. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
  239. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +9 -8
  240. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +8 -3
  241. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -9
  242. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +9 -8
  243. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
  244. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +2 -2
  245. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +12 -12
  246. package/dist/esm/ChatbotModal/ChatbotModal.d.ts +2 -2
  247. package/dist/esm/ChatbotModal/ChatbotModal.js +3 -6
  248. package/dist/esm/ChatbotModal/ChatbotModal.test.js +2 -14
  249. package/dist/esm/ChatbotPopover/ChatbotPopover.d.ts +2 -2
  250. package/dist/esm/ChatbotPopover/ChatbotPopover.js +2 -5
  251. package/dist/esm/ChatbotToggle/ChatbotToggle.d.ts +1 -2
  252. package/dist/esm/ChatbotToggle/ChatbotToggle.js +8 -13
  253. package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +8 -8
  254. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +2 -2
  255. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +6 -17
  256. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +8 -8
  257. package/dist/esm/CodeModal/CodeModal.d.ts +8 -2
  258. package/dist/esm/CodeModal/CodeModal.js +8 -20
  259. package/dist/esm/CodeModal/CodeModal.test.js +22 -3
  260. package/dist/esm/Compare/Compare.d.ts +2 -2
  261. package/dist/esm/Compare/Compare.js +7 -13
  262. package/dist/esm/Compare/Compare.test.js +4 -6
  263. package/dist/esm/FileDetails/FileDetails.d.ts +2 -2
  264. package/dist/esm/FileDetails/FileDetails.js +2 -15
  265. package/dist/esm/FileDetails/FileDetails.test.js +4 -4
  266. package/dist/esm/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
  267. package/dist/esm/FileDetailsLabel/FileDetailsLabel.js +2 -5
  268. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +9 -9
  269. package/dist/esm/FileDropZone/FileDropZone.d.ts +23 -2
  270. package/dist/esm/FileDropZone/FileDropZone.js +11 -6
  271. package/dist/esm/FileDropZone/FileDropZone.test.js +84 -3
  272. package/dist/esm/LoadingMessage/LoadingMessage.d.ts +2 -2
  273. package/dist/esm/LoadingMessage/LoadingMessage.js +2 -10
  274. package/dist/esm/LoadingMessage/LoadingMessage.test.js +3 -3
  275. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
  276. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +31 -19
  277. package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
  278. package/dist/esm/Message/ErrorMessage/ErrorMessage.js +5 -5
  279. package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +1 -2
  280. package/dist/esm/Message/ImageMessage/ImageMessage.js +2 -5
  281. package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +1 -2
  282. package/dist/esm/Message/LinkMessage/LinkMessage.js +6 -6
  283. package/dist/esm/Message/ListMessage/ListItemMessage.d.ts +1 -2
  284. package/dist/esm/Message/ListMessage/ListItemMessage.js +2 -5
  285. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +1 -2
  286. package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -6
  287. package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
  288. package/dist/esm/Message/ListMessage/UnorderedListMessage.js +2 -6
  289. package/dist/esm/Message/Message.d.ts +24 -8
  290. package/dist/esm/Message/Message.js +49 -71
  291. package/dist/esm/Message/Message.test.js +112 -82
  292. package/dist/esm/Message/MessageInput.d.ts +2 -2
  293. package/dist/esm/Message/MessageInput.js +5 -11
  294. package/dist/esm/Message/MessageLoading.d.ts +1 -2
  295. package/dist/esm/Message/MessageLoading.js +2 -4
  296. package/dist/esm/Message/Plugins/index.d.ts +1 -0
  297. package/dist/esm/Message/Plugins/index.js +1 -0
  298. package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
  299. package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.js +20 -0
  300. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  301. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +43 -0
  302. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +2 -2
  303. package/dist/esm/Message/QuickResponse/QuickResponse.js +7 -6
  304. package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +2 -2
  305. package/dist/esm/Message/QuickStarts/FallbackImg.js +5 -4
  306. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +2 -2
  307. package/dist/esm/Message/QuickStarts/QuickStartTile.js +7 -20
  308. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
  309. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +9 -15
  310. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +5 -5
  311. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
  312. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +2 -3
  313. package/dist/esm/Message/QuickStarts/types.d.ts +4 -3
  314. package/dist/esm/Message/TableMessage/TableMessage.d.ts +1 -2
  315. package/dist/esm/Message/TableMessage/TableMessage.js +8 -7
  316. package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +2 -3
  317. package/dist/esm/Message/TableMessage/TbodyMessage.js +7 -6
  318. package/dist/esm/Message/TableMessage/TdMessage.d.ts +1 -2
  319. package/dist/esm/Message/TableMessage/TdMessage.js +2 -5
  320. package/dist/esm/Message/TableMessage/ThMessage.d.ts +1 -2
  321. package/dist/esm/Message/TableMessage/ThMessage.js +2 -5
  322. package/dist/esm/Message/TableMessage/TheadMessage.d.ts +1 -2
  323. package/dist/esm/Message/TableMessage/TheadMessage.js +2 -5
  324. package/dist/esm/Message/TableMessage/TrMessage.d.ts +2 -3
  325. package/dist/esm/Message/TableMessage/TrMessage.js +8 -7
  326. package/dist/esm/Message/TextMessage/TextMessage.d.ts +1 -2
  327. package/dist/esm/Message/TextMessage/TextMessage.js +2 -6
  328. package/dist/esm/Message/UserFeedback/CloseButton.d.ts +2 -2
  329. package/dist/esm/Message/UserFeedback/CloseButton.js +2 -5
  330. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +2 -2
  331. package/dist/esm/Message/UserFeedback/UserFeedback.js +12 -23
  332. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +21 -21
  333. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
  334. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +20 -44
  335. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +26 -36
  336. package/dist/esm/Message/index.d.ts +1 -0
  337. package/dist/esm/Message/index.js +1 -0
  338. package/dist/esm/MessageBar/AttachButton.d.ts +25 -2
  339. package/dist/esm/MessageBar/AttachButton.js +10 -17
  340. package/dist/esm/MessageBar/AttachButton.test.js +95 -17
  341. package/dist/esm/MessageBar/MessageBar.d.ts +31 -3
  342. package/dist/esm/MessageBar/MessageBar.js +28 -30
  343. package/dist/esm/MessageBar/MessageBar.test.js +87 -73
  344. package/dist/esm/MessageBar/MicrophoneButton.d.ts +2 -2
  345. package/dist/esm/MessageBar/MicrophoneButton.js +7 -11
  346. package/dist/esm/MessageBar/SendButton.d.ts +3 -2
  347. package/dist/esm/MessageBar/SendButton.js +3 -8
  348. package/dist/esm/MessageBar/SendButton.test.js +9 -9
  349. package/dist/esm/MessageBar/StopButton.d.ts +3 -2
  350. package/dist/esm/MessageBar/StopButton.js +3 -9
  351. package/dist/esm/MessageBar/StopButton.test.js +9 -9
  352. package/dist/esm/MessageBox/JumpButton.d.ts +2 -2
  353. package/dist/esm/MessageBox/JumpButton.js +2 -7
  354. package/dist/esm/MessageBox/JumpButton.test.js +9 -9
  355. package/dist/esm/MessageBox/MessageBox.d.ts +21 -5
  356. package/dist/esm/MessageBox/MessageBox.js +170 -45
  357. package/dist/esm/MessageBox/MessageBox.test.js +220 -7
  358. package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +12 -2
  359. package/dist/esm/PreviewAttachment/PreviewAttachment.js +3 -6
  360. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
  361. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +30 -5
  362. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +5 -5
  363. package/dist/esm/ResponseActions/ResponseActionButton.js +5 -5
  364. package/dist/esm/ResponseActions/ResponseActionButton.test.js +7 -7
  365. package/dist/esm/ResponseActions/ResponseActions.d.ts +7 -3
  366. package/dist/esm/ResponseActions/ResponseActions.js +40 -19
  367. package/dist/esm/ResponseActions/ResponseActions.test.js +95 -16
  368. package/dist/esm/Settings/SettingsForm.d.ts +2 -2
  369. package/dist/esm/Settings/SettingsForm.js +2 -5
  370. package/dist/esm/Settings/SettingsForm.test.js +6 -6
  371. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
  372. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -8
  373. package/dist/esm/SourcesCard/SourcesCard.d.ts +12 -3
  374. package/dist/esm/SourcesCard/SourcesCard.js +17 -39
  375. package/dist/esm/SourcesCard/SourcesCard.test.js +29 -19
  376. package/dist/esm/TermsOfUse/TermsOfUse.d.ts +3 -3
  377. package/dist/esm/TermsOfUse/TermsOfUse.js +4 -16
  378. package/dist/esm/TermsOfUse/TermsOfUse.test.js +10 -12
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/package.json +5 -7
  381. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +10 -0
  382. package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +51 -0
  383. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachMenu.tsx +9 -9
  384. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +5 -5
  385. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
  386. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +24 -20
  387. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetails.tsx +2 -2
  388. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +9 -9
  389. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +4 -4
  390. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +7 -7
  391. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithClickedResponseActions.tsx +25 -0
  392. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +3 -12
  393. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +4 -4
  394. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +3 -3
  395. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +2 -2
  396. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +2 -2
  397. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +3 -3
  398. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +3 -3
  399. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +19 -0
  400. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +5 -5
  401. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +25 -14
  402. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +4 -4
  403. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotContainer.tsx +59 -36
  404. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +2 -2
  405. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +2 -2
  406. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +10 -13
  407. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +10 -10
  408. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +5 -5
  409. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +5 -5
  410. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +6 -6
  411. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSelection.tsx +7 -7
  412. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderTitle.tsx +59 -34
  413. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBar.tsx +2 -2
  414. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +9 -9
  415. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarDisabled.tsx +3 -3
  416. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarLanguage.tsx +2 -2
  417. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarStop.tsx +2 -2
  418. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotModal.tsx +74 -37
  419. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotToggleBasic.tsx +3 -3
  420. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +8 -8
  421. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +3 -3
  422. package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactSettings.tsx +16 -23
  423. package/patternfly-docs/content/extensions/chatbot/examples/UI/CustomClosedIcon.tsx +3 -3
  424. package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +16 -23
  425. package/patternfly-docs/content/extensions/chatbot/examples/UI/SkipToContent.tsx +5 -5
  426. package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +3 -3
  427. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUse.tsx +91 -48
  428. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUseCompact.tsx +82 -39
  429. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +3 -0
  430. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +37 -0
  431. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +1 -0
  432. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +19 -25
  433. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +42 -15
  434. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +15 -14
  435. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotCompact.tsx +19 -25
  436. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +17 -22
  437. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotScrolling.tsx +536 -0
  438. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +17 -22
  439. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +13 -13
  440. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +7 -7
  441. package/patternfly-docs/content/extensions/chatbot/img/quick-response-confirmation.svg +67 -0
  442. package/src/AttachMenu/AttachMenu.tsx +2 -2
  443. package/src/AttachmentEdit/AttachmentEdit.test.tsx +46 -2
  444. package/src/AttachmentEdit/AttachmentEdit.tsx +25 -7
  445. package/src/Chatbot/Chatbot.test.tsx +0 -1
  446. package/src/Chatbot/Chatbot.tsx +5 -3
  447. package/src/ChatbotAlert/ChatbotAlert.test.tsx +0 -1
  448. package/src/ChatbotAlert/ChatbotAlert.tsx +2 -2
  449. package/src/ChatbotContent/ChatbotContent.test.tsx +0 -1
  450. package/src/ChatbotContent/ChatbotContent.tsx +3 -3
  451. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.tsx +0 -1
  452. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +6 -4
  453. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +3 -3
  454. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +8 -6
  455. package/src/ChatbotConversationHistoryNav/EmptyState.tsx +2 -2
  456. package/src/ChatbotConversationHistoryNav/LoadingState.tsx +2 -2
  457. package/src/ChatbotFooter/ChatbotFooter.test.tsx +0 -1
  458. package/src/ChatbotFooter/ChatbotFooter.tsx +3 -3
  459. package/src/ChatbotFooter/ChatbotFooternote.test.tsx +0 -1
  460. package/src/ChatbotFooter/ChatbotFootnote.tsx +6 -4
  461. package/src/ChatbotHeader/ChatbotHeader.test.tsx +0 -1
  462. package/src/ChatbotHeader/ChatbotHeader.tsx +3 -6
  463. package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +0 -1
  464. package/src/ChatbotHeader/ChatbotHeaderActions.tsx +2 -2
  465. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +0 -1
  466. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +5 -4
  467. package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +0 -1
  468. package/src/ChatbotHeader/ChatbotHeaderMain.tsx +2 -2
  469. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +0 -1
  470. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +7 -7
  471. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +9 -1
  472. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +12 -5
  473. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +9 -1
  474. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +26 -6
  475. package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +0 -1
  476. package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +2 -2
  477. package/src/ChatbotModal/ChatbotModal.test.tsx +0 -1
  478. package/src/ChatbotModal/ChatbotModal.tsx +2 -2
  479. package/src/ChatbotPopover/ChatbotPopover.tsx +3 -3
  480. package/src/ChatbotToggle/ChatbotToggle.test.tsx +0 -1
  481. package/src/ChatbotToggle/ChatbotToggle.tsx +5 -3
  482. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +0 -1
  483. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +2 -2
  484. package/src/CodeModal/CodeModal.test.tsx +29 -2
  485. package/src/CodeModal/CodeModal.tsx +18 -8
  486. package/src/Compare/Compare.test.tsx +0 -1
  487. package/src/Compare/Compare.tsx +7 -6
  488. package/src/FileDetails/FileDetails.test.tsx +0 -1
  489. package/src/FileDetails/FileDetails.tsx +1 -1
  490. package/src/FileDetailsLabel/FileDetailsLabel.test.tsx +0 -1
  491. package/src/FileDetailsLabel/FileDetailsLabel.tsx +1 -1
  492. package/src/FileDropZone/FileDropZone.test.tsx +112 -1
  493. package/src/FileDropZone/FileDropZone.tsx +44 -4
  494. package/src/LoadingMessage/LoadingMessage.test.tsx +0 -1
  495. package/src/LoadingMessage/LoadingMessage.tsx +2 -2
  496. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +7 -0
  497. package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +104 -20
  498. package/src/Message/ErrorMessage/ErrorMessage.tsx +0 -1
  499. package/src/Message/ImageMessage/ImageMessage.tsx +1 -2
  500. package/src/Message/LinkMessage/LinkMessage.tsx +0 -1
  501. package/src/Message/ListMessage/ListItemMessage.tsx +0 -1
  502. package/src/Message/ListMessage/OrderedListMessage.tsx +0 -1
  503. package/src/Message/ListMessage/UnorderedListMessage.tsx +0 -1
  504. package/src/Message/Message.test.tsx +49 -6
  505. package/src/Message/Message.tsx +31 -14
  506. package/src/Message/MessageInput.tsx +5 -5
  507. package/src/Message/MessageLoading.tsx +0 -2
  508. package/src/Message/Plugins/index.ts +1 -0
  509. package/src/Message/Plugins/rehypeCodeBlockToggle.ts +24 -0
  510. package/src/Message/Plugins/rehypeMoveImagesOutOfParagraphs.ts +53 -0
  511. package/src/Message/QuickResponse/QuickResponse.tsx +4 -3
  512. package/src/Message/QuickStarts/FallbackImg.tsx +4 -3
  513. package/src/Message/QuickStarts/QuickStartTile.tsx +3 -3
  514. package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +0 -1
  515. package/src/Message/QuickStarts/QuickStartTileDescription.tsx +4 -3
  516. package/src/Message/QuickStarts/QuickStartTileHeader.tsx +2 -2
  517. package/src/Message/QuickStarts/types.ts +4 -3
  518. package/src/Message/TableMessage/TableMessage.tsx +4 -4
  519. package/src/Message/TableMessage/TbodyMessage.tsx +3 -3
  520. package/src/Message/TableMessage/TdMessage.tsx +1 -2
  521. package/src/Message/TableMessage/ThMessage.tsx +1 -2
  522. package/src/Message/TableMessage/TheadMessage.tsx +3 -2
  523. package/src/Message/TableMessage/TrMessage.tsx +4 -4
  524. package/src/Message/TextMessage/TextMessage.scss +2 -5
  525. package/src/Message/TextMessage/TextMessage.tsx +1 -2
  526. package/src/Message/UserFeedback/CloseButton.tsx +2 -2
  527. package/src/Message/UserFeedback/UserFeedback.test.tsx +0 -1
  528. package/src/Message/UserFeedback/UserFeedback.tsx +8 -6
  529. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +0 -1
  530. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +16 -14
  531. package/src/Message/index.ts +1 -0
  532. package/src/MessageBar/AttachButton.test.tsx +127 -8
  533. package/src/MessageBar/AttachButton.tsx +49 -6
  534. package/src/MessageBar/MessageBar.test.tsx +81 -30
  535. package/src/MessageBar/MessageBar.tsx +85 -19
  536. package/src/MessageBar/MicrophoneButton.tsx +10 -7
  537. package/src/MessageBar/SendButton.test.tsx +5 -6
  538. package/src/MessageBar/SendButton.tsx +4 -3
  539. package/src/MessageBar/StopButton.test.tsx +5 -6
  540. package/src/MessageBar/StopButton.tsx +4 -3
  541. package/src/MessageBox/JumpButton.test.tsx +4 -5
  542. package/src/MessageBox/JumpButton.tsx +3 -3
  543. package/src/MessageBox/MessageBox.test.tsx +295 -5
  544. package/src/MessageBox/MessageBox.tsx +301 -84
  545. package/src/PreviewAttachment/PreviewAttachment.test.tsx +44 -2
  546. package/src/PreviewAttachment/PreviewAttachment.tsx +24 -6
  547. package/src/ResponseActions/ResponseActionButton.test.tsx +0 -1
  548. package/src/ResponseActions/ResponseActionButton.tsx +6 -5
  549. package/src/ResponseActions/ResponseActions.test.tsx +121 -4
  550. package/src/ResponseActions/ResponseActions.tsx +71 -12
  551. package/src/Settings/SettingsForm.test.tsx +0 -1
  552. package/src/Settings/SettingsForm.tsx +2 -7
  553. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx +2 -2
  554. package/src/SourcesCard/SourcesCard.test.tsx +14 -1
  555. package/src/SourcesCard/SourcesCard.tsx +19 -7
  556. package/src/TermsOfUse/TermsOfUse.test.tsx +0 -1
  557. package/src/TermsOfUse/TermsOfUse.tsx +6 -5
  558. package/tsconfig.cjs.json +0 -1
  559. package/tsconfig.json +3 -3
@@ -7,36 +7,36 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import React from 'react';
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { act, render, screen } from '@testing-library/react';
12
12
  import '@testing-library/jest-dom';
13
13
  import userEvent from '@testing-library/user-event';
14
14
  import UserFeedbackComplete from './UserFeedbackComplete';
15
15
  describe('UserFeedbackComplete', () => {
16
16
  it('should render correctly', () => {
17
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12" }));
17
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12" }));
18
18
  expect(screen.getByText('Feedback submitted')).toBeTruthy();
19
19
  screen.getByText(/We've received your response. Thank you for sharing your feedback!/i);
20
20
  expect(screen.queryByRole('button', { name: /Close/i })).toBeFalsy();
21
21
  });
22
22
  it('should render different title correctly', () => {
23
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", title: "Thanks!" }));
23
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", title: "Thanks!" }));
24
24
  expect(screen.getByText('Thanks!')).toBeTruthy();
25
25
  screen.getByText(/We've received your response. Thank you for sharing your feedback!/i);
26
26
  });
27
27
  it('should render different string body correctly', () => {
28
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", body: "Thanks!" }));
28
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", body: "Thanks!" }));
29
29
  expect(screen.getByText('Feedback submitted')).toBeTruthy();
30
30
  expect(screen.getByText('Thanks!')).toBeTruthy();
31
31
  });
32
32
  it('should render different node body correctly', () => {
33
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", body: React.createElement("div", null, "Thanks!") }));
33
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", body: _jsx("div", { children: "Thanks!" }) }));
34
34
  expect(screen.getByText('Feedback submitted')).toBeTruthy();
35
35
  expect(screen.getByText('Thanks!')).toBeTruthy();
36
36
  });
37
37
  it('should handle onClose correctly', () => __awaiter(void 0, void 0, void 0, function* () {
38
38
  const spy = jest.fn();
39
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", onClose: spy }));
39
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", onClose: spy }));
40
40
  const closeButton = screen.getByRole('button', { name: 'Close feedback for message received at 12/12/12' });
41
41
  expect(closeButton).toBeTruthy();
42
42
  yield userEvent.click(closeButton);
@@ -44,20 +44,20 @@ describe('UserFeedbackComplete', () => {
44
44
  }));
45
45
  it('should be able to change close button aria label', () => {
46
46
  const spy = jest.fn();
47
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", onClose: spy, closeButtonAriaLabel: "Ima button" }));
47
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", onClose: spy, closeButtonAriaLabel: "Ima button" }));
48
48
  expect(screen.getByRole('button', { name: /Ima button/i })).toBeTruthy();
49
49
  });
50
50
  it('should handle className', () => __awaiter(void 0, void 0, void 0, function* () {
51
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", className: "test", "data-testid": "card" }));
51
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", className: "test", "data-testid": "card" }));
52
52
  expect(screen.getByTestId('card')).toHaveClass('test');
53
53
  }));
54
54
  it('should apply id', () => __awaiter(void 0, void 0, void 0, function* () {
55
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", id: "test", "data-testid": "card" }));
55
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", id: "test", "data-testid": "card" }));
56
56
  expect(screen.getByTestId('card').parentElement).toHaveAttribute('id', 'test');
57
57
  }));
58
58
  it('renders with no timeout by default', () => {
59
59
  jest.useFakeTimers();
60
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12" }));
60
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12" }));
61
61
  act(() => {
62
62
  jest.advanceTimersByTime(8000);
63
63
  });
@@ -66,7 +66,7 @@ describe('UserFeedbackComplete', () => {
66
66
  });
67
67
  it('should handle timeout correctly after 8000ms when timeout = true', () => __awaiter(void 0, void 0, void 0, function* () {
68
68
  jest.useFakeTimers();
69
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true }));
69
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true }));
70
70
  act(() => {
71
71
  jest.advanceTimersByTime(7999);
72
72
  });
@@ -79,7 +79,7 @@ describe('UserFeedbackComplete', () => {
79
79
  }));
80
80
  it('should handle timeout correctly when timeout = numeric value', () => __awaiter(void 0, void 0, void 0, function* () {
81
81
  jest.useFakeTimers();
82
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: 300 }));
82
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: 300 }));
83
83
  act(() => {
84
84
  jest.advanceTimersByTime(299);
85
85
  });
@@ -95,7 +95,7 @@ describe('UserFeedbackComplete', () => {
95
95
  advanceTimers: (delay) => jest.advanceTimersByTime(delay)
96
96
  });
97
97
  jest.useFakeTimers();
98
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
98
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
99
99
  expect(screen.getByText('Feedback submitted')).toBeTruthy();
100
100
  yield user.click(screen.getByTestId('card'));
101
101
  act(() => {
@@ -109,7 +109,7 @@ describe('UserFeedbackComplete', () => {
109
109
  advanceTimers: (delay) => jest.advanceTimersByTime(delay)
110
110
  });
111
111
  jest.useFakeTimers();
112
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
112
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
113
113
  const card = screen.getByTestId('card');
114
114
  yield user.hover(card);
115
115
  act(() => {
@@ -123,9 +123,7 @@ describe('UserFeedbackComplete', () => {
123
123
  advanceTimers: (delay) => jest.advanceTimersByTime(delay)
124
124
  });
125
125
  jest.useFakeTimers();
126
- render(React.createElement("div", null,
127
- React.createElement("input", null),
128
- React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })));
126
+ render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })] }));
129
127
  const card = screen.getByTestId('card');
130
128
  yield user.click(card);
131
129
  act(() => {
@@ -143,9 +141,7 @@ describe('UserFeedbackComplete', () => {
143
141
  advanceTimers: (delay) => jest.advanceTimersByTime(delay)
144
142
  });
145
143
  jest.useFakeTimers();
146
- render(React.createElement("div", null,
147
- React.createElement("input", null),
148
- React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })));
144
+ render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" })] }));
149
145
  const card = screen.getByTestId('card');
150
146
  yield user.hover(card);
151
147
  act(() => {
@@ -163,9 +159,7 @@ describe('UserFeedbackComplete', () => {
163
159
  advanceTimers: (delay) => jest.advanceTimersByTime(delay)
164
160
  });
165
161
  jest.useFakeTimers();
166
- render(React.createElement("div", null,
167
- React.createElement("input", null),
168
- React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", timeoutAnimation: 1000 })));
162
+ render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", timeoutAnimation: 1000 })] }));
169
163
  const card = screen.getByTestId('card');
170
164
  yield user.hover(card);
171
165
  act(() => {
@@ -181,7 +175,7 @@ describe('UserFeedbackComplete', () => {
181
175
  it('does not call the onTimeout callback before the timeout period has expired', () => {
182
176
  const spy = jest.fn();
183
177
  jest.useFakeTimers();
184
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", onTimeout: spy }));
178
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", onTimeout: spy }));
185
179
  act(() => {
186
180
  jest.advanceTimersByTime(7999);
187
181
  });
@@ -191,7 +185,7 @@ describe('UserFeedbackComplete', () => {
191
185
  it('calls the onTimeout callback after the timeout period has expired', () => {
192
186
  jest.useFakeTimers();
193
187
  const spy = jest.fn();
194
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", onTimeout: spy }));
188
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", onTimeout: spy }));
195
189
  act(() => {
196
190
  jest.advanceTimersByTime(8000);
197
191
  });
@@ -199,13 +193,13 @@ describe('UserFeedbackComplete', () => {
199
193
  jest.useRealTimers();
200
194
  });
201
195
  it('renders without aria-live and aria-atomic attributes by default', () => {
202
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
196
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card" }));
203
197
  const card = screen.getByTestId('card').parentElement;
204
198
  expect(card).not.toHaveAttribute('aria-live');
205
199
  expect(card).not.toHaveAttribute('aria-atomic');
206
200
  });
207
201
  it('has an aria-live value of polite and aria-atomic value of false when isLiveRegion = true', () => {
208
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", isLiveRegion: true }));
202
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", timeout: true, "data-testid": "card", isLiveRegion: true }));
209
203
  const card = screen.getByTestId('card').parentElement;
210
204
  expect(card).toHaveAttribute('aria-live', 'polite');
211
205
  expect(card).toHaveAttribute('aria-atomic', 'false');
@@ -213,9 +207,7 @@ describe('UserFeedbackComplete', () => {
213
207
  it('calls onMouseEnter appropriately', () => __awaiter(void 0, void 0, void 0, function* () {
214
208
  const spy = jest.fn();
215
209
  const user = userEvent.setup();
216
- render(React.createElement("div", null,
217
- React.createElement("input", null),
218
- React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseEnter: spy })));
210
+ render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseEnter: spy })] }));
219
211
  const card = screen.getByTestId('card');
220
212
  expect(spy).toHaveBeenCalledTimes(0);
221
213
  yield user.hover(card);
@@ -224,9 +216,7 @@ describe('UserFeedbackComplete', () => {
224
216
  it('calls onMouseLeave appropriately', () => __awaiter(void 0, void 0, void 0, function* () {
225
217
  const spy = jest.fn();
226
218
  const user = userEvent.setup();
227
- render(React.createElement("div", null,
228
- React.createElement("input", null),
229
- React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseLeave: spy })));
219
+ render(_jsxs("div", { children: [_jsx("input", {}), _jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", onMouseLeave: spy })] }));
230
220
  const card = screen.getByTestId('card');
231
221
  expect(spy).toHaveBeenCalledTimes(0);
232
222
  yield user.hover(card);
@@ -234,15 +224,15 @@ describe('UserFeedbackComplete', () => {
234
224
  expect(spy).toHaveBeenCalledTimes(1);
235
225
  }));
236
226
  it('should focus on load by default', () => {
237
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card" }));
227
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card" }));
238
228
  expect(screen.getByTestId('card').parentElement).toHaveFocus();
239
229
  });
240
230
  it('should not focus on load if focusOnLoad = false', () => {
241
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", focusOnLoad: false }));
231
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", focusOnLoad: false }));
242
232
  expect(screen.getByTestId('card').parentElement).not.toHaveFocus();
243
233
  });
244
234
  it('should handle isCompact', () => {
245
- render(React.createElement(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", isCompact: true }));
235
+ render(_jsx(UserFeedbackComplete, { timestamp: "12/12/12", "data-testid": "card", isCompact: true }));
246
236
  expect(screen.getByTestId('card')).toHaveClass('pf-m-compact');
247
237
  });
248
238
  });
@@ -1,2 +1,3 @@
1
1
  export { default } from './Message';
2
+ export { rehypeCodeBlockToggle } from './Plugins/rehypeCodeBlockToggle';
2
3
  export * from './Message';
@@ -1,2 +1,3 @@
1
1
  export { default } from './Message';
2
+ export { rehypeCodeBlockToggle } from './Plugins/rehypeCodeBlockToggle';
2
3
  export * from './Message';
@@ -1,10 +1,16 @@
1
- import React from 'react';
2
1
  import { ButtonProps, DropEvent, TooltipProps } from '@patternfly/react-core';
2
+ import { Accept, DropzoneOptions, FileError, FileRejection } from 'react-dropzone';
3
3
  export interface AttachButtonProps extends ButtonProps {
4
4
  /** Callback for when button is clicked */
5
5
  onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
6
6
  /** Callback function for AttachButton when an attachment is made */
7
7
  onAttachAccepted?: (data: File[], event: DropEvent) => void;
8
+ /** Specifies the file types accepted by the attachment upload component.
9
+ * Files that don't match the accepted types will be disabled in the file picker.
10
+ * For example,
11
+ * allowedFileTypes: { 'application/json': ['.json'], 'text/plain': ['.txt'] }
12
+ **/
13
+ allowedFileTypes?: Accept;
8
14
  /** Class name for AttachButton */
9
15
  className?: string;
10
16
  /** Props to control if the AttachButton should be disabled */
@@ -17,6 +23,23 @@ export interface AttachButtonProps extends ButtonProps {
17
23
  tooltipContent?: string;
18
24
  /** Test id applied to input */
19
25
  inputTestId?: string;
26
+ /** Whether button is compact */
20
27
  isCompact?: boolean;
28
+ /** Minimum file size allowed */
29
+ minSize?: number;
30
+ /** Max file size allowed */
31
+ maxSize?: number;
32
+ /** Max number of files allowed */
33
+ maxFiles?: number;
34
+ /** Whether attachments are disabled */
35
+ isAttachmentDisabled?: boolean;
36
+ /** Callback when file(s) are attached */
37
+ onAttach?: <T extends File>(acceptedFiles: T[], fileRejections: FileRejection[], event: DropEvent) => void;
38
+ /** Callback function for AttachButton when an attachment fails */
39
+ onAttachRejected?: (fileRejections: FileRejection[], event: DropEvent) => void;
40
+ /** Validator for files; see https://react-dropzone.js.org/#!/Custom%20validation for more information */
41
+ validator?: <T extends File>(file: T) => FileError | readonly FileError[] | null;
42
+ /** Additional props passed to react-dropzone */
43
+ dropzoneProps?: DropzoneOptions;
21
44
  }
22
- export declare const AttachButton: React.ForwardRefExoticComponent<AttachButtonProps & React.RefAttributes<any>>;
45
+ export declare const AttachButton: import("react").ForwardRefExoticComponent<AttachButtonProps & import("react").RefAttributes<any>>;
@@ -9,26 +9,19 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- // ============================================================================
13
- // Chatbot Footer - Message Bar - Attach
14
- // ============================================================================
15
- import React from 'react';
12
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { forwardRef } from 'react';
16
14
  // Import PatternFly components
17
15
  import { Button, Icon, Tooltip } from '@patternfly/react-core';
18
16
  import { useDropzone } from 'react-dropzone';
19
17
  import { PaperclipIcon } from '@patternfly/react-icons/dist/esm/icons/paperclip-icon';
20
18
  const AttachButtonBase = (_a) => {
21
- var { onAttachAccepted, onClick, isDisabled, className, tooltipProps, innerRef, tooltipContent = 'Attach', inputTestId, isCompact } = _a, props = __rest(_a, ["onAttachAccepted", "onClick", "isDisabled", "className", "tooltipProps", "innerRef", "tooltipContent", "inputTestId", "isCompact"]);
22
- const { open, getInputProps } = useDropzone({
23
- multiple: true,
24
- onDropAccepted: onAttachAccepted
25
- });
26
- return (React.createElement(React.Fragment, null,
27
- React.createElement("input", Object.assign({ "data-testid": inputTestId }, getInputProps(), { hidden: true })),
28
- React.createElement(Tooltip, Object.assign({ id: "pf-chatbot__tooltip--attach", content: tooltipContent, position: "top", entryDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.entryDelay) || 0, exitDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.exitDelay) || 0, distance: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.distance) || 8, animationDuration: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.animationDuration) || 0,
29
- // prevents VO announcements of both aria label and tooltip
30
- aria: "none" }, tooltipProps),
31
- React.createElement(Button, Object.assign({ variant: "plain", ref: innerRef, className: `pf-chatbot__button--attach ${isCompact ? 'pf-m-compact' : ''} ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || 'Attach button', isDisabled: isDisabled, onClick: onClick !== null && onClick !== void 0 ? onClick : open, icon: React.createElement(Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true },
32
- React.createElement(PaperclipIcon, null)), size: isCompact ? 'sm' : undefined }, props)))));
19
+ var { onAttachAccepted, onClick, isDisabled, className, tooltipProps, innerRef, tooltipContent = 'Attach', inputTestId, isCompact, allowedFileTypes, minSize, maxSize, maxFiles, isAttachmentDisabled, onAttach, onAttachRejected, validator, dropzoneProps } = _a, props = __rest(_a, ["onAttachAccepted", "onClick", "isDisabled", "className", "tooltipProps", "innerRef", "tooltipContent", "inputTestId", "isCompact", "allowedFileTypes", "minSize", "maxSize", "maxFiles", "isAttachmentDisabled", "onAttach", "onAttachRejected", "validator", "dropzoneProps"]);
20
+ const { open, getInputProps } = useDropzone(Object.assign({ multiple: true, onDropAccepted: onAttachAccepted, accept: allowedFileTypes, minSize,
21
+ maxSize,
22
+ maxFiles, disabled: isAttachmentDisabled, onDrop: onAttach, onDropRejected: onAttachRejected, validator }, dropzoneProps));
23
+ return (_jsxs(_Fragment, { children: [_jsx("input", Object.assign({ "data-testid": inputTestId }, getInputProps(), { hidden: true })), _jsx(Tooltip, Object.assign({ id: "pf-chatbot__tooltip--attach", content: tooltipContent, position: "top", entryDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.entryDelay) || 0, exitDelay: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.exitDelay) || 0, distance: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.distance) || 8, animationDuration: (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.animationDuration) || 0,
24
+ // prevents VO announcements of both aria label and tooltip
25
+ aria: "none" }, tooltipProps, { children: _jsx(Button, Object.assign({ variant: "plain", ref: innerRef, className: `pf-chatbot__button--attach ${isCompact ? 'pf-m-compact' : ''} ${className !== null && className !== void 0 ? className : ''}`, "aria-label": props['aria-label'] || 'Attach', isDisabled: isDisabled, onClick: onClick !== null && onClick !== void 0 ? onClick : open, icon: _jsx(Icon, { iconSize: isCompact ? 'lg' : 'xl', isInline: true, children: _jsx(PaperclipIcon, {}) }), size: isCompact ? 'sm' : undefined }, props)) }))] }));
33
26
  };
34
- export const AttachButton = React.forwardRef((props, ref) => (React.createElement(AttachButtonBase, Object.assign({ innerRef: ref }, props))));
27
+ export const AttachButton = forwardRef((props, ref) => (_jsx(AttachButtonBase, Object.assign({ innerRef: ref }, props))));
@@ -7,51 +7,51 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import React from 'react';
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { render, screen } from '@testing-library/react';
12
12
  import '@testing-library/jest-dom';
13
13
  import userEvent from '@testing-library/user-event';
14
14
  import { AttachButton } from './AttachButton';
15
15
  describe('Attach button', () => {
16
16
  it('should render button correctly', () => {
17
- render(React.createElement(AttachButton, null));
18
- expect(screen.getByRole('button', { name: 'Attach button' })).toBeTruthy();
17
+ render(_jsx(AttachButton, {}));
18
+ expect(screen.getByRole('button', { name: 'Attach' })).toBeTruthy();
19
19
  });
20
20
  it('should handle isDisabled prop', () => {
21
- render(React.createElement(AttachButton, { isDisabled: true }));
22
- expect(screen.getByRole('button', { name: 'Attach button' })).toBeDisabled();
21
+ render(_jsx(AttachButton, { isDisabled: true }));
22
+ expect(screen.getByRole('button', { name: 'Attach' })).toBeDisabled();
23
23
  });
24
24
  it('should handle spread props, including aria-label', () => {
25
- render(React.createElement(AttachButton, { "aria-label": "test" }));
25
+ render(_jsx(AttachButton, { "aria-label": "test" }));
26
26
  expect(screen.getByRole('button', { name: 'test' }));
27
27
  });
28
28
  it('should handle onClick', () => __awaiter(void 0, void 0, void 0, function* () {
29
29
  const spy = jest.fn();
30
- render(React.createElement(AttachButton, { onClick: spy }));
31
- yield userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
30
+ render(_jsx(AttachButton, { onClick: spy }));
31
+ yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
32
32
  expect(screen.getByRole('tooltip', { name: 'Attach' })).toBeTruthy();
33
33
  expect(spy).toHaveBeenCalledTimes(1);
34
34
  }));
35
35
  it('should handle className prop', () => {
36
- render(React.createElement(AttachButton, { className: "test" }));
37
- expect(screen.getByRole('button', { name: 'Attach button' })).toHaveClass('test');
36
+ render(_jsx(AttachButton, { className: "test" }));
37
+ expect(screen.getByRole('button', { name: 'Attach' })).toHaveClass('test');
38
38
  });
39
39
  it('should handle custom tooltip correctly', () => __awaiter(void 0, void 0, void 0, function* () {
40
- render(React.createElement(AttachButton, { onClick: jest.fn, tooltipContent: "Test" }));
41
- yield userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
40
+ render(_jsx(AttachButton, { onClick: jest.fn, tooltipContent: "Test" }));
41
+ yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
42
42
  expect(screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
43
43
  }));
44
44
  it('should handle tooltipProps prop', () => __awaiter(void 0, void 0, void 0, function* () {
45
- render(React.createElement(AttachButton, { tooltipProps: { id: 'test' } }));
46
- yield userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
45
+ render(_jsx(AttachButton, { tooltipProps: { id: 'test' } }));
46
+ yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
47
47
  expect(screen.getByRole('tooltip', { name: 'Attach' })).toHaveAttribute('id', 'test');
48
48
  }));
49
49
  // Based on this because I had no idea how to do this and was looking around: https://stackoverflow.com/a/75562651
50
50
  // See also https://developer.mozilla.org/en-US/docs/Web/API/File/File for what that file variable is doing
51
51
  it('should handle onAttachAccepted prop', () => __awaiter(void 0, void 0, void 0, function* () {
52
52
  const spy = jest.fn();
53
- render(React.createElement(AttachButton, { onAttachAccepted: spy, inputTestId: "input" }));
54
- yield userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
53
+ render(_jsx(AttachButton, { onAttachAccepted: spy, inputTestId: "input" }));
54
+ yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
55
55
  const file = new File(['test'], 'test.json');
56
56
  const input = screen.getByTestId('input');
57
57
  yield userEvent.upload(input, file);
@@ -59,7 +59,85 @@ describe('Attach button', () => {
59
59
  expect(spy).toHaveBeenCalledTimes(1);
60
60
  }));
61
61
  it('should handle isCompact', () => {
62
- render(React.createElement(AttachButton, { isCompact: true, "data-testid": "button" }));
62
+ render(_jsx(AttachButton, { isCompact: true, "data-testid": "button" }));
63
63
  expect(screen.getByTestId('button')).toHaveClass('pf-m-compact');
64
64
  });
65
+ it('should set correct accept attribute on file input', () => __awaiter(void 0, void 0, void 0, function* () {
66
+ render(_jsx(AttachButton, { inputTestId: "input", allowedFileTypes: { 'text/plain': ['.txt'] } }));
67
+ yield userEvent.click(screen.getByRole('button', { name: 'Attach' }));
68
+ const input = screen.getByTestId('input');
69
+ expect(input).toHaveAttribute('accept', 'text/plain,.txt');
70
+ }));
71
+ it('should call onAttachAccepted when file type is accepted', () => __awaiter(void 0, void 0, void 0, function* () {
72
+ const onAttachAccepted = jest.fn();
73
+ render(_jsx(AttachButton, { inputTestId: "input", allowedFileTypes: { 'text/plain': ['.txt'] }, onAttachAccepted: onAttachAccepted }));
74
+ const file = new File(['hello'], 'example.txt', { type: 'text/plain' });
75
+ const input = screen.getByTestId('input');
76
+ yield userEvent.upload(input, file);
77
+ expect(onAttachAccepted).toHaveBeenCalled();
78
+ const [attachedFile] = onAttachAccepted.mock.calls[0][0];
79
+ expect(attachedFile).toEqual(file);
80
+ }));
81
+ it('should not call onAttachAccepted when file type is not accepted', () => __awaiter(void 0, void 0, void 0, function* () {
82
+ const onAttachAccepted = jest.fn();
83
+ render(_jsx(AttachButton, { inputTestId: "input", allowedFileTypes: { 'text/plain': ['.txt'] }, onAttachAccepted: onAttachAccepted }));
84
+ const file = new File(['[]'], 'example.json', { type: 'application/json' });
85
+ const input = screen.getByTestId('input');
86
+ yield userEvent.upload(input, file);
87
+ expect(onAttachAccepted).not.toHaveBeenCalled();
88
+ }));
89
+ it('should respect minSize restriction', () => __awaiter(void 0, void 0, void 0, function* () {
90
+ const onAttachRejected = jest.fn();
91
+ render(_jsx(AttachButton, { inputTestId: "input", minSize: 1000, onAttachRejected: onAttachRejected }));
92
+ const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
93
+ const input = screen.getByTestId('input');
94
+ yield userEvent.upload(input, file);
95
+ expect(onAttachRejected).toHaveBeenCalled();
96
+ }));
97
+ it('should respect maxSize restriction', () => __awaiter(void 0, void 0, void 0, function* () {
98
+ const onAttachRejected = jest.fn();
99
+ render(_jsx(AttachButton, { inputTestId: "input", maxSize: 100, onAttachRejected: onAttachRejected }));
100
+ const largeContent = 'x'.repeat(200);
101
+ const file = new File([largeContent], 'example.txt', { type: 'text/plain' });
102
+ const input = screen.getByTestId('input');
103
+ yield userEvent.upload(input, file);
104
+ expect(onAttachRejected).toHaveBeenCalled();
105
+ }));
106
+ it('should respect maxFiles restriction', () => __awaiter(void 0, void 0, void 0, function* () {
107
+ const onAttachRejected = jest.fn();
108
+ render(_jsx(AttachButton, { inputTestId: "input", maxFiles: 1, onAttachRejected: onAttachRejected }));
109
+ const files = [
110
+ new File(['Test1'], 'example1.txt', { type: 'text/plain' }),
111
+ new File(['Test2'], 'example2.txt', { type: 'text/plain' })
112
+ ];
113
+ const input = screen.getByTestId('input');
114
+ yield userEvent.upload(input, files);
115
+ expect(onAttachRejected).toHaveBeenCalled();
116
+ }));
117
+ it('should be disabled when isAttachmentDisabled is true', () => __awaiter(void 0, void 0, void 0, function* () {
118
+ const onFileDrop = jest.fn();
119
+ render(_jsx(AttachButton, { inputTestId: "input", isAttachmentDisabled: true }));
120
+ const file = new File(['Test'], 'example.text', { type: 'text/plain' });
121
+ const input = screen.getByTestId('input');
122
+ yield userEvent.upload(input, file);
123
+ expect(onFileDrop).not.toHaveBeenCalled();
124
+ }));
125
+ it('should call onAttach when files are attached', () => __awaiter(void 0, void 0, void 0, function* () {
126
+ const onAttach = jest.fn();
127
+ render(_jsx(AttachButton, { inputTestId: "input", onAttach: onAttach }));
128
+ const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
129
+ const input = screen.getByTestId('input');
130
+ yield userEvent.upload(input, file);
131
+ expect(onAttach).toHaveBeenCalled();
132
+ }));
133
+ it('should use custom validator when provided', () => __awaiter(void 0, void 0, void 0, function* () {
134
+ const validator = jest.fn().mockReturnValue({ message: 'Custom error' });
135
+ const onAttachRejected = jest.fn();
136
+ render(_jsx(AttachButton, { inputTestId: "input", validator: validator, onAttachRejected: onAttachRejected }));
137
+ const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
138
+ const input = screen.getByTestId('input');
139
+ yield userEvent.upload(input, file);
140
+ expect(validator).toHaveBeenCalledWith(file);
141
+ expect(onAttachRejected).toHaveBeenCalled();
142
+ }));
65
143
  });
@@ -1,4 +1,5 @@
1
- import React from 'react';
1
+ import type { FunctionComponent } from 'react';
2
+ import { Accept, DropzoneOptions, FileError, FileRejection } from 'react-dropzone/.';
2
3
  import { ButtonProps, DropEvent, TextAreaProps, TooltipProps } from '@patternfly/react-core';
3
4
  import { ChatbotDisplayMode } from '../Chatbot';
4
5
  export interface MessageBarWithAttachMenuProps {
@@ -21,7 +22,7 @@ export interface MessageBarWithAttachMenuProps {
21
22
  /** Callback to change the open state of the menu. Triggered by clicking outside of the menu. */
22
23
  onAttachMenuOpenChange?: (isOpen: boolean) => void;
23
24
  }
24
- export interface MessageBarProps extends TextAreaProps {
25
+ export interface MessageBarProps extends Omit<TextAreaProps, 'innerRef'> {
25
26
  /** Callback to get the value of input message by user */
26
27
  onSendMessage: (message: string | number) => void;
27
28
  /** Class Name for the MessageBar component */
@@ -42,6 +43,28 @@ export interface MessageBarProps extends TextAreaProps {
42
43
  handleStopButton?: (event: React.MouseEvent<HTMLButtonElement>) => void;
43
44
  /** Callback function for when attach button is used to upload a file */
44
45
  handleAttach?: (data: File[], event: DropEvent) => void;
46
+ /** Specifies the file types accepted by the attachment upload component.
47
+ * Files that don't match the accepted types will be disabled in the file picker.
48
+ * For example,
49
+ * allowedFileTypes: { 'application/json': ['.json'], 'text/plain': ['.txt'] }
50
+ **/
51
+ allowedFileTypes?: Accept;
52
+ /** Minimum file size allowed */
53
+ minSize?: number;
54
+ /** Max file size allowed */
55
+ maxSize?: number;
56
+ /** Max number of files allowed */
57
+ maxFiles?: number;
58
+ /** Whether attachments are disabled */
59
+ isAttachmentDisabled?: boolean;
60
+ /** Callback when file(s) are attached */
61
+ onAttach?: <T extends File>(acceptedFiles: T[], fileRejections: FileRejection[], event: DropEvent) => void;
62
+ /** Callback function for AttachButton when an attachment fails */
63
+ onAttachRejected?: (fileRejections: FileRejection[], event: DropEvent) => void;
64
+ /** Validator for files; see https://react-dropzone.js.org/#!/Custom%20validation for more information */
65
+ validator?: <T extends File>(file: T) => FileError | readonly FileError[] | null;
66
+ /** Additional props passed to react-dropzone */
67
+ dropzoneProps?: DropzoneOptions;
45
68
  /** Props to enable a menu that opens when the Attach button is clicked, instead of the attachment window */
46
69
  attachMenuProps?: MessageBarWithAttachMenuProps;
47
70
  /** Flag to provide manual control over whether send button is disabled */
@@ -78,7 +101,12 @@ export interface MessageBarProps extends TextAreaProps {
78
101
  onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>, value: string | number) => void;
79
102
  /** Display mode of chatbot, if you want to message bar to resize when the display mode changes */
80
103
  displayMode?: ChatbotDisplayMode;
104
+ /** Whether message bar is compact */
81
105
  isCompact?: boolean;
106
+ /** Ref applied to message bar textarea, for use with focus or other custom behaviors */
107
+ innerRef?: React.Ref<HTMLTextAreaElement>;
82
108
  }
83
- export declare const MessageBar: React.FunctionComponent<MessageBarProps>;
109
+ export declare const MessageBarBase: FunctionComponent<MessageBarProps>;
110
+ declare const MessageBar: import("react").ForwardRefExoticComponent<MessageBarProps & import("react").RefAttributes<HTMLTextAreaElement>>;
111
+ export { MessageBar };
84
112
  export default MessageBar;