@patternfly/chatbot 2.2.0-prerelease.2 → 2.2.0-prerelease.21

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 (401) hide show
  1. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  2. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +52 -0
  3. package/dist/cjs/Chatbot/Chatbot.test.d.ts +1 -0
  4. package/dist/cjs/Chatbot/Chatbot.test.js +28 -0
  5. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  6. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +27 -0
  7. package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  8. package/dist/cjs/ChatbotContent/ChatbotContent.test.js +18 -0
  9. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
  10. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +17 -1
  11. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +9 -9
  12. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +39 -3
  13. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  14. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +18 -0
  15. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  16. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +87 -0
  17. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  18. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +18 -0
  19. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  20. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +18 -0
  21. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +17 -0
  22. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +16 -0
  23. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  24. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +20 -0
  25. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  26. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +18 -0
  27. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -0
  28. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +4 -2
  29. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  30. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +20 -0
  31. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
  32. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  33. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +43 -0
  34. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +3 -1
  35. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  36. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +41 -0
  37. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  38. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +47 -0
  39. package/dist/cjs/ChatbotHeader/index.d.ts +1 -0
  40. package/dist/cjs/ChatbotHeader/index.js +1 -0
  41. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +3 -1
  42. package/dist/cjs/CodeModal/CodeModal.js +2 -12
  43. package/dist/cjs/Compare/Compare.d.ts +17 -0
  44. package/dist/cjs/Compare/Compare.js +50 -0
  45. package/dist/cjs/Compare/Compare.test.d.ts +1 -0
  46. package/dist/cjs/Compare/Compare.test.js +20 -0
  47. package/dist/cjs/Compare/index.d.ts +2 -0
  48. package/dist/cjs/Compare/index.js +23 -0
  49. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +1 -1
  50. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -2
  51. package/dist/cjs/Message/Message.d.ts +31 -7
  52. package/dist/cjs/Message/Message.js +47 -15
  53. package/dist/cjs/Message/Message.test.js +183 -3
  54. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +17 -0
  55. package/dist/cjs/Message/QuickResponse/QuickResponse.js +34 -0
  56. package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +13 -0
  57. package/dist/cjs/Message/QuickStarts/FallbackImg.js +34 -0
  58. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +27 -0
  59. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +82 -0
  60. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  61. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +64 -0
  62. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  63. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +76 -0
  64. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  65. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +30 -0
  66. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  67. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +77 -0
  68. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  69. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.js +77 -0
  70. package/dist/cjs/Message/QuickStarts/types.d.ts +132 -0
  71. package/dist/cjs/Message/QuickStarts/types.js +17 -0
  72. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +20 -0
  73. package/dist/cjs/Message/TableMessage/TableMessage.js +67 -0
  74. package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +7 -0
  75. package/dist/cjs/Message/TableMessage/TbodyMessage.js +33 -0
  76. package/dist/cjs/Message/TableMessage/TdMessage.d.ts +5 -0
  77. package/dist/cjs/Message/TableMessage/TdMessage.js +26 -0
  78. package/dist/cjs/Message/TableMessage/ThMessage.d.ts +5 -0
  79. package/dist/cjs/Message/TableMessage/ThMessage.js +26 -0
  80. package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +5 -0
  81. package/dist/cjs/Message/TableMessage/TheadMessage.js +26 -0
  82. package/dist/cjs/Message/TableMessage/TrMessage.d.ts +7 -0
  83. package/dist/cjs/Message/TableMessage/TrMessage.js +37 -0
  84. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +2 -1
  85. package/dist/cjs/Message/TextMessage/TextMessage.js +2 -2
  86. package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +10 -0
  87. package/dist/cjs/Message/UserFeedback/CloseButton.js +14 -0
  88. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +39 -0
  89. package/dist/cjs/Message/UserFeedback/UserFeedback.js +55 -0
  90. package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  91. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +146 -0
  92. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  93. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +117 -0
  94. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  95. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +249 -0
  96. package/dist/cjs/MessageBar/AttachButton.js +4 -2
  97. package/dist/cjs/MessageBar/MessageBar.js +9 -12
  98. package/dist/cjs/MessageBar/MessageBar.test.js +4 -4
  99. package/dist/cjs/MessageBar/SendButton.js +3 -1
  100. package/dist/cjs/MessageBar/StopButton.js +3 -1
  101. package/dist/cjs/MessageBox/MessageBox.test.d.ts +1 -0
  102. package/dist/cjs/MessageBox/MessageBox.test.js +22 -0
  103. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  104. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +28 -0
  105. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +10 -1
  106. package/dist/cjs/ResponseActions/ResponseActionButton.js +28 -5
  107. package/dist/cjs/ResponseActions/ResponseActionButton.test.d.ts +1 -0
  108. package/dist/cjs/ResponseActions/ResponseActionButton.test.js +54 -0
  109. package/dist/cjs/ResponseActions/ResponseActions.d.ts +12 -2
  110. package/dist/cjs/ResponseActions/ResponseActions.js +26 -9
  111. package/dist/cjs/ResponseActions/ResponseActions.test.js +79 -5
  112. package/dist/cjs/Settings/SettingsForm.d.ts +13 -0
  113. package/dist/cjs/Settings/SettingsForm.js +27 -0
  114. package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -0
  115. package/dist/cjs/Settings/SettingsForm.test.js +26 -0
  116. package/dist/cjs/Settings/index.d.ts +2 -0
  117. package/dist/cjs/Settings/index.js +23 -0
  118. package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +34 -0
  119. package/dist/cjs/TermsOfUse/TermsOfUse.js +49 -0
  120. package/dist/cjs/TermsOfUse/TermsOfUse.test.d.ts +1 -0
  121. package/dist/cjs/TermsOfUse/TermsOfUse.test.js +79 -0
  122. package/dist/cjs/TermsOfUse/index.d.ts +2 -0
  123. package/dist/cjs/TermsOfUse/index.js +23 -0
  124. package/dist/cjs/index.d.ts +6 -0
  125. package/dist/cjs/index.js +10 -1
  126. package/dist/css/main.css +400 -102
  127. package/dist/css/main.css.map +1 -1
  128. package/dist/dynamic/Compare/package.json +1 -0
  129. package/dist/dynamic/Settings/package.json +1 -0
  130. package/dist/dynamic/TermsOfUse/package.json +1 -0
  131. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  132. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +47 -0
  133. package/dist/esm/Chatbot/Chatbot.test.d.ts +1 -0
  134. package/dist/esm/Chatbot/Chatbot.test.js +23 -0
  135. package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  136. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +22 -0
  137. package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  138. package/dist/esm/ChatbotContent/ChatbotContent.test.js +13 -0
  139. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
  140. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +17 -1
  141. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +9 -9
  142. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +39 -3
  143. package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  144. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +13 -0
  145. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  146. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +82 -0
  147. package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  148. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +13 -0
  149. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  150. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +13 -0
  151. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +17 -0
  152. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +10 -0
  153. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  154. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +15 -0
  155. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  156. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +13 -0
  157. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -0
  158. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +4 -2
  159. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  160. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +15 -0
  161. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
  162. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  163. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +38 -0
  164. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +3 -1
  165. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  166. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +36 -0
  167. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  168. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +42 -0
  169. package/dist/esm/ChatbotHeader/index.d.ts +1 -0
  170. package/dist/esm/ChatbotHeader/index.js +1 -0
  171. package/dist/esm/ChatbotToggle/ChatbotToggle.js +3 -1
  172. package/dist/esm/CodeModal/CodeModal.js +2 -12
  173. package/dist/esm/Compare/Compare.d.ts +17 -0
  174. package/dist/esm/Compare/Compare.js +43 -0
  175. package/dist/esm/Compare/Compare.test.d.ts +1 -0
  176. package/dist/esm/Compare/Compare.test.js +15 -0
  177. package/dist/esm/Compare/index.d.ts +2 -0
  178. package/dist/esm/Compare/index.js +2 -0
  179. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +1 -1
  180. package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -2
  181. package/dist/esm/Message/Message.d.ts +31 -7
  182. package/dist/esm/Message/Message.js +45 -13
  183. package/dist/esm/Message/Message.test.js +183 -3
  184. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +17 -0
  185. package/dist/esm/Message/QuickResponse/QuickResponse.js +27 -0
  186. package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +13 -0
  187. package/dist/esm/Message/QuickStarts/FallbackImg.js +9 -0
  188. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +27 -0
  189. package/dist/esm/Message/QuickStarts/QuickStartTile.js +52 -0
  190. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  191. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +35 -0
  192. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  193. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +48 -0
  194. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  195. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +5 -0
  196. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  197. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +74 -0
  198. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  199. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.js +74 -0
  200. package/dist/esm/Message/QuickStarts/types.d.ts +132 -0
  201. package/dist/esm/Message/QuickStarts/types.js +14 -0
  202. package/dist/esm/Message/TableMessage/TableMessage.d.ts +20 -0
  203. package/dist/esm/Message/TableMessage/TableMessage.js +62 -0
  204. package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +7 -0
  205. package/dist/esm/Message/TableMessage/TbodyMessage.js +28 -0
  206. package/dist/esm/Message/TableMessage/TdMessage.d.ts +5 -0
  207. package/dist/esm/Message/TableMessage/TdMessage.js +21 -0
  208. package/dist/esm/Message/TableMessage/ThMessage.d.ts +5 -0
  209. package/dist/esm/Message/TableMessage/ThMessage.js +21 -0
  210. package/dist/esm/Message/TableMessage/TheadMessage.d.ts +5 -0
  211. package/dist/esm/Message/TableMessage/TheadMessage.js +21 -0
  212. package/dist/esm/Message/TableMessage/TrMessage.d.ts +7 -0
  213. package/dist/esm/Message/TableMessage/TrMessage.js +32 -0
  214. package/dist/esm/Message/TextMessage/TextMessage.d.ts +2 -1
  215. package/dist/esm/Message/TextMessage/TextMessage.js +3 -3
  216. package/dist/esm/Message/UserFeedback/CloseButton.d.ts +10 -0
  217. package/dist/esm/Message/UserFeedback/CloseButton.js +9 -0
  218. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +39 -0
  219. package/dist/esm/Message/UserFeedback/UserFeedback.js +50 -0
  220. package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  221. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +141 -0
  222. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  223. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +112 -0
  224. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  225. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +244 -0
  226. package/dist/esm/MessageBar/AttachButton.js +4 -2
  227. package/dist/esm/MessageBar/MessageBar.js +9 -12
  228. package/dist/esm/MessageBar/MessageBar.test.js +4 -4
  229. package/dist/esm/MessageBar/SendButton.js +3 -1
  230. package/dist/esm/MessageBar/StopButton.js +3 -1
  231. package/dist/esm/MessageBox/MessageBox.test.d.ts +1 -0
  232. package/dist/esm/MessageBox/MessageBox.test.js +17 -0
  233. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  234. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +23 -0
  235. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +10 -1
  236. package/dist/esm/ResponseActions/ResponseActionButton.js +25 -2
  237. package/dist/esm/ResponseActions/ResponseActionButton.test.d.ts +1 -0
  238. package/dist/esm/ResponseActions/ResponseActionButton.test.js +49 -0
  239. package/dist/esm/ResponseActions/ResponseActions.d.ts +12 -2
  240. package/dist/esm/ResponseActions/ResponseActions.js +26 -9
  241. package/dist/esm/ResponseActions/ResponseActions.test.js +79 -5
  242. package/dist/esm/Settings/SettingsForm.d.ts +13 -0
  243. package/dist/esm/Settings/SettingsForm.js +20 -0
  244. package/dist/esm/Settings/SettingsForm.test.d.ts +1 -0
  245. package/dist/esm/Settings/SettingsForm.test.js +21 -0
  246. package/dist/esm/Settings/index.d.ts +2 -0
  247. package/dist/esm/Settings/index.js +2 -0
  248. package/dist/esm/TermsOfUse/TermsOfUse.d.ts +34 -0
  249. package/dist/esm/TermsOfUse/TermsOfUse.js +42 -0
  250. package/dist/esm/TermsOfUse/TermsOfUse.test.d.ts +1 -0
  251. package/dist/esm/TermsOfUse/TermsOfUse.test.js +74 -0
  252. package/dist/esm/TermsOfUse/index.d.ts +2 -0
  253. package/dist/esm/TermsOfUse/index.js +2 -0
  254. package/dist/esm/index.d.ts +6 -0
  255. package/dist/esm/index.js +6 -0
  256. package/dist/tsconfig.tsbuildinfo +1 -1
  257. package/package.json +7 -13
  258. package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +5 -2
  259. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +41 -4
  260. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +168 -13
  261. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +4 -0
  262. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +71 -0
  263. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +27 -0
  264. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +31 -0
  265. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +63 -11
  266. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +208 -12
  267. package/patternfly-docs/content/extensions/chatbot/examples/Messages/explore-pipeline-quickstart.ts +65 -0
  268. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +1 -1
  269. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +2 -2
  270. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +2 -2
  271. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +67 -0
  272. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +94 -0
  273. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +1 -1
  274. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-TermsAndConditionsHeader.svg +148 -0
  275. package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +289 -0
  276. package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +1 -1
  277. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUse.tsx +147 -0
  278. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +49 -6
  279. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +14 -0
  280. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +26 -3
  281. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +2 -2
  282. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +20 -19
  283. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +2 -2
  284. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +2 -2
  285. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +206 -0
  286. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +104 -0
  287. package/patternfly-docs/content/extensions/chatbot/img/attached-file.svg +24 -29
  288. package/patternfly-docs/content/extensions/chatbot/img/attachment-menu.svg +4 -4
  289. package/patternfly-docs/content/extensions/chatbot/img/attachment-unsent.svg +30 -57
  290. package/patternfly-docs/content/extensions/chatbot/img/chatbot-elements.svg +5 -5
  291. package/patternfly-docs/content/extensions/chatbot/img/chatbot-quickstarts-tile.svg +58 -0
  292. package/patternfly-docs/content/extensions/chatbot/img/chatbot-settings.svg +83 -0
  293. package/patternfly-docs/content/extensions/chatbot/img/conversation-history.svg +6 -29
  294. package/patternfly-docs/content/extensions/chatbot/img/docked.svg +68 -49
  295. package/patternfly-docs/content/extensions/chatbot/img/footnote.svg +1 -1
  296. package/patternfly-docs/content/extensions/chatbot/img/fullscreen.svg +25 -16
  297. package/patternfly-docs/content/extensions/chatbot/img/listening.svg +1 -1
  298. package/patternfly-docs/content/extensions/chatbot/img/message-bar-elements.svg +3 -3
  299. package/patternfly-docs/content/extensions/chatbot/img/message-elements.svg +85 -142
  300. package/patternfly-docs/content/extensions/chatbot/img/overlay.svg +52 -36
  301. package/patternfly-docs/content/extensions/chatbot/img/settings-menu.svg +122 -0
  302. package/patternfly-docs/content/extensions/chatbot/img/source-tile.svg +62 -0
  303. package/patternfly-docs/content/extensions/chatbot/img/toggle-customizations.svg +12 -0
  304. package/src/AttachMenu/AttachMenu.scss +1 -1
  305. package/src/AttachmentEdit/AttachmentEdit.test.tsx +55 -0
  306. package/src/Chatbot/Chatbot.test.tsx +31 -0
  307. package/src/ChatbotAlert/ChatbotAlert.test.tsx +31 -0
  308. package/src/ChatbotContent/ChatbotContent.test.tsx +15 -0
  309. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +7 -1
  310. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +8 -1
  311. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +112 -3
  312. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +41 -8
  313. package/src/ChatbotFooter/ChatbotFooter.scss +2 -6
  314. package/src/ChatbotFooter/ChatbotFooter.test.tsx +15 -0
  315. package/src/ChatbotFooter/ChatbotFooternote.test.tsx +84 -0
  316. package/src/ChatbotHeader/ChatbotHeader.scss +2 -5
  317. package/src/ChatbotHeader/ChatbotHeader.test.tsx +15 -0
  318. package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +17 -0
  319. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +20 -0
  320. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +57 -0
  321. package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +17 -0
  322. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +19 -0
  323. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +11 -2
  324. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +45 -0
  325. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +8 -1
  326. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +43 -0
  327. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +8 -1
  328. package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +59 -0
  329. package/src/ChatbotHeader/index.ts +1 -0
  330. package/src/ChatbotModal/ChatbotModal.scss +1 -1
  331. package/src/ChatbotToggle/ChatbotToggle.tsx +6 -1
  332. package/src/CodeModal/CodeModal.scss +9 -1
  333. package/src/CodeModal/CodeModal.tsx +2 -13
  334. package/src/Compare/Compare.scss +72 -0
  335. package/src/Compare/Compare.test.tsx +31 -0
  336. package/src/Compare/Compare.tsx +98 -0
  337. package/src/Compare/index.ts +2 -0
  338. package/src/FileDetails/FileDetails.scss +1 -1
  339. package/src/FileDropZone/__snapshots__/FileDropZone.test.tsx.snap +1 -1
  340. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +4 -4
  341. package/src/Message/ListMessage/ListMessage.scss +5 -5
  342. package/src/Message/ListMessage/OrderedListMessage.tsx +2 -2
  343. package/src/Message/Message.scss +4 -26
  344. package/src/Message/Message.test.tsx +215 -3
  345. package/src/Message/Message.tsx +94 -23
  346. package/src/Message/MessageLoading.scss +2 -2
  347. package/src/Message/QuickResponse/QuickResponse.scss +33 -0
  348. package/src/Message/QuickResponse/QuickResponse.tsx +54 -0
  349. package/src/Message/QuickStarts/FallbackImg.tsx +24 -0
  350. package/src/Message/QuickStarts/QuickStartTile.scss +24 -0
  351. package/src/Message/QuickStarts/QuickStartTile.tsx +147 -0
  352. package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +57 -0
  353. package/src/Message/QuickStarts/QuickStartTileDescription.tsx +81 -0
  354. package/src/Message/QuickStarts/QuickStartTileHeader.tsx +21 -0
  355. package/src/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.ts +75 -0
  356. package/src/Message/QuickStarts/monitor-sampleapp-quickstart.ts +75 -0
  357. package/src/Message/QuickStarts/types.ts +154 -0
  358. package/src/Message/TableMessage/TableMessage.scss +23 -0
  359. package/src/Message/TableMessage/TableMessage.tsx +83 -0
  360. package/src/Message/TableMessage/TbodyMessage.tsx +20 -0
  361. package/src/Message/TableMessage/TdMessage.tsx +11 -0
  362. package/src/Message/TableMessage/ThMessage.tsx +11 -0
  363. package/src/Message/TableMessage/TheadMessage.tsx +11 -0
  364. package/src/Message/TableMessage/TrMessage.tsx +27 -0
  365. package/src/Message/TextMessage/TextMessage.scss +13 -11
  366. package/src/Message/TextMessage/TextMessage.tsx +3 -3
  367. package/src/Message/UserFeedback/CloseButton.tsx +21 -0
  368. package/src/Message/UserFeedback/UserFeedback.scss +53 -0
  369. package/src/Message/UserFeedback/UserFeedback.test.tsx +257 -0
  370. package/src/Message/UserFeedback/UserFeedback.tsx +132 -0
  371. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +255 -0
  372. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +211 -0
  373. package/src/MessageBar/AttachButton.scss +19 -3
  374. package/src/MessageBar/AttachButton.tsx +3 -1
  375. package/src/MessageBar/MessageBar.scss +3 -2
  376. package/src/MessageBar/MessageBar.test.tsx +4 -4
  377. package/src/MessageBar/MessageBar.tsx +9 -12
  378. package/src/MessageBar/MicrophoneButton.scss +8 -8
  379. package/src/MessageBar/SendButton.tsx +2 -0
  380. package/src/MessageBar/StopButton.scss +17 -3
  381. package/src/MessageBar/StopButton.tsx +2 -0
  382. package/src/MessageBox/JumpButton.scss +6 -6
  383. package/src/MessageBox/MessageBox.test.tsx +26 -0
  384. package/src/PreviewAttachment/PreviewAttachment.test.tsx +51 -0
  385. package/src/ResponseActions/ResponseActionButton.test.tsx +52 -0
  386. package/src/ResponseActions/ResponseActionButton.tsx +59 -28
  387. package/src/ResponseActions/ResponseActions.scss +11 -9
  388. package/src/ResponseActions/ResponseActions.test.tsx +103 -5
  389. package/src/ResponseActions/ResponseActions.tsx +80 -9
  390. package/src/Settings/Settings.scss +34 -0
  391. package/src/Settings/SettingsForm.test.tsx +28 -0
  392. package/src/Settings/SettingsForm.tsx +25 -0
  393. package/src/Settings/index.ts +3 -0
  394. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.scss +1 -1
  395. package/src/SourcesCard/SourcesCard.scss +2 -2
  396. package/src/TermsOfUse/TermsOfUse.scss +66 -0
  397. package/src/TermsOfUse/TermsOfUse.test.tsx +138 -0
  398. package/src/TermsOfUse/TermsOfUse.tsx +117 -0
  399. package/src/TermsOfUse/index.ts +3 -0
  400. package/src/index.ts +9 -0
  401. package/src/main.scss +7 -4
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const AttachmentEdit_1 = __importDefault(require("./AttachmentEdit"));
9
+ describe('AttachmentEdit', () => {
10
+ it('should open AttachmentEdit modal', () => {
11
+ const props = {
12
+ code: 'code',
13
+ fileName: 'fileName',
14
+ onCancel: jest.fn(),
15
+ onSave: jest.fn(),
16
+ isModalOpen: true,
17
+ handleModalToggle: jest.fn()
18
+ };
19
+ (0, react_2.render)(react_1.default.createElement(AttachmentEdit_1.default, Object.assign({}, props)));
20
+ expect(react_2.screen.getByText('Edit attachment')).toBeTruthy();
21
+ });
22
+ it('should call onSave handler when the save button is clicked', () => {
23
+ const onSaveHandler = jest.fn();
24
+ const props = {
25
+ code: 'code',
26
+ fileName: 'fileName',
27
+ onCancel: jest.fn(),
28
+ onSave: onSaveHandler,
29
+ isModalOpen: true,
30
+ handleModalToggle: jest.fn()
31
+ };
32
+ (0, react_2.render)(react_1.default.createElement(AttachmentEdit_1.default, Object.assign({}, props)));
33
+ // Click on save button
34
+ react_2.fireEvent.click(react_2.screen.getByText('Save'));
35
+ expect(onSaveHandler).toHaveBeenCalledWith(expect.any(Object), 'code');
36
+ });
37
+ it('should call cancel handler when the cancel button is clicked', () => {
38
+ const onCancelHandler = jest.fn();
39
+ const props = {
40
+ code: 'code',
41
+ fileName: 'fileName',
42
+ onCancel: onCancelHandler,
43
+ onSave: jest.fn(),
44
+ isModalOpen: true,
45
+ handleModalToggle: jest.fn()
46
+ };
47
+ (0, react_2.render)(react_1.default.createElement(AttachmentEdit_1.default, Object.assign({}, props)));
48
+ // Click on cancel button
49
+ react_2.fireEvent.click(react_2.screen.getByText('Cancel'));
50
+ expect(onCancelHandler).toHaveBeenCalled();
51
+ });
52
+ });
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ require("@testing-library/jest-dom");
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_2 = require("@testing-library/react");
9
+ const Chatbot_1 = __importDefault(require("./Chatbot"));
10
+ describe('Chatbot', () => {
11
+ it('should render Chatbot with default display mode', () => {
12
+ (0, react_2.render)(react_1.default.createElement(Chatbot_1.default, null, "Chatbot Content"));
13
+ expect(react_2.screen.getByText('Chatbot Content')).toBeTruthy();
14
+ });
15
+ it('should render Chatbot with custom ariaLabel', () => {
16
+ (0, react_2.render)(react_1.default.createElement(Chatbot_1.default, { ariaLabel: "Chatbot" }, "Chatbot Content"));
17
+ expect(react_2.screen.getByLabelText('Chatbot')).toBeTruthy();
18
+ });
19
+ it('should render Chatbot with custom className', () => {
20
+ const { container } = (0, react_2.render)(react_1.default.createElement(Chatbot_1.default, { ariaLabel: "Chatbot", className: "custom-class" }, "Chatbot Content"));
21
+ const chatbotElement = container.querySelector('.custom-class');
22
+ expect(chatbotElement).toBeInTheDocument();
23
+ });
24
+ it('should not render Chatbot', () => {
25
+ (0, react_2.render)(react_1.default.createElement(Chatbot_1.default, { isVisible: false }, "Chatbot Content"));
26
+ expect(react_2.screen.queryByLabelText('Chatbot')).toBeFalsy();
27
+ });
28
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotAlert_1 = __importDefault(require("./ChatbotAlert"));
9
+ describe('ChatbotAlert', () => {
10
+ it('should render ChatbotAlert with default variant', () => {
11
+ (0, react_2.render)(react_1.default.createElement(ChatbotAlert_1.default, { title: "Chatbot Alert" }));
12
+ expect(react_2.screen.getByText('Chatbot Alert')).toBeTruthy();
13
+ });
14
+ it('should render ChatbotAlert with children', () => {
15
+ (0, react_2.render)(react_1.default.createElement(ChatbotAlert_1.default, { title: "Chatbot Alert" }, "Chatbot Alert Content"));
16
+ expect(react_2.screen.getByText('Chatbot Alert Content')).toBeTruthy();
17
+ });
18
+ it('should call onClose handler when onClose button is clicked', () => {
19
+ const onCloseHandler = jest.fn();
20
+ (0, react_2.render)(react_1.default.createElement(ChatbotAlert_1.default, { title: "Chatbot Alert", onClose: onCloseHandler }, "Chatbot Alert Content"));
21
+ expect(react_2.screen.getByText('Chatbot Alert')).toBeTruthy();
22
+ expect(react_2.screen.getByText('Chatbot Alert Content')).toBeTruthy();
23
+ // click on the close button
24
+ react_2.fireEvent.click(react_2.screen.getByRole('button'));
25
+ expect(onCloseHandler).toHaveBeenCalled();
26
+ });
27
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotContent_1 = __importDefault(require("./ChatbotContent"));
9
+ describe('ChatbotContent', () => {
10
+ it('should render ChatbotContent with children', () => {
11
+ (0, react_2.render)(react_1.default.createElement(ChatbotContent_1.default, null, "Chatbot Content"));
12
+ expect(react_2.screen.getByText('Chatbot Content')).toBeTruthy();
13
+ });
14
+ it('should render ChatbotContent with custom classname', () => {
15
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotContent_1.default, { className: "custom-class" }, "Chatbot Content"));
16
+ expect(container.querySelector('.custom-class')).toBeTruthy();
17
+ });
18
+ });
@@ -13,7 +13,9 @@ const react_core_1 = require("@patternfly/react-core");
13
13
  const ellipsis_v_icon_1 = __importDefault(require("@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon"));
14
14
  const ChatbotConversationHistoryDropdown = ({ menuItems, menuClassName, onSelect, label }) => {
15
15
  const [isOpen, setIsOpen] = react_1.default.useState(false);
16
- const toggle = (toggleRef) => (react_1.default.createElement(react_core_1.Tooltip, { className: "pf-chatbot__tooltip", content: label !== null && label !== void 0 ? label : 'Conversation options', position: "bottom" },
16
+ const toggle = (toggleRef) => (react_1.default.createElement(react_core_1.Tooltip, { className: "pf-chatbot__tooltip", content: label !== null && label !== void 0 ? label : 'Conversation options', position: "bottom",
17
+ // prevents VO announcements of both aria label and tooltip
18
+ aria: "none" },
17
19
  react_1.default.createElement(react_core_1.MenuToggle, { className: "pf-chatbot__history-actions", variant: "plain", "aria-label": label !== null && label !== void 0 ? label : 'Conversation options', ref: toggleRef, isExpanded: isOpen, onClick: () => setIsOpen(!isOpen), role: "menuitem" },
18
20
  react_1.default.createElement(ellipsis_v_icon_1.default, null))));
19
21
  return (react_1.default.createElement(react_core_1.Dropdown, { className: `pf-chatbot__selections ${menuClassName !== null && menuClassName !== void 0 ? menuClassName : ''}`, isOpen: isOpen, onSelect: (props) => {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DrawerProps, MenuItemProps } from '@patternfly/react-core';
2
+ import { DrawerProps, MenuItemProps, MenuProps, DrawerPanelContentProps, DrawerContentProps, DrawerContentBodyProps, DrawerHeadProps, DrawerActionsProps, DrawerCloseButtonProps, DrawerPanelBodyProps } from '@patternfly/react-core';
3
3
  import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
4
4
  export interface Conversation {
5
5
  /** Conversation id */
@@ -53,6 +53,22 @@ export interface ChatbotConversationHistoryNavProps extends DrawerProps {
53
53
  reverseButtonOrder?: boolean;
54
54
  /** Custom test id for the drawer actions */
55
55
  drawerActionsTestId?: string;
56
+ /** Additional props applied to menu */
57
+ menuProps?: MenuProps;
58
+ /** Additional props applied to panel */
59
+ drawerPanelContentProps?: DrawerPanelContentProps;
60
+ /** Additional props applied to drawer content */
61
+ drawerContentProps?: Omit<DrawerContentProps, 'panelContent'>;
62
+ /** Additional props applied to drawer content body */
63
+ drawerContentBodyProps?: DrawerContentBodyProps;
64
+ /** Additional props applied to drawer head */
65
+ drawerHeadProps?: DrawerHeadProps;
66
+ /** Additional props applied to drawer actions */
67
+ drawerActionsProps?: DrawerActionsProps;
68
+ /** Additional props applied to drawer close button */
69
+ drawerCloseButtonProps?: DrawerCloseButtonProps;
70
+ /** Additional props appleid to drawer panel body */
71
+ drawerPanelBodyProps?: DrawerPanelBodyProps;
56
72
  }
57
73
  export declare const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConversationHistoryNavProps>;
58
74
  export default ChatbotConversationHistoryNav;
@@ -25,7 +25,7 @@ const react_icons_1 = require("@patternfly/react-icons");
25
25
  const Chatbot_1 = require("../Chatbot/Chatbot");
26
26
  const ChatbotConversationHistoryDropdown_1 = __importDefault(require("./ChatbotConversationHistoryDropdown"));
27
27
  const ChatbotConversationHistoryNav = (_a) => {
28
- var { onDrawerToggle, isDrawerOpen, setIsDrawerOpen, activeItemId, onSelectActiveItem, conversations, newChatButtonText = 'New chat', drawerContent, onNewChat, searchInputPlaceholder = 'Search...', searchInputAriaLabel = 'Filter menu items', handleTextInputChange, displayMode, reverseButtonOrder = false, drawerActionsTestId = 'chatbot-nav-drawer-actions' } = _a, props = __rest(_a, ["onDrawerToggle", "isDrawerOpen", "setIsDrawerOpen", "activeItemId", "onSelectActiveItem", "conversations", "newChatButtonText", "drawerContent", "onNewChat", "searchInputPlaceholder", "searchInputAriaLabel", "handleTextInputChange", "displayMode", "reverseButtonOrder", "drawerActionsTestId"]);
28
+ var { onDrawerToggle, isDrawerOpen, setIsDrawerOpen, activeItemId, onSelectActiveItem, conversations, newChatButtonText = 'New chat', drawerContent, onNewChat, searchInputPlaceholder = 'Search...', searchInputAriaLabel = 'Filter menu items', handleTextInputChange, displayMode, reverseButtonOrder = false, drawerActionsTestId = 'chatbot-nav-drawer-actions', menuProps, drawerPanelContentProps, drawerContentProps, drawerContentBodyProps, drawerHeadProps, drawerActionsProps, drawerCloseButtonProps, drawerPanelBodyProps } = _a, props = __rest(_a, ["onDrawerToggle", "isDrawerOpen", "setIsDrawerOpen", "activeItemId", "onSelectActiveItem", "conversations", "newChatButtonText", "drawerContent", "onNewChat", "searchInputPlaceholder", "searchInputAriaLabel", "handleTextInputChange", "displayMode", "reverseButtonOrder", "drawerActionsTestId", "menuProps", "drawerPanelContentProps", "drawerContentProps", "drawerContentBodyProps", "drawerHeadProps", "drawerActionsProps", "drawerCloseButtonProps", "drawerPanelBodyProps"]);
29
29
  const drawerRef = react_1.default.useRef(null);
30
30
  const onExpand = () => {
31
31
  drawerRef.current && drawerRef.current.focus();
@@ -52,16 +52,16 @@ const ChatbotConversationHistoryNav = (_a) => {
52
52
  // Menu Content
53
53
  // - Consumers should pass an array to <Chatbot> of the list of conversations
54
54
  // - Groups could be optional, but items need to be ordered by date
55
- const menuContent = (react_1.default.createElement(react_core_1.Menu, { isPlain: true, onSelect: onSelectActiveItem, activeItemId: activeItemId },
55
+ const menuContent = (react_1.default.createElement(react_core_1.Menu, Object.assign({ isPlain: true, onSelect: onSelectActiveItem, activeItemId: activeItemId }, menuProps),
56
56
  react_1.default.createElement(react_core_1.MenuContent, null, buildMenu())));
57
- const panelContent = (react_1.default.createElement(react_core_1.DrawerPanelContent, { focusTrap: { enabled: true }, minSize: "384px", maxSize: "384px" },
58
- react_1.default.createElement(react_core_1.DrawerHead, null,
59
- react_1.default.createElement(react_core_1.DrawerActions, { "data-testid": drawerActionsTestId, className: reverseButtonOrder ? 'pf-v6-c-drawer__actions--reversed' : '' },
60
- react_1.default.createElement(react_core_1.DrawerCloseButton, { onClick: onDrawerToggle }),
57
+ const panelContent = (react_1.default.createElement(react_core_1.DrawerPanelContent, Object.assign({ focusTrap: { enabled: true }, defaultSize: "384px" }, drawerPanelContentProps),
58
+ react_1.default.createElement(react_core_1.DrawerHead, Object.assign({}, drawerHeadProps),
59
+ react_1.default.createElement(react_core_1.DrawerActions, Object.assign({ "data-testid": drawerActionsTestId, className: reverseButtonOrder ? 'pf-v6-c-drawer__actions--reversed' : '' }, drawerActionsProps),
60
+ react_1.default.createElement(react_core_1.DrawerCloseButton, Object.assign({ onClick: onDrawerToggle }, drawerCloseButtonProps)),
61
61
  onNewChat && react_1.default.createElement(react_core_1.Button, { onClick: onNewChat }, newChatButtonText))),
62
62
  handleTextInputChange && (react_1.default.createElement("div", { className: "pf-chatbot__input" },
63
63
  react_1.default.createElement(react_core_1.SearchInput, { "aria-label": searchInputAriaLabel, onChange: (_event, value) => handleTextInputChange(value), placeholder: searchInputPlaceholder }))),
64
- react_1.default.createElement(react_core_1.DrawerPanelBody, null, menuContent)));
64
+ react_1.default.createElement(react_core_1.DrawerPanelBody, Object.assign({}, drawerPanelBodyProps), menuContent)));
65
65
  // An onKeyDown property must be passed to the Drawer component to handle closing
66
66
  // the drawer panel and deactivating the focus trap via the Escape key.
67
67
  const onEscape = (event) => {
@@ -73,8 +73,8 @@ const ChatbotConversationHistoryNav = (_a) => {
73
73
  }
74
74
  };
75
75
  return (react_1.default.createElement(react_core_1.Drawer, Object.assign({ className: "pf-chatbot__history", isExpanded: isDrawerOpen, onExpand: onExpand, position: "start", onKeyDown: onEscape, isInline: displayMode === Chatbot_1.ChatbotDisplayMode.fullscreen || displayMode === Chatbot_1.ChatbotDisplayMode.embedded }, props),
76
- react_1.default.createElement(react_core_1.DrawerContent, { panelContent: panelContent },
77
- react_1.default.createElement(react_core_1.DrawerContentBody, null,
76
+ react_1.default.createElement(react_core_1.DrawerContent, Object.assign({ panelContent: panelContent }, drawerContentProps),
77
+ react_1.default.createElement(react_core_1.DrawerContentBody, Object.assign({}, drawerContentBodyProps),
78
78
  react_1.default.createElement(react_1.default.Fragment, null,
79
79
  react_1.default.createElement("div", { className: `${isDrawerOpen && (displayMode === Chatbot_1.ChatbotDisplayMode.default || displayMode === Chatbot_1.ChatbotDisplayMode.docked) ? 'pf-v6-c-backdrop pf-chatbot__drawer-backdrop' : undefined} ` }),
80
80
  drawerContent)))));
@@ -22,12 +22,12 @@ describe('ChatbotConversationHistoryNav', () => {
22
22
  const initialConversations = [
23
23
  {
24
24
  id: '1',
25
- text: 'Lightspeed documentation'
25
+ text: 'ChatBot documentation'
26
26
  }
27
27
  ];
28
28
  it('should open the conversation history navigation drawer', () => {
29
29
  (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations }));
30
- expect(react_2.screen.queryByText('Lightspeed documentation')).toBeInTheDocument();
30
+ expect(react_2.screen.queryByText('ChatBot documentation')).toBeInTheDocument();
31
31
  });
32
32
  it('should display the conversations for grouped conversations', () => {
33
33
  const groupedConversations = {
@@ -63,7 +63,43 @@ describe('ChatbotConversationHistoryNav', () => {
63
63
  charCode: 27
64
64
  });
65
65
  (0, react_2.waitFor)(() => {
66
- expect(react_2.screen.queryByText('Lightspeed documentation')).not.toBeInTheDocument();
66
+ expect(react_2.screen.queryByText('ChatBot documentation')).not.toBeInTheDocument();
67
67
  });
68
68
  }));
69
+ it('should be resizable', () => {
70
+ (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerPanelContentProps: { isResizable: true, minSize: '200px' } }));
71
+ expect(react_2.screen.getByRole('dialog', { name: /Resize/i })).toBeTruthy();
72
+ expect(react_2.screen.getByRole('separator', { name: /Resize/i })).toBeTruthy();
73
+ expect(react_2.screen.getByRole('dialog', { name: /Resize/i })).toHaveAttribute('style', '--pf-v6-c-drawer__panel--md--FlexBasis: 384px; --pf-v6-c-drawer__panel--md--FlexBasis--min: 200px;');
74
+ });
75
+ it('should accept drawerContentProps', () => {
76
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerContentProps: { className: 'test' } }));
77
+ const element = container.querySelector('.test');
78
+ expect(element).toBeInTheDocument();
79
+ });
80
+ it('should accept drawerContentBodyProps', () => {
81
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerContentBodyProps: { className: 'test' } }));
82
+ const element = container.querySelector('.test');
83
+ expect(element).toBeInTheDocument();
84
+ });
85
+ it('should accept drawerHeadProps', () => {
86
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerHeadProps: { className: 'test' } }));
87
+ const element = container.querySelector('.test');
88
+ expect(element).toBeInTheDocument();
89
+ });
90
+ it('should accept drawerActionsProps', () => {
91
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerActionsProps: { className: 'test' } }));
92
+ const element = container.querySelector('.test');
93
+ expect(element).toBeInTheDocument();
94
+ });
95
+ it('should accept drawerCloseButtonProps', () => {
96
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerCloseButtonProps: { className: 'test' } }));
97
+ const element = container.querySelector('.test');
98
+ expect(element).toBeInTheDocument();
99
+ });
100
+ it('should accept drawerPanelBodyProps', () => {
101
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotConversationHistoryNav_1.default, { onDrawerToggle: onDrawerToggle, isDrawerOpen: true, displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, setIsDrawerOpen: jest.fn(), conversations: initialConversations, drawerPanelBodyProps: { className: 'test' } }));
102
+ const element = container.querySelector('.test');
103
+ expect(element).toBeInTheDocument();
104
+ });
69
105
  });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotFooter_1 = __importDefault(require("./ChatbotFooter"));
9
+ describe('ChatbotFooter', () => {
10
+ it('should render ChatbotFooter with children', () => {
11
+ (0, react_2.render)(react_1.default.createElement(ChatbotFooter_1.default, null, "Chatbot Content"));
12
+ expect(react_2.screen.getByText('Chatbot Content')).toBeTruthy();
13
+ });
14
+ it('should render ChatbotFooter with custom classname', () => {
15
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotFooter_1.default, { className: "custom-class" }, "Chatbot Content"));
16
+ expect(container.querySelector('.custom-class')).toBeTruthy();
17
+ });
18
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const react_1 = __importDefault(require("react"));
16
+ const react_2 = require("@testing-library/react");
17
+ const ChatbotFootnote_1 = __importDefault(require("./ChatbotFootnote"));
18
+ describe('ChatbotFooternote', () => {
19
+ const onClick = jest.fn();
20
+ const popoverProps = {
21
+ title: 'Verify accuracy',
22
+ description: 'description',
23
+ bannerImage: {
24
+ src: 'src',
25
+ alt: 'alt'
26
+ },
27
+ cta: {
28
+ label: 'Got it',
29
+ onClick
30
+ },
31
+ link: {
32
+ label: 'label',
33
+ url: 'url'
34
+ }
35
+ };
36
+ it('should render ChatbotFooternote', () => {
37
+ (0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer" }));
38
+ expect(react_2.screen.getByText('Chatbot footer')).toBeTruthy();
39
+ });
40
+ it('should render ChatbotFooternote with popover', () => __awaiter(void 0, void 0, void 0, function* () {
41
+ (0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer", popover: popoverProps }));
42
+ // click on the footer button
43
+ (0, react_2.act)(() => {
44
+ react_2.fireEvent.click(react_2.screen.getByRole('button'));
45
+ });
46
+ yield (0, react_2.waitFor)(() => {
47
+ // Check if the popover is visible and click on the cta button
48
+ react_2.screen.getByLabelText('More information');
49
+ react_2.screen.getByText('Verify accuracy');
50
+ react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Got it' }));
51
+ expect(onClick).toHaveBeenCalled();
52
+ });
53
+ }));
54
+ it('should call onClick handler when popover cta button is clicked', () => __awaiter(void 0, void 0, void 0, function* () {
55
+ (0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer", popover: popoverProps }));
56
+ // click on the footer button
57
+ (0, react_2.act)(() => {
58
+ react_2.fireEvent.click(react_2.screen.getByRole('button'));
59
+ });
60
+ yield (0, react_2.waitFor)(() => {
61
+ // Check if the popover is visible and click on the cta button
62
+ react_2.screen.getByLabelText('More information');
63
+ react_2.screen.getByText('Verify accuracy');
64
+ react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Got it' }));
65
+ expect(onClick).toHaveBeenCalled();
66
+ });
67
+ }));
68
+ it('should close the popover when escape is pressed', () => __awaiter(void 0, void 0, void 0, function* () {
69
+ (0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer", popover: popoverProps }));
70
+ // click on the footer button
71
+ (0, react_2.act)(() => {
72
+ react_2.fireEvent.click(react_2.screen.getByRole('button'));
73
+ });
74
+ yield (0, react_2.waitFor)(() => {
75
+ // Check if the popover is visible and click on the cta button
76
+ react_2.screen.getByLabelText('More information');
77
+ react_2.screen.getByText('Verify accuracy');
78
+ });
79
+ (0, react_2.act)(() => {
80
+ // trigger escape to close the popover
81
+ react_2.fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' });
82
+ });
83
+ yield (0, react_2.waitFor)(() => {
84
+ expect(react_2.screen.queryByText('Verify accuracy')).toBeFalsy();
85
+ });
86
+ }));
87
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotHeader_1 = __importDefault(require("./ChatbotHeader"));
9
+ describe('ChatbotHeader', () => {
10
+ it('should render ChatbotHeader with children', () => {
11
+ (0, react_2.render)(react_1.default.createElement(ChatbotHeader_1.default, null, "Chatbot Header"));
12
+ expect(react_2.screen.getByText('Chatbot Header')).toBeTruthy();
13
+ });
14
+ it('should render ChatbotHeader with custom classname', () => {
15
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeader_1.default, { className: "custom-header-class" }, "Chatbot Content"));
16
+ expect(container.querySelector('.custom-header-class')).toBeTruthy();
17
+ });
18
+ });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotHeaderActions_1 = __importDefault(require("./ChatbotHeaderActions"));
9
+ describe('ChatbotHeaderActions', () => {
10
+ it('should render ChatbotHeaderActions with children', () => {
11
+ (0, react_2.render)(react_1.default.createElement(ChatbotHeaderActions_1.default, null, "Chatbot Header"));
12
+ expect(react_2.screen.getByText('Chatbot Header')).toBeTruthy();
13
+ });
14
+ it('should render ChatbotHeaderActions with custom classname', () => {
15
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderActions_1.default, { className: "custom-header-action-class" }, "Chatbot Content"));
16
+ expect(container.querySelector('.custom-header-action-class')).toBeTruthy();
17
+ });
18
+ });
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { TooltipProps } from '@patternfly/react-core';
3
+ export interface ChatbotHeaderCloseButtonProps {
4
+ /** Callback function for when button is clicked */
5
+ onClick: () => void;
6
+ /** Custom classname for the header component */
7
+ className?: string;
8
+ /** Props spread to the PF Tooltip component wrapping the display mode dropdown */
9
+ tooltipProps?: TooltipProps;
10
+ /** Aria label for menu */
11
+ menuAriaLabel?: string;
12
+ /** Ref applied to menu */
13
+ innerRef?: React.Ref<HTMLButtonElement>;
14
+ /** Content used in tooltip */
15
+ tooltipContent?: string;
16
+ }
17
+ export declare const ChatbotHeaderCloseButton: React.ForwardRefExoticComponent<ChatbotHeaderCloseButtonProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChatbotHeaderCloseButton = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_core_1 = require("@patternfly/react-core");
9
+ const react_icons_1 = require("@patternfly/react-icons");
10
+ const ChatbotHeaderCloseButtonBase = ({ className, onClick, tooltipProps, menuAriaLabel = 'Close', innerRef, tooltipContent = 'Close' }) => (react_1.default.createElement("div", { className: `pf-chatbot__menu ${className}` },
11
+ react_1.default.createElement(react_core_1.Tooltip, Object.assign({ content: tooltipContent, position: "bottom",
12
+ // prevents VO announcements of both aria label and tooltip
13
+ aria: "none" }, tooltipProps),
14
+ react_1.default.createElement(react_core_1.Button, { className: "pf-chatbot__button--toggle-menu", variant: "plain", onClick: onClick, "aria-label": menuAriaLabel, ref: innerRef, icon: react_1.default.createElement(react_core_1.Icon, { size: "xl", isInline: true },
15
+ react_1.default.createElement(react_icons_1.CloseIcon, null)) }))));
16
+ exports.ChatbotHeaderCloseButton = react_1.default.forwardRef((props, ref) => (react_1.default.createElement(ChatbotHeaderCloseButtonBase, Object.assign({ innerRef: ref }, props))));
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotHeaderCloseButton_1 = require("./ChatbotHeaderCloseButton");
9
+ describe('ChatbotHeaderCloseButton', () => {
10
+ it('should render ChatbotHeaderCloseButton', () => {
11
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderCloseButton_1.ChatbotHeaderCloseButton, { className: "custom-header-close-button", onClick: jest.fn() }));
12
+ expect(container.querySelector('.custom-header-close-button')).toBeTruthy();
13
+ });
14
+ it('should call onClick handler when close button is pressed', () => {
15
+ const onClick = jest.fn();
16
+ (0, react_2.render)(react_1.default.createElement(ChatbotHeaderCloseButton_1.ChatbotHeaderCloseButton, { className: "custom-header-close-button", onClick: onClick }));
17
+ react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Close' }));
18
+ expect(onClick).toHaveBeenCalled();
19
+ });
20
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotHeaderMain_1 = __importDefault(require("./ChatbotHeaderMain"));
9
+ describe('ChatbotHeaderMain', () => {
10
+ it('should render ChatbotHeaderMain with children', () => {
11
+ (0, react_2.render)(react_1.default.createElement(ChatbotHeaderMain_1.default, null, "Chatbot Header Main"));
12
+ expect(react_2.screen.getByText('Chatbot Header Main')).toBeTruthy();
13
+ });
14
+ it('should render ChatbotHeaderMain with custom classname', () => {
15
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderMain_1.default, { className: "custom-header-class" }, "Chatbot Content"));
16
+ expect(container.querySelector('.custom-header-class')).toBeTruthy();
17
+ });
18
+ });
@@ -11,5 +11,7 @@ export interface ChatbotHeaderMenuProps {
11
11
  menuAriaLabel?: string;
12
12
  /** Ref applied to menu */
13
13
  innerRef?: React.Ref<HTMLButtonElement>;
14
+ /** Content used in tooltip */
15
+ tooltipContent?: string;
14
16
  }
15
17
  export declare const ChatbotHeaderMenu: React.ForwardRefExoticComponent<ChatbotHeaderMenuProps & React.RefAttributes<HTMLButtonElement>>;
@@ -7,8 +7,10 @@ exports.ChatbotHeaderMenu = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const react_core_1 = require("@patternfly/react-core");
9
9
  const bars_icon_1 = __importDefault(require("@patternfly/react-icons/dist/esm/icons/bars-icon"));
10
- const ChatbotHeaderMenuBase = ({ className, onMenuToggle, tooltipProps, menuAriaLabel = 'Toggle menu', innerRef }) => (react_1.default.createElement("div", { className: `pf-chatbot__menu ${className}` },
11
- react_1.default.createElement(react_core_1.Tooltip, Object.assign({ content: "Menu", position: "bottom" }, tooltipProps),
10
+ const ChatbotHeaderMenuBase = ({ className, onMenuToggle, tooltipProps, menuAriaLabel = 'Toggle menu', innerRef, tooltipContent = 'Menu' }) => (react_1.default.createElement("div", { className: `pf-chatbot__menu ${className}` },
11
+ react_1.default.createElement(react_core_1.Tooltip, Object.assign({ content: tooltipContent, position: "bottom",
12
+ // prevents VO announcements of both aria label and tooltip
13
+ aria: "none" }, tooltipProps),
12
14
  react_1.default.createElement(react_core_1.Button, { className: "pf-chatbot__button--toggle-menu", variant: "plain", onClick: onMenuToggle, "aria-label": menuAriaLabel, ref: innerRef, icon: react_1.default.createElement(react_core_1.Icon, { size: "xl", isInline: true },
13
15
  react_1.default.createElement(bars_icon_1.default, null)) }))));
14
16
  exports.ChatbotHeaderMenu = react_1.default.forwardRef((props, ref) => (react_1.default.createElement(ChatbotHeaderMenuBase, Object.assign({ innerRef: ref }, props))));
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const ChatbotHeaderMenu_1 = require("./ChatbotHeaderMenu");
9
+ describe('ChatbotHeaderMenu', () => {
10
+ it('should render ChatbotHeaderMenu with custom class', () => {
11
+ const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderMenu_1.ChatbotHeaderMenu, { className: "custom-header-menu", onMenuToggle: jest.fn() }));
12
+ expect(container.querySelector('.custom-header-menu')).toBeTruthy();
13
+ });
14
+ it('should call onMenuToggle when ChatbotHeaderMenu button is clicked', () => {
15
+ const onMenuToggle = jest.fn();
16
+ (0, react_2.render)(react_1.default.createElement(ChatbotHeaderMenu_1.ChatbotHeaderMenu, { className: "custom-header-menu", onMenuToggle: onMenuToggle }));
17
+ react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Toggle menu' }));
18
+ expect(onMenuToggle).toHaveBeenCalled();
19
+ });
20
+ });
@@ -21,7 +21,9 @@ const ellipsis_v_icon_1 = __importDefault(require("@patternfly/react-icons/dist/
21
21
  const ChatbotHeaderOptionsDropdown = (_a) => {
22
22
  var { className, children, onSelect, tooltipProps, menuToggleAriaLabel = 'Chatbot options' } = _a, props = __rest(_a, ["className", "children", "onSelect", "tooltipProps", "menuToggleAriaLabel"]);
23
23
  const [isOptionsMenuOpen, setIsOptionsMenuOpen] = react_1.default.useState(false);
24
- const toggle = (toggleRef) => (react_1.default.createElement(react_core_1.Tooltip, Object.assign({ className: "pf-chatbot__tooltip", content: "Chatbot options", position: "bottom" }, tooltipProps),
24
+ const toggle = (toggleRef) => (react_1.default.createElement(react_core_1.Tooltip, Object.assign({ className: "pf-chatbot__tooltip", content: "Chatbot options", position: "bottom",
25
+ // prevents VO announcements of both aria label and tooltip
26
+ aria: "none" }, tooltipProps),
25
27
  react_1.default.createElement(react_core_1.MenuToggle, { className: "pf-chatbot__button--toggle-options", variant: "plain", "aria-label": menuToggleAriaLabel, ref: toggleRef, icon: react_1.default.createElement(react_core_1.Icon, { iconSize: "xl", isInline: true },
26
28
  react_1.default.createElement(ellipsis_v_icon_1.default, null)), isExpanded: isOptionsMenuOpen, onClick: () => setIsOptionsMenuOpen(!isOptionsMenuOpen) })));
27
29
  return (react_1.default.createElement(react_core_1.Dropdown, Object.assign({ className: `pf-chatbot__options ${className !== null && className !== void 0 ? className : ''}`, isOpen: isOptionsMenuOpen, onSelect: (e, value) => {