@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
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import type { FC, ReactNode } from 'react';
2
2
  import RocketIcon from '@patternfly/react-icons/dist/js/icons/rocket-icon';
3
3
  import OutlinedBookmarkIcon from '@patternfly/react-icons/dist/js/icons/outlined-bookmark-icon';
4
4
  import {
@@ -53,7 +53,7 @@ export interface QuickStartTileProps {
53
53
  isCompact?: boolean;
54
54
  }
55
55
 
56
- const QuickStartTile: React.FC<QuickStartTileProps> = ({
56
+ const QuickStartTile: FC<QuickStartTileProps> = ({
57
57
  className,
58
58
  quickStart,
59
59
  onClick,
@@ -71,7 +71,7 @@ const QuickStartTile: React.FC<QuickStartTileProps> = ({
71
71
  spec: { icon, displayName, description, durationMinutes, prerequisites, link, type }
72
72
  } = quickStart;
73
73
 
74
- let quickStartIcon: React.ReactNode;
74
+ let quickStartIcon: ReactNode;
75
75
  if (typeof icon === 'object') {
76
76
  quickStartIcon = <Icon size="2xl">{icon}</Icon>;
77
77
  } else {
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { render, screen } from '@testing-library/react';
3
2
  import '@testing-library/jest-dom';
4
3
  import userEvent from '@testing-library/user-event';
@@ -1,4 +1,5 @@
1
- import * as React from 'react';
1
+ import type { FC } from 'react';
2
+ import { useRef } from 'react';
2
3
  import { Button, Flex, pluralize, Popover } from '@patternfly/react-core';
3
4
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
4
5
 
@@ -29,7 +30,7 @@ export function pluralizeWord(i: number, singular: string, plural?: string) {
29
30
  return `${i === 1 ? singular : plural}`;
30
31
  }
31
32
 
32
- const QuickStartTileDescription: React.FC<QuickStartTileDescriptionProps> = ({
33
+ const QuickStartTileDescription: FC<QuickStartTileDescriptionProps> = ({
33
34
  description,
34
35
  prerequisites,
35
36
  prerequisiteWord = 'Prerequisite',
@@ -37,7 +38,7 @@ const QuickStartTileDescription: React.FC<QuickStartTileDescriptionProps> = ({
37
38
  quickStartButtonAriaLabel = 'Show prerequisites'
38
39
  }) => {
39
40
  const prereqs = prerequisites?.filter((p) => p);
40
- const buttonRef = React.useRef<HTMLButtonElement>(null);
41
+ const buttonRef = useRef<HTMLButtonElement>(null);
41
42
  const pluralizedPrereq = pluralizeWord(prereqs?.length || 0, prerequisiteWord, prerequisiteWordPlural);
42
43
  return (
43
44
  <>
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
1
  import { Button, Flex } from '@patternfly/react-core';
2
+ import type { FunctionComponent } from 'react';
3
3
 
4
4
  interface QuickStartTileHeaderProps {
5
5
  /** Name for the header */
@@ -10,7 +10,7 @@ interface QuickStartTileHeaderProps {
10
10
  onSelect: (e: React.FormEvent<HTMLInputElement> | React.MouseEvent<Element, MouseEvent>) => void;
11
11
  }
12
12
 
13
- const QuickStartTileHeader: React.FC<QuickStartTileHeaderProps> = ({ name, quickStartId, onSelect }) => (
13
+ const QuickStartTileHeader: FunctionComponent<QuickStartTileHeaderProps> = ({ name, quickStartId, onSelect }) => (
14
14
  <Flex flexWrap={{ default: 'nowrap' }}>
15
15
  <Button data-test="title" id={quickStartId} variant="link" isInline onClick={onSelect}>
16
16
  {name}
@@ -1,4 +1,5 @@
1
1
  import { ButtonProps } from '@patternfly/react-core';
2
+ import type { ComponentType, ReactNode, SyntheticEvent } from 'react';
2
3
 
3
4
  // These types are all from the QuickStart extension.
4
5
  // We want to ensure parity, so be careful when adjusting these.
@@ -77,9 +78,9 @@ export interface QuickstartAction {
77
78
  /** Screen reader aria label. */
78
79
  'aria-label': string;
79
80
  /** Icon to be rendered as a plain button, by default Bookmark outlined will be used. */
80
- icon?: React.ComponentType<unknown>;
81
+ icon?: ComponentType<unknown>;
81
82
  /** Callback with synthetic event parameter. */
82
- onClick?: (e: React.SyntheticEvent) => void;
83
+ onClick?: (e: SyntheticEvent) => void;
83
84
  /** Additional button props to be rendered as extra props. */
84
85
  buttonProps?: ButtonProps;
85
86
  }
@@ -95,7 +96,7 @@ export interface QuickStartSpec {
95
96
  version?: number;
96
97
  displayName: string;
97
98
  durationMinutes?: number;
98
- icon: React.ReactNode;
99
+ icon: ReactNode;
99
100
  description: string;
100
101
  prerequisites?: string[];
101
102
  introduction?: string;
@@ -2,7 +2,7 @@
2
2
  // Chatbot Main - Message - Content - Table
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
5
+ import { Children, cloneElement } from 'react';
6
6
  import { ExtraProps } from 'react-markdown';
7
7
  import { Table, TableProps } from '@patternfly/react-table';
8
8
 
@@ -19,7 +19,7 @@ export interface TableNode {
19
19
  type: string;
20
20
  }
21
21
 
22
- const TableMessage = ({ children, ...props }: TableProps & ExtraProps) => {
22
+ const TableMessage = ({ children, ...props }: Omit<TableProps, 'ref'> & ExtraProps) => {
23
23
  const { className, ...rest } = props;
24
24
 
25
25
  // This allows us to parse the nested data we get back from the 3rd party Markdown parser
@@ -53,9 +53,9 @@ const TableMessage = ({ children, ...props }: TableProps & ExtraProps) => {
53
53
  // This is somewhat opinionated and may break if 3rd party library changes
54
54
  // See Tr and Tbody for other usage
55
55
  const modifyChildren = (children) =>
56
- React.Children.map(children, (child) => {
56
+ Children.map(children, (child) => {
57
57
  if (child && headerTextValues?.length > 0) {
58
- return React.cloneElement(child, { extraHeaders: headerTextValues });
58
+ return cloneElement(child, { extraHeaders: headerTextValues });
59
59
  }
60
60
  return child;
61
61
  });
@@ -2,15 +2,15 @@
2
2
  // Chatbot Main - Message - Content - Table
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
5
+ import { Children, cloneElement } from 'react';
6
6
  import { ExtraProps } from 'react-markdown';
7
7
  import { Tbody, TbodyProps } from '@patternfly/react-table';
8
8
 
9
- const TbodyProps = ({ children, ...props }: TbodyProps & ExtraProps & { extraHeaders?: string[] }) => {
9
+ const TbodyProps = ({ children, ...props }: Omit<TbodyProps, 'ref'> & ExtraProps & { extraHeaders?: string[] }) => {
10
10
  // passthrough so we can place dataLabel on tds
11
11
  const modifyChildren = (children) => {
12
12
  if (children && props.extraHeaders) {
13
- return React.Children.map(children, (child) => React.cloneElement(child, { extraHeaders: props.extraHeaders }));
13
+ return Children.map(children, (child) => cloneElement(child, { extraHeaders: props.extraHeaders }));
14
14
  }
15
15
  return children;
16
16
  };
@@ -2,10 +2,9 @@
2
2
  // Chatbot Main - Message - Content - Table
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
  import { Td, TdProps } from '@patternfly/react-table';
8
7
 
9
- const TdMessage = ({ children, ...props }: TdProps & ExtraProps) => <Td {...props}>{children}</Td>;
8
+ const TdMessage = ({ children, ...props }: Omit<TdProps, 'ref'> & ExtraProps) => <Td {...props}>{children}</Td>;
10
9
 
11
10
  export default TdMessage;
@@ -2,10 +2,9 @@
2
2
  // Chatbot Main - Message - Content - Table
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
  import { Th, ThProps } from '@patternfly/react-table';
8
7
 
9
- const ThMessage = ({ children, ...props }: ThProps & ExtraProps) => <Th {...props}>{children}</Th>;
8
+ const ThMessage = ({ children, ...props }: Omit<ThProps, 'ref'> & ExtraProps) => <Th {...props}>{children}</Th>;
10
9
 
11
10
  export default ThMessage;
@@ -2,10 +2,11 @@
2
2
  // Chatbot Main - Message - Content - Table
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
  import { Thead, TheadProps } from '@patternfly/react-table';
8
7
 
9
- const TheadMessage = ({ children, ...props }: TheadProps & ExtraProps) => <Thead {...props}>{children}</Thead>;
8
+ const TheadMessage = ({ children, ...props }: Omit<TheadProps, 'ref'> & ExtraProps) => (
9
+ <Thead {...props}>{children}</Thead>
10
+ );
10
11
 
11
12
  export default TheadMessage;
@@ -2,19 +2,19 @@
2
2
  // Chatbot Main - Message - Content - Table
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
5
+ import { Children, cloneElement } from 'react';
6
6
  import { ExtraProps } from 'react-markdown';
7
7
  import { Tr, TrProps } from '@patternfly/react-table';
8
8
 
9
- const TrMessage = ({ children, ...props }: TrProps & ExtraProps & { extraHeaders?: string[] }) => {
9
+ const TrMessage = ({ children, ...props }: Omit<TrProps, 'ref'> & ExtraProps & { extraHeaders?: string[] }) => {
10
10
  let tdIndex = 0;
11
11
 
12
12
  // passthrough so we can place dataLabel on tds
13
13
  // places column name on correct child
14
14
  const modifyChildren = (children) =>
15
- React.Children.map(children, (child) => {
15
+ Children.map(children, (child) => {
16
16
  if (child.type.name === 'td' && props.extraHeaders) {
17
- const clonedChild = React.cloneElement(child, { dataLabel: props.extraHeaders[tdIndex] });
17
+ const clonedChild = cloneElement(child, { dataLabel: props.extraHeaders[tdIndex] });
18
18
  tdIndex = tdIndex + 1;
19
19
  return clonedChild;
20
20
  }
@@ -3,6 +3,8 @@
3
3
  // ============================================================================
4
4
 
5
5
  .pf-chatbot__message-and-actions {
6
+ width: 100%;
7
+
6
8
  blockquote {
7
9
  .pf-chatbot__message-text {
8
10
  display: inline-block;
@@ -10,11 +12,6 @@
10
12
  }
11
13
  }
12
14
 
13
- // make it full width when there's a table, so the table can grow as needed
14
- .pf-chatbot__message-and-actions:has(.pf-chatbot__message-table) {
15
- width: 100%;
16
- }
17
-
18
15
  // Need to inline shorter text
19
16
  .pf-chatbot__message-text {
20
17
  width: fit-content;
@@ -2,11 +2,10 @@
2
2
  // Chatbot Main - Message - Content - Text
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
  import { Content, ContentProps } from '@patternfly/react-core';
8
7
 
9
- const TextMessage = ({ component, children, ...props }: ContentProps & ExtraProps) => (
8
+ const TextMessage = ({ component, children, ...props }: Omit<ContentProps, 'ref'> & ExtraProps) => (
10
9
  <span className="pf-chatbot__message-text">
11
10
  <Content component={component} {...props}>
12
11
  {children}
@@ -1,7 +1,7 @@
1
1
  // ============================================================================
2
2
  // Chatbot Main - Messages - Close Button
3
3
  // ============================================================================
4
- import React from 'react';
4
+ import type { FunctionComponent } from 'react';
5
5
 
6
6
  // Import PatternFly components
7
7
  import { Button, ButtonProps } from '@patternfly/react-core';
@@ -14,7 +14,7 @@ export interface CloseButtonProps extends ButtonProps {
14
14
  ariaLabel?: string;
15
15
  }
16
16
 
17
- const CloseButton: React.FunctionComponent<CloseButtonProps> = ({ onClose, ariaLabel }: CloseButtonProps) => (
17
+ const CloseButton: FunctionComponent<CloseButtonProps> = ({ onClose, ariaLabel }: CloseButtonProps) => (
18
18
  <Button variant="plain" onClick={onClose} icon={<CloseIcon />} aria-label={ariaLabel} />
19
19
  );
20
20
 
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { render, screen } from '@testing-library/react';
3
2
  import '@testing-library/jest-dom';
4
3
  import userEvent from '@testing-library/user-event';
@@ -1,7 +1,9 @@
1
1
  // ============================================================================
2
2
  // Chatbot Main - Messages - Feedback Card
3
3
  // ============================================================================
4
- import React from 'react';
4
+ import type { FunctionComponent } from 'react';
5
+
6
+ import { useState, useRef, useEffect } from 'react';
5
7
 
6
8
  // Import PatternFly components
7
9
  import {
@@ -54,7 +56,7 @@ export interface UserFeedbackProps extends Omit<CardProps, 'onSubmit'>, OUIAProp
54
56
  timestamp?: string;
55
57
  }
56
58
 
57
- const UserFeedback: React.FunctionComponent<UserFeedbackProps> = ({
59
+ const UserFeedback: FunctionComponent<UserFeedbackProps> = ({
58
60
  className,
59
61
  timestamp,
60
62
  title = 'Why did you choose this rating?',
@@ -74,11 +76,11 @@ const UserFeedback: React.FunctionComponent<UserFeedbackProps> = ({
74
76
  isCompact,
75
77
  ...props
76
78
  }: UserFeedbackProps) => {
77
- const [selectedResponse, setSelectedResponse] = React.useState<string>();
78
- const [value, setValue] = React.useState('');
79
- const divRef = React.useRef<HTMLDivElement>(null);
79
+ const [selectedResponse, setSelectedResponse] = useState<string>();
80
+ const [value, setValue] = useState('');
81
+ const divRef = useRef<HTMLDivElement>(null);
80
82
 
81
- React.useEffect(() => {
83
+ useEffect(() => {
82
84
  if (focusOnLoad) {
83
85
  divRef.current?.focus();
84
86
  }
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { act, render, screen } from '@testing-library/react';
3
2
  import '@testing-library/jest-dom';
4
3
  import userEvent from '@testing-library/user-event';
@@ -1,7 +1,9 @@
1
1
  // ============================================================================
2
2
  // Chatbot Main - Messages - Feedback Complete Card
3
3
  // ============================================================================
4
- import React from 'react';
4
+ import type { MouseEvent as ReactMouseEvent, FunctionComponent } from 'react';
5
+
6
+ import { useState, useRef, useEffect } from 'react';
5
7
 
6
8
  // Import PatternFly components
7
9
  import { Card, CardBody, CardHeader, CardProps, CardTitle, OUIAProps, useOUIAProps } from '@patternfly/react-core';
@@ -46,7 +48,7 @@ export interface UserFeedbackCompleteProps extends Omit<CardProps, 'ref'>, OUIAP
46
48
  timestamp?: string;
47
49
  }
48
50
 
49
- const UserFeedbackComplete: React.FunctionComponent<UserFeedbackCompleteProps> = ({
51
+ const UserFeedbackComplete: FunctionComponent<UserFeedbackCompleteProps> = ({
50
52
  className,
51
53
  title = 'Feedback submitted',
52
54
  body = "We've received your response. Thank you for sharing your feedback!",
@@ -66,21 +68,21 @@ const UserFeedbackComplete: React.FunctionComponent<UserFeedbackCompleteProps> =
66
68
  isCompact,
67
69
  ...props
68
70
  }: UserFeedbackCompleteProps) => {
69
- const [timedOut, setTimedOut] = React.useState(false);
70
- const [timedOutAnimation, setTimedOutAnimation] = React.useState(true);
71
- const [isMouseOver, setIsMouseOver] = React.useState<boolean | undefined>();
72
- const [containsFocus, setContainsFocus] = React.useState<boolean | undefined>();
71
+ const [timedOut, setTimedOut] = useState(false);
72
+ const [timedOutAnimation, setTimedOutAnimation] = useState(true);
73
+ const [isMouseOver, setIsMouseOver] = useState<boolean | undefined>();
74
+ const [containsFocus, setContainsFocus] = useState<boolean | undefined>();
73
75
  const dismissed = timedOut && timedOutAnimation && !isMouseOver && !containsFocus;
74
- const divRef = React.useRef<HTMLDivElement>(null);
76
+ const divRef = useRef<HTMLDivElement>(null);
75
77
  const ouiaProps = useOUIAProps('User Feedback Complete', ouiaId, ouiaSafe);
76
78
 
77
- React.useEffect(() => {
79
+ useEffect(() => {
78
80
  if (focusOnLoad) {
79
81
  divRef.current?.focus();
80
82
  }
81
83
  }, []);
82
84
 
83
- React.useEffect(() => {
85
+ useEffect(() => {
84
86
  const calculatedTimeout = timeout === true ? 8000 : Number(timeout);
85
87
  if (calculatedTimeout > 0) {
86
88
  const timer = setTimeout(() => setTimedOut(true), calculatedTimeout);
@@ -88,7 +90,7 @@ const UserFeedbackComplete: React.FunctionComponent<UserFeedbackCompleteProps> =
88
90
  }
89
91
  }, [timeout]);
90
92
 
91
- React.useEffect(() => {
93
+ useEffect(() => {
92
94
  const onDocumentFocus = () => {
93
95
  if (divRef.current) {
94
96
  if (divRef.current.contains(document.activeElement)) {
@@ -103,14 +105,14 @@ const UserFeedbackComplete: React.FunctionComponent<UserFeedbackCompleteProps> =
103
105
  return () => document.removeEventListener('focus', onDocumentFocus, true);
104
106
  }, [containsFocus]);
105
107
 
106
- React.useEffect(() => {
108
+ useEffect(() => {
107
109
  if (containsFocus === false || isMouseOver === false) {
108
110
  const timer = setTimeout(() => setTimedOutAnimation(true), timeoutAnimation);
109
111
  return () => clearTimeout(timer);
110
112
  }
111
113
  }, [containsFocus, isMouseOver, timeoutAnimation]);
112
114
 
113
- React.useEffect(() => {
115
+ useEffect(() => {
114
116
  dismissed && onTimeout && onTimeout();
115
117
  }, [dismissed, onTimeout]);
116
118
 
@@ -118,13 +120,13 @@ const UserFeedbackComplete: React.FunctionComponent<UserFeedbackCompleteProps> =
118
120
  return null;
119
121
  }
120
122
 
121
- const myOnMouseEnter = (ev: React.MouseEvent<HTMLDivElement>) => {
123
+ const myOnMouseEnter = (ev: ReactMouseEvent<HTMLDivElement>) => {
122
124
  setIsMouseOver(true);
123
125
  setTimedOutAnimation(false);
124
126
  onMouseEnter && onMouseEnter(ev);
125
127
  };
126
128
 
127
- const myOnMouseLeave = (ev: React.MouseEvent<HTMLDivElement>) => {
129
+ const myOnMouseLeave = (ev: ReactMouseEvent<HTMLDivElement>) => {
128
130
  setIsMouseOver(false);
129
131
  onMouseLeave && onMouseLeave(ev);
130
132
  };
@@ -1,3 +1,4 @@
1
1
  export { default } from './Message';
2
+ export { rehypeCodeBlockToggle } from './Plugins/rehypeCodeBlockToggle';
2
3
 
3
4
  export * from './Message';
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import { render, screen } from '@testing-library/react';
3
2
  import '@testing-library/jest-dom';
4
3
  import userEvent from '@testing-library/user-event';
@@ -7,11 +6,11 @@ import { AttachButton } from './AttachButton';
7
6
  describe('Attach button', () => {
8
7
  it('should render button correctly', () => {
9
8
  render(<AttachButton />);
10
- expect(screen.getByRole('button', { name: 'Attach button' })).toBeTruthy();
9
+ expect(screen.getByRole('button', { name: 'Attach' })).toBeTruthy();
11
10
  });
12
11
  it('should handle isDisabled prop', () => {
13
12
  render(<AttachButton isDisabled />);
14
- expect(screen.getByRole('button', { name: 'Attach button' })).toBeDisabled();
13
+ expect(screen.getByRole('button', { name: 'Attach' })).toBeDisabled();
15
14
  });
16
15
  it('should handle spread props, including aria-label', () => {
17
16
  render(<AttachButton aria-label="test" />);
@@ -20,22 +19,22 @@ describe('Attach button', () => {
20
19
  it('should handle onClick', async () => {
21
20
  const spy = jest.fn();
22
21
  render(<AttachButton onClick={spy} />);
23
- await userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
22
+ await userEvent.click(screen.getByRole('button', { name: 'Attach' }));
24
23
  expect(screen.getByRole('tooltip', { name: 'Attach' })).toBeTruthy();
25
24
  expect(spy).toHaveBeenCalledTimes(1);
26
25
  });
27
26
  it('should handle className prop', () => {
28
27
  render(<AttachButton className="test" />);
29
- expect(screen.getByRole('button', { name: 'Attach button' })).toHaveClass('test');
28
+ expect(screen.getByRole('button', { name: 'Attach' })).toHaveClass('test');
30
29
  });
31
30
  it('should handle custom tooltip correctly', async () => {
32
31
  render(<AttachButton onClick={jest.fn} tooltipContent="Test" />);
33
- await userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
32
+ await userEvent.click(screen.getByRole('button', { name: 'Attach' }));
34
33
  expect(screen.getByRole('tooltip', { name: 'Test' })).toBeTruthy();
35
34
  });
36
35
  it('should handle tooltipProps prop', async () => {
37
36
  render(<AttachButton tooltipProps={{ id: 'test' }} />);
38
- await userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
37
+ await userEvent.click(screen.getByRole('button', { name: 'Attach' }));
39
38
  expect(screen.getByRole('tooltip', { name: 'Attach' })).toHaveAttribute('id', 'test');
40
39
  });
41
40
  // Based on this because I had no idea how to do this and was looking around: https://stackoverflow.com/a/75562651
@@ -43,7 +42,7 @@ describe('Attach button', () => {
43
42
  it('should handle onAttachAccepted prop', async () => {
44
43
  const spy = jest.fn();
45
44
  render(<AttachButton onAttachAccepted={spy} inputTestId="input" />);
46
- await userEvent.click(screen.getByRole('button', { name: 'Attach button' }));
45
+ await userEvent.click(screen.getByRole('button', { name: 'Attach' }));
47
46
  const file = new File(['test'], 'test.json');
48
47
  const input = screen.getByTestId('input') as HTMLInputElement;
49
48
  await userEvent.upload(input, file);
@@ -54,4 +53,124 @@ describe('Attach button', () => {
54
53
  render(<AttachButton isCompact data-testid="button" />);
55
54
  expect(screen.getByTestId('button')).toHaveClass('pf-m-compact');
56
55
  });
56
+
57
+ it('should set correct accept attribute on file input', async () => {
58
+ render(<AttachButton inputTestId="input" allowedFileTypes={{ 'text/plain': ['.txt'] }} />);
59
+ await userEvent.click(screen.getByRole('button', { name: 'Attach' }));
60
+ const input = screen.getByTestId('input') as HTMLInputElement;
61
+ expect(input).toHaveAttribute('accept', 'text/plain,.txt');
62
+ });
63
+
64
+ it('should call onAttachAccepted when file type is accepted', async () => {
65
+ const onAttachAccepted = jest.fn();
66
+ render(
67
+ <AttachButton
68
+ inputTestId="input"
69
+ allowedFileTypes={{ 'text/plain': ['.txt'] }}
70
+ onAttachAccepted={onAttachAccepted}
71
+ />
72
+ );
73
+
74
+ const file = new File(['hello'], 'example.txt', { type: 'text/plain' });
75
+ const input = screen.getByTestId('input');
76
+
77
+ await userEvent.upload(input, file);
78
+
79
+ expect(onAttachAccepted).toHaveBeenCalled();
80
+ const [attachedFile] = onAttachAccepted.mock.calls[0][0];
81
+ expect(attachedFile).toEqual(file);
82
+ });
83
+
84
+ it('should not call onAttachAccepted when file type is not accepted', async () => {
85
+ const onAttachAccepted = jest.fn();
86
+ render(
87
+ <AttachButton
88
+ inputTestId="input"
89
+ allowedFileTypes={{ 'text/plain': ['.txt'] }}
90
+ onAttachAccepted={onAttachAccepted}
91
+ />
92
+ );
93
+
94
+ const file = new File(['[]'], 'example.json', { type: 'application/json' });
95
+ const input = screen.getByTestId('input');
96
+
97
+ await userEvent.upload(input, file);
98
+
99
+ expect(onAttachAccepted).not.toHaveBeenCalled();
100
+ });
101
+
102
+ it('should respect minSize restriction', async () => {
103
+ const onAttachRejected = jest.fn();
104
+ render(<AttachButton inputTestId="input" minSize={1000} onAttachRejected={onAttachRejected} />);
105
+
106
+ const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
107
+ const input = screen.getByTestId('input');
108
+
109
+ await userEvent.upload(input, file);
110
+
111
+ expect(onAttachRejected).toHaveBeenCalled();
112
+ });
113
+
114
+ it('should respect maxSize restriction', async () => {
115
+ const onAttachRejected = jest.fn();
116
+ render(<AttachButton inputTestId="input" maxSize={100} onAttachRejected={onAttachRejected} />);
117
+
118
+ const largeContent = 'x'.repeat(200);
119
+ const file = new File([largeContent], 'example.txt', { type: 'text/plain' });
120
+ const input = screen.getByTestId('input');
121
+
122
+ await userEvent.upload(input, file);
123
+
124
+ expect(onAttachRejected).toHaveBeenCalled();
125
+ });
126
+
127
+ it('should respect maxFiles restriction', async () => {
128
+ const onAttachRejected = jest.fn();
129
+ render(<AttachButton inputTestId="input" maxFiles={1} onAttachRejected={onAttachRejected} />);
130
+
131
+ const files = [
132
+ new File(['Test1'], 'example1.txt', { type: 'text/plain' }),
133
+ new File(['Test2'], 'example2.txt', { type: 'text/plain' })
134
+ ];
135
+
136
+ const input = screen.getByTestId('input');
137
+ await userEvent.upload(input, files);
138
+
139
+ expect(onAttachRejected).toHaveBeenCalled();
140
+ });
141
+
142
+ it('should be disabled when isAttachmentDisabled is true', async () => {
143
+ const onFileDrop = jest.fn();
144
+ render(<AttachButton inputTestId="input" isAttachmentDisabled={true} />);
145
+
146
+ const file = new File(['Test'], 'example.text', { type: 'text/plain' });
147
+ const input = screen.getByTestId('input');
148
+ await userEvent.upload(input, file);
149
+
150
+ expect(onFileDrop).not.toHaveBeenCalled();
151
+ });
152
+
153
+ it('should call onAttach when files are attached', async () => {
154
+ const onAttach = jest.fn();
155
+ render(<AttachButton inputTestId="input" onAttach={onAttach} />);
156
+
157
+ const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
158
+ const input = screen.getByTestId('input');
159
+
160
+ await userEvent.upload(input, file);
161
+
162
+ expect(onAttach).toHaveBeenCalled();
163
+ });
164
+ it('should use custom validator when provided', async () => {
165
+ const validator = jest.fn().mockReturnValue({ message: 'Custom error' });
166
+ const onAttachRejected = jest.fn();
167
+ render(<AttachButton inputTestId="input" validator={validator} onAttachRejected={onAttachRejected} />);
168
+
169
+ const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
170
+ const input = screen.getByTestId('input');
171
+ await userEvent.upload(input, file);
172
+
173
+ expect(validator).toHaveBeenCalledWith(file);
174
+ expect(onAttachRejected).toHaveBeenCalled();
175
+ });
57
176
  });