@patternfly/react-core 6.0.0-alpha.65 → 6.0.0-alpha.67

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 (470) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/DataList/package.json +1 -1
  23. package/dist/dynamic/components/DatePicker/package.json +1 -1
  24. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  25. package/dist/dynamic/components/Divider/package.json +1 -1
  26. package/dist/dynamic/components/Drawer/package.json +1 -1
  27. package/dist/dynamic/components/Dropdown/package.json +1 -1
  28. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  29. package/dist/dynamic/components/EmptyState/package.json +1 -1
  30. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  31. package/dist/dynamic/components/FileUpload/package.json +1 -1
  32. package/dist/dynamic/components/Form/package.json +1 -1
  33. package/dist/dynamic/components/FormSelect/package.json +1 -1
  34. package/dist/dynamic/components/HelperText/package.json +1 -1
  35. package/dist/dynamic/components/Hint/package.json +1 -1
  36. package/dist/dynamic/components/Icon/package.json +1 -1
  37. package/dist/dynamic/components/InputGroup/package.json +1 -1
  38. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  39. package/dist/dynamic/components/Label/package.json +1 -1
  40. package/dist/dynamic/components/List/package.json +1 -1
  41. package/dist/dynamic/components/LoginPage/package.json +1 -1
  42. package/dist/dynamic/components/Masthead/package.json +1 -1
  43. package/dist/dynamic/components/Menu/package.json +1 -1
  44. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  45. package/dist/dynamic/components/Modal/package.json +1 -1
  46. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  47. package/dist/dynamic/components/Nav/package.json +1 -1
  48. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  49. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  50. package/dist/dynamic/components/NumberInput/package.json +1 -1
  51. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  52. package/dist/dynamic/components/Page/package.json +1 -1
  53. package/dist/dynamic/components/Pagination/package.json +1 -1
  54. package/dist/dynamic/components/Panel/package.json +1 -1
  55. package/dist/dynamic/components/Popover/package.json +1 -1
  56. package/dist/dynamic/components/Progress/package.json +1 -1
  57. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  58. package/dist/dynamic/components/Radio/package.json +1 -1
  59. package/dist/dynamic/components/SearchInput/package.json +1 -1
  60. package/dist/dynamic/components/Select/package.json +1 -1
  61. package/dist/dynamic/components/Sidebar/package.json +1 -1
  62. package/dist/dynamic/components/SimpleList/package.json +1 -1
  63. package/dist/dynamic/components/Skeleton/package.json +1 -1
  64. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  65. package/dist/dynamic/components/Slider/package.json +1 -1
  66. package/dist/dynamic/components/Spinner/package.json +1 -1
  67. package/dist/dynamic/components/Switch/package.json +1 -1
  68. package/dist/dynamic/components/Tabs/package.json +1 -1
  69. package/dist/dynamic/components/Text/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/Tile/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Modal/package.json +1 -0
  87. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/package.json +1 -1
  89. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  90. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  91. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  92. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  93. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  94. package/dist/dynamic/helpers/constants/package.json +1 -1
  95. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  96. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  98. package/dist/dynamic/helpers/package.json +1 -1
  99. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  100. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  102. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  103. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  104. package/dist/dynamic/helpers/util/package.json +1 -1
  105. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  106. package/dist/dynamic/layouts/Flex/package.json +1 -1
  107. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  108. package/dist/dynamic/layouts/Grid/package.json +1 -1
  109. package/dist/dynamic/layouts/Level/package.json +1 -1
  110. package/dist/dynamic/layouts/Split/package.json +1 -1
  111. package/dist/dynamic/layouts/Stack/package.json +1 -1
  112. package/dist/dynamic/next/components/DualListSelector/package.json +1 -1
  113. package/dist/dynamic/next/components/package.json +1 -1
  114. package/dist/dynamic/styles/package.json +1 -1
  115. package/dist/dynamic-modules.json +6 -12
  116. package/dist/esm/components/AboutModal/AboutModal.js +1 -1
  117. package/dist/esm/components/AboutModal/AboutModal.js.map +1 -1
  118. package/dist/esm/components/Modal/Modal.d.ts +4 -40
  119. package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
  120. package/dist/esm/components/Modal/Modal.js +5 -27
  121. package/dist/esm/components/Modal/Modal.js.map +1 -1
  122. package/dist/esm/components/Modal/ModalBody.d.ts.map +1 -0
  123. package/dist/esm/components/Modal/ModalBody.js.map +1 -0
  124. package/dist/esm/components/Modal/ModalBox.d.ts +3 -3
  125. package/dist/esm/components/Modal/ModalBox.d.ts.map +1 -1
  126. package/dist/esm/components/Modal/ModalBox.js +2 -2
  127. package/dist/esm/components/Modal/ModalBox.js.map +1 -1
  128. package/dist/esm/components/Modal/ModalBoxCloseButton.js +1 -1
  129. package/dist/esm/components/Modal/ModalBoxCloseButton.js.map +1 -1
  130. package/dist/esm/components/Modal/ModalBoxTitle.d.ts +2 -2
  131. package/dist/esm/components/Modal/ModalBoxTitle.d.ts.map +1 -1
  132. package/dist/esm/components/Modal/ModalBoxTitle.js +3 -2
  133. package/dist/esm/components/Modal/ModalBoxTitle.js.map +1 -1
  134. package/dist/esm/components/Modal/ModalContent.d.ts +3 -41
  135. package/dist/esm/components/Modal/ModalContent.d.ts.map +1 -1
  136. package/dist/esm/components/Modal/ModalContent.js +12 -29
  137. package/dist/esm/components/Modal/ModalContent.js.map +1 -1
  138. package/dist/esm/components/Modal/ModalFooter.d.ts.map +1 -0
  139. package/dist/esm/components/Modal/ModalFooter.js.map +1 -0
  140. package/dist/esm/components/Modal/ModalHeader.d.ts.map +1 -0
  141. package/dist/esm/components/Modal/ModalHeader.js.map +1 -0
  142. package/dist/esm/components/Modal/index.d.ts +3 -6
  143. package/dist/esm/components/Modal/index.d.ts.map +1 -1
  144. package/dist/esm/components/Modal/index.js +3 -6
  145. package/dist/esm/components/Modal/index.js.map +1 -1
  146. package/dist/esm/{next → deprecated}/components/Modal/Modal.d.ts +40 -4
  147. package/dist/esm/deprecated/components/Modal/Modal.d.ts.map +1 -0
  148. package/dist/esm/{next → deprecated}/components/Modal/Modal.js +27 -5
  149. package/dist/esm/deprecated/components/Modal/Modal.js.map +1 -0
  150. package/dist/esm/{next → deprecated}/components/Modal/ModalBox.d.ts +3 -3
  151. package/dist/esm/deprecated/components/Modal/ModalBox.d.ts.map +1 -0
  152. package/dist/esm/deprecated/components/Modal/ModalBox.js +15 -0
  153. package/dist/esm/deprecated/components/Modal/ModalBox.js.map +1 -0
  154. package/dist/esm/deprecated/components/Modal/ModalBoxBody.d.ts.map +1 -0
  155. package/dist/esm/deprecated/components/Modal/ModalBoxBody.js.map +1 -0
  156. package/dist/esm/deprecated/components/Modal/ModalBoxCloseButton.d.ts.map +1 -0
  157. package/dist/esm/{next → deprecated}/components/Modal/ModalBoxCloseButton.js +1 -1
  158. package/dist/esm/deprecated/components/Modal/ModalBoxCloseButton.js.map +1 -0
  159. package/dist/esm/deprecated/components/Modal/ModalBoxDescription.d.ts.map +1 -0
  160. package/dist/esm/deprecated/components/Modal/ModalBoxDescription.js.map +1 -0
  161. package/dist/esm/deprecated/components/Modal/ModalBoxFooter.d.ts.map +1 -0
  162. package/dist/esm/deprecated/components/Modal/ModalBoxFooter.js.map +1 -0
  163. package/dist/esm/deprecated/components/Modal/ModalBoxHeader.d.ts.map +1 -0
  164. package/dist/esm/deprecated/components/Modal/ModalBoxHeader.js.map +1 -0
  165. package/dist/{js/next → esm/deprecated}/components/Modal/ModalBoxTitle.d.ts +2 -2
  166. package/dist/esm/deprecated/components/Modal/ModalBoxTitle.d.ts.map +1 -0
  167. package/dist/esm/{next → deprecated}/components/Modal/ModalBoxTitle.js +2 -3
  168. package/dist/esm/deprecated/components/Modal/ModalBoxTitle.js.map +1 -0
  169. package/dist/esm/deprecated/components/Modal/ModalContent.d.ts +80 -0
  170. package/dist/esm/deprecated/components/Modal/ModalContent.d.ts.map +1 -0
  171. package/dist/esm/deprecated/components/Modal/ModalContent.js +62 -0
  172. package/dist/esm/deprecated/components/Modal/ModalContent.js.map +1 -0
  173. package/dist/esm/deprecated/components/Modal/index.d.ts +8 -0
  174. package/dist/esm/deprecated/components/Modal/index.d.ts.map +1 -0
  175. package/dist/esm/deprecated/components/Modal/index.js +8 -0
  176. package/dist/esm/deprecated/components/Modal/index.js.map +1 -0
  177. package/dist/esm/deprecated/components/Wizard/Wizard.js +1 -1
  178. package/dist/esm/deprecated/components/Wizard/Wizard.js.map +1 -1
  179. package/dist/esm/deprecated/components/index.d.ts +1 -0
  180. package/dist/esm/deprecated/components/index.d.ts.map +1 -1
  181. package/dist/esm/deprecated/components/index.js +1 -0
  182. package/dist/esm/deprecated/components/index.js.map +1 -1
  183. package/dist/esm/next/components/index.d.ts +0 -1
  184. package/dist/esm/next/components/index.d.ts.map +1 -1
  185. package/dist/esm/next/components/index.js +0 -1
  186. package/dist/esm/next/components/index.js.map +1 -1
  187. package/dist/js/components/AboutModal/AboutModal.js +1 -1
  188. package/dist/js/components/AboutModal/AboutModal.js.map +1 -1
  189. package/dist/js/components/Modal/Modal.d.ts +4 -40
  190. package/dist/js/components/Modal/Modal.d.ts.map +1 -1
  191. package/dist/js/components/Modal/Modal.js +5 -27
  192. package/dist/js/components/Modal/Modal.js.map +1 -1
  193. package/dist/js/components/Modal/ModalBody.d.ts.map +1 -0
  194. package/dist/js/components/Modal/ModalBody.js.map +1 -0
  195. package/dist/js/components/Modal/ModalBox.d.ts +3 -3
  196. package/dist/js/components/Modal/ModalBox.d.ts.map +1 -1
  197. package/dist/js/components/Modal/ModalBox.js +2 -2
  198. package/dist/js/components/Modal/ModalBox.js.map +1 -1
  199. package/dist/js/components/Modal/ModalBoxCloseButton.js +1 -1
  200. package/dist/js/components/Modal/ModalBoxCloseButton.js.map +1 -1
  201. package/dist/js/components/Modal/ModalBoxTitle.d.ts +2 -2
  202. package/dist/js/components/Modal/ModalBoxTitle.d.ts.map +1 -1
  203. package/dist/js/components/Modal/ModalBoxTitle.js +3 -2
  204. package/dist/js/components/Modal/ModalBoxTitle.js.map +1 -1
  205. package/dist/js/components/Modal/ModalContent.d.ts +3 -41
  206. package/dist/js/components/Modal/ModalContent.d.ts.map +1 -1
  207. package/dist/js/components/Modal/ModalContent.js +12 -29
  208. package/dist/js/components/Modal/ModalContent.js.map +1 -1
  209. package/dist/js/components/Modal/ModalFooter.d.ts.map +1 -0
  210. package/dist/js/components/Modal/ModalFooter.js.map +1 -0
  211. package/dist/js/components/Modal/ModalHeader.d.ts.map +1 -0
  212. package/dist/js/components/Modal/ModalHeader.js.map +1 -0
  213. package/dist/js/components/Modal/index.d.ts +3 -6
  214. package/dist/js/components/Modal/index.d.ts.map +1 -1
  215. package/dist/js/components/Modal/index.js +3 -6
  216. package/dist/js/components/Modal/index.js.map +1 -1
  217. package/dist/js/{next → deprecated}/components/Modal/Modal.d.ts +40 -4
  218. package/dist/js/deprecated/components/Modal/Modal.d.ts.map +1 -0
  219. package/dist/js/{next → deprecated}/components/Modal/Modal.js +27 -5
  220. package/dist/js/deprecated/components/Modal/Modal.js.map +1 -0
  221. package/dist/js/{next → deprecated}/components/Modal/ModalBox.d.ts +3 -3
  222. package/dist/js/deprecated/components/Modal/ModalBox.d.ts.map +1 -0
  223. package/dist/js/deprecated/components/Modal/ModalBox.js +19 -0
  224. package/dist/js/deprecated/components/Modal/ModalBox.js.map +1 -0
  225. package/dist/js/deprecated/components/Modal/ModalBoxBody.d.ts.map +1 -0
  226. package/dist/js/deprecated/components/Modal/ModalBoxBody.js.map +1 -0
  227. package/dist/js/deprecated/components/Modal/ModalBoxCloseButton.d.ts.map +1 -0
  228. package/dist/js/{next → deprecated}/components/Modal/ModalBoxCloseButton.js +1 -1
  229. package/dist/js/deprecated/components/Modal/ModalBoxCloseButton.js.map +1 -0
  230. package/dist/js/deprecated/components/Modal/ModalBoxDescription.d.ts.map +1 -0
  231. package/dist/js/deprecated/components/Modal/ModalBoxDescription.js.map +1 -0
  232. package/dist/js/deprecated/components/Modal/ModalBoxFooter.d.ts.map +1 -0
  233. package/dist/js/deprecated/components/Modal/ModalBoxFooter.js.map +1 -0
  234. package/dist/js/deprecated/components/Modal/ModalBoxHeader.d.ts.map +1 -0
  235. package/dist/js/deprecated/components/Modal/ModalBoxHeader.js.map +1 -0
  236. package/dist/{esm/next → js/deprecated}/components/Modal/ModalBoxTitle.d.ts +2 -2
  237. package/dist/js/deprecated/components/Modal/ModalBoxTitle.d.ts.map +1 -0
  238. package/dist/js/{next → deprecated}/components/Modal/ModalBoxTitle.js +2 -3
  239. package/dist/js/deprecated/components/Modal/ModalBoxTitle.js.map +1 -0
  240. package/dist/js/deprecated/components/Modal/ModalContent.d.ts +80 -0
  241. package/dist/js/deprecated/components/Modal/ModalContent.d.ts.map +1 -0
  242. package/dist/js/deprecated/components/Modal/ModalContent.js +66 -0
  243. package/dist/js/deprecated/components/Modal/ModalContent.js.map +1 -0
  244. package/dist/js/deprecated/components/Modal/index.d.ts +8 -0
  245. package/dist/js/deprecated/components/Modal/index.d.ts.map +1 -0
  246. package/dist/js/deprecated/components/Modal/index.js +11 -0
  247. package/dist/js/deprecated/components/Modal/index.js.map +1 -0
  248. package/dist/js/deprecated/components/Wizard/Wizard.js +1 -1
  249. package/dist/js/deprecated/components/Wizard/Wizard.js.map +1 -1
  250. package/dist/js/deprecated/components/index.d.ts +1 -0
  251. package/dist/js/deprecated/components/index.d.ts.map +1 -1
  252. package/dist/js/deprecated/components/index.js +1 -0
  253. package/dist/js/deprecated/components/index.js.map +1 -1
  254. package/dist/js/next/components/index.d.ts +0 -1
  255. package/dist/js/next/components/index.d.ts.map +1 -1
  256. package/dist/js/next/components/index.js +0 -1
  257. package/dist/js/next/components/index.js.map +1 -1
  258. package/dist/umd/assets/{output-BsYBUJdh.css → output-DC58BpxL.css} +9943 -9943
  259. package/dist/umd/react-core.min.js +3 -3
  260. package/helpers/package.json +1 -1
  261. package/layouts/package.json +1 -1
  262. package/next/package.json +1 -1
  263. package/package.json +2 -2
  264. package/src/components/AboutModal/AboutModal.tsx +1 -1
  265. package/src/components/Label/examples/LabelGroupEditableAddModal.tsx +4 -5
  266. package/src/components/Modal/Modal.tsx +9 -82
  267. package/src/components/Modal/ModalBox.tsx +6 -6
  268. package/src/components/Modal/ModalBoxCloseButton.tsx +1 -1
  269. package/src/components/Modal/ModalBoxTitle.tsx +7 -5
  270. package/src/components/Modal/ModalContent.tsx +19 -110
  271. package/src/components/Modal/__tests__/Modal.test.tsx +10 -77
  272. package/src/components/Modal/__tests__/ModalBoxHeader.test.tsx +12 -5
  273. package/src/components/Modal/__tests__/ModalBoxTitle.test.tsx +6 -28
  274. package/src/components/Modal/__tests__/ModalContent.test.tsx +6 -72
  275. package/src/components/Modal/__tests__/__snapshots__/ModalBoxHeader.test.tsx.snap +16 -2
  276. package/src/components/Modal/__tests__/__snapshots__/ModalContent.test.tsx.snap +13 -478
  277. package/src/components/Modal/examples/Modal.md +24 -32
  278. package/src/components/Modal/examples/ModalBasic.tsx +16 -12
  279. package/src/components/Modal/examples/ModalCustomFocus.tsx +19 -15
  280. package/src/{next/components → components}/Modal/examples/ModalCustomHeader.tsx +12 -2
  281. package/src/components/Modal/examples/ModalCustomTitleIcon.tsx +24 -18
  282. package/src/components/Modal/examples/ModalCustomWidth.tsx +15 -11
  283. package/src/components/Modal/examples/ModalNoHeaderFooter.tsx +14 -12
  284. package/src/{next/components → components}/Modal/examples/ModalSize.tsx +1 -2
  285. package/src/components/Modal/examples/ModalTitleIcon.tsx +20 -18
  286. package/src/components/Modal/examples/ModalTopAligned.tsx +15 -11
  287. package/src/components/Modal/examples/ModalWithDescription.tsx +53 -12
  288. package/src/components/Modal/examples/ModalWithDropdown.tsx +56 -49
  289. package/src/components/Modal/examples/ModalWithForm.tsx +150 -139
  290. package/src/components/Modal/examples/ModalWithHelp.tsx +34 -26
  291. package/src/components/Modal/examples/ModalWithOverflowingContent.tsx +47 -44
  292. package/src/components/Modal/examples/ModalWithWizard.tsx +2 -4
  293. package/src/components/Modal/index.ts +3 -6
  294. package/src/components/Wizard/examples/Wizard.md +1 -0
  295. package/src/components/Wizard/examples/WizardWithinModal.tsx +5 -4
  296. package/src/demos/CustomMenus/examples/DateSelectDemo.tsx +25 -13
  297. package/src/demos/DatePicker/DatePicker.md +2 -2
  298. package/src/demos/DatePicker/examples/DateTimePickerInModal.tsx +5 -12
  299. package/src/demos/LabelGroupDemos.md +3 -0
  300. package/src/demos/MultipleFileUploadDemos.md +2 -0
  301. package/src/demos/examples/Card/CardEventsView.tsx +15 -8
  302. package/src/demos/examples/Card/CardLogView.tsx +4 -4
  303. package/src/demos/examples/Card/CardStatusTabbed.tsx +23 -6
  304. package/src/demos/examples/Card/CardUtilizationDemo3.tsx +5 -2
  305. package/src/demos/examples/MultipleFileUpload/MultipleFileUploadRejectedFile.tsx +3 -3
  306. package/src/{next → deprecated}/components/Modal/Modal.tsx +82 -9
  307. package/src/{next → deprecated}/components/Modal/ModalBox.tsx +6 -6
  308. package/src/{next → deprecated}/components/Modal/ModalBoxCloseButton.tsx +1 -1
  309. package/src/{next → deprecated}/components/Modal/ModalBoxTitle.tsx +5 -7
  310. package/src/deprecated/components/Modal/ModalContent.tsx +222 -0
  311. package/src/{next → deprecated}/components/Modal/__tests__/Modal.test.tsx +76 -9
  312. package/src/deprecated/components/Modal/__tests__/ModalBoxHeader.test.tsx +14 -0
  313. package/src/{next → deprecated}/components/Modal/__tests__/ModalBoxTitle.test.tsx +28 -6
  314. package/src/deprecated/components/Modal/__tests__/ModalContent.test.tsx +112 -0
  315. package/src/{next → deprecated}/components/Modal/__tests__/__snapshots__/ModalBoxHeader.test.tsx.snap +2 -16
  316. package/src/deprecated/components/Modal/__tests__/__snapshots__/ModalContent.test.tsx.snap +593 -0
  317. package/src/{next → deprecated}/components/Modal/examples/Modal.md +34 -24
  318. package/src/deprecated/components/Modal/examples/ModalBasic.tsx +39 -0
  319. package/src/deprecated/components/Modal/examples/ModalCustomFocus.tsx +39 -0
  320. package/src/{components → deprecated/components}/Modal/examples/ModalCustomHeaderFooter.tsx +5 -4
  321. package/src/deprecated/components/Modal/examples/ModalCustomTitleIcon.tsx +47 -0
  322. package/src/deprecated/components/Modal/examples/ModalCustomWidth.tsx +39 -0
  323. package/src/{components → deprecated/components}/Modal/examples/ModalLarge.tsx +5 -4
  324. package/src/{components → deprecated/components}/Modal/examples/ModalMedium.tsx +5 -4
  325. package/src/deprecated/components/Modal/examples/ModalNoHeaderFooter.tsx +38 -0
  326. package/src/{components → deprecated/components}/Modal/examples/ModalSmall.tsx +5 -4
  327. package/src/deprecated/components/Modal/examples/ModalTitleIcon.tsx +46 -0
  328. package/src/deprecated/components/Modal/examples/ModalTopAligned.tsx +39 -0
  329. package/src/deprecated/components/Modal/examples/ModalWithDescription.tsx +39 -0
  330. package/src/deprecated/components/Modal/examples/ModalWithDropdown.tsx +100 -0
  331. package/src/deprecated/components/Modal/examples/ModalWithForm.tsx +183 -0
  332. package/src/deprecated/components/Modal/examples/ModalWithHelp.tsx +56 -0
  333. package/src/deprecated/components/Modal/examples/ModalWithOverflowingContent.tsx +72 -0
  334. package/src/{next → deprecated}/components/Modal/examples/ModalWithWizard.tsx +7 -5
  335. package/src/deprecated/components/Modal/index.ts +7 -0
  336. package/src/deprecated/components/Wizard/Wizard.tsx +1 -1
  337. package/src/deprecated/components/index.ts +1 -0
  338. package/src/next/components/index.ts +0 -1
  339. package/dist/dynamic/next/components/Modal/package.json +0 -1
  340. package/dist/esm/components/Modal/ModalBoxBody.d.ts.map +0 -1
  341. package/dist/esm/components/Modal/ModalBoxBody.js.map +0 -1
  342. package/dist/esm/components/Modal/ModalBoxFooter.d.ts.map +0 -1
  343. package/dist/esm/components/Modal/ModalBoxFooter.js.map +0 -1
  344. package/dist/esm/components/Modal/ModalBoxHeader.d.ts.map +0 -1
  345. package/dist/esm/components/Modal/ModalBoxHeader.js.map +0 -1
  346. package/dist/esm/next/components/Modal/Modal.d.ts.map +0 -1
  347. package/dist/esm/next/components/Modal/Modal.js.map +0 -1
  348. package/dist/esm/next/components/Modal/ModalBody.d.ts.map +0 -1
  349. package/dist/esm/next/components/Modal/ModalBody.js.map +0 -1
  350. package/dist/esm/next/components/Modal/ModalBox.d.ts.map +0 -1
  351. package/dist/esm/next/components/Modal/ModalBox.js +0 -15
  352. package/dist/esm/next/components/Modal/ModalBox.js.map +0 -1
  353. package/dist/esm/next/components/Modal/ModalBoxCloseButton.d.ts.map +0 -1
  354. package/dist/esm/next/components/Modal/ModalBoxCloseButton.js.map +0 -1
  355. package/dist/esm/next/components/Modal/ModalBoxDescription.d.ts.map +0 -1
  356. package/dist/esm/next/components/Modal/ModalBoxDescription.js.map +0 -1
  357. package/dist/esm/next/components/Modal/ModalBoxTitle.d.ts.map +0 -1
  358. package/dist/esm/next/components/Modal/ModalBoxTitle.js.map +0 -1
  359. package/dist/esm/next/components/Modal/ModalContent.d.ts +0 -42
  360. package/dist/esm/next/components/Modal/ModalContent.d.ts.map +0 -1
  361. package/dist/esm/next/components/Modal/ModalContent.js +0 -45
  362. package/dist/esm/next/components/Modal/ModalContent.js.map +0 -1
  363. package/dist/esm/next/components/Modal/ModalFooter.d.ts.map +0 -1
  364. package/dist/esm/next/components/Modal/ModalFooter.js.map +0 -1
  365. package/dist/esm/next/components/Modal/ModalHeader.d.ts.map +0 -1
  366. package/dist/esm/next/components/Modal/ModalHeader.js.map +0 -1
  367. package/dist/esm/next/components/Modal/index.d.ts +0 -5
  368. package/dist/esm/next/components/Modal/index.d.ts.map +0 -1
  369. package/dist/esm/next/components/Modal/index.js +0 -5
  370. package/dist/esm/next/components/Modal/index.js.map +0 -1
  371. package/dist/js/components/Modal/ModalBoxBody.d.ts.map +0 -1
  372. package/dist/js/components/Modal/ModalBoxBody.js.map +0 -1
  373. package/dist/js/components/Modal/ModalBoxFooter.d.ts.map +0 -1
  374. package/dist/js/components/Modal/ModalBoxFooter.js.map +0 -1
  375. package/dist/js/components/Modal/ModalBoxHeader.d.ts.map +0 -1
  376. package/dist/js/components/Modal/ModalBoxHeader.js.map +0 -1
  377. package/dist/js/next/components/Modal/Modal.d.ts.map +0 -1
  378. package/dist/js/next/components/Modal/Modal.js.map +0 -1
  379. package/dist/js/next/components/Modal/ModalBody.d.ts.map +0 -1
  380. package/dist/js/next/components/Modal/ModalBody.js.map +0 -1
  381. package/dist/js/next/components/Modal/ModalBox.d.ts.map +0 -1
  382. package/dist/js/next/components/Modal/ModalBox.js +0 -19
  383. package/dist/js/next/components/Modal/ModalBox.js.map +0 -1
  384. package/dist/js/next/components/Modal/ModalBoxCloseButton.d.ts.map +0 -1
  385. package/dist/js/next/components/Modal/ModalBoxCloseButton.js.map +0 -1
  386. package/dist/js/next/components/Modal/ModalBoxDescription.d.ts.map +0 -1
  387. package/dist/js/next/components/Modal/ModalBoxDescription.js.map +0 -1
  388. package/dist/js/next/components/Modal/ModalBoxTitle.d.ts.map +0 -1
  389. package/dist/js/next/components/Modal/ModalBoxTitle.js.map +0 -1
  390. package/dist/js/next/components/Modal/ModalContent.d.ts +0 -42
  391. package/dist/js/next/components/Modal/ModalContent.d.ts.map +0 -1
  392. package/dist/js/next/components/Modal/ModalContent.js +0 -49
  393. package/dist/js/next/components/Modal/ModalContent.js.map +0 -1
  394. package/dist/js/next/components/Modal/ModalFooter.d.ts.map +0 -1
  395. package/dist/js/next/components/Modal/ModalFooter.js.map +0 -1
  396. package/dist/js/next/components/Modal/ModalHeader.d.ts.map +0 -1
  397. package/dist/js/next/components/Modal/ModalHeader.js.map +0 -1
  398. package/dist/js/next/components/Modal/index.d.ts +0 -5
  399. package/dist/js/next/components/Modal/index.d.ts.map +0 -1
  400. package/dist/js/next/components/Modal/index.js +0 -8
  401. package/dist/js/next/components/Modal/index.js.map +0 -1
  402. package/src/demos/CustomMenus/examples/ComposableDateSelect.tsx +0 -113
  403. package/src/next/components/Modal/ModalContent.tsx +0 -131
  404. package/src/next/components/Modal/__tests__/ModalBoxHeader.test.tsx +0 -21
  405. package/src/next/components/Modal/__tests__/ModalContent.test.tsx +0 -46
  406. package/src/next/components/Modal/__tests__/__snapshots__/ModalContent.test.tsx.snap +0 -128
  407. package/src/next/components/Modal/examples/ModalBasic.tsx +0 -43
  408. package/src/next/components/Modal/examples/ModalCustomFocus.tsx +0 -43
  409. package/src/next/components/Modal/examples/ModalCustomTitleIcon.tsx +0 -54
  410. package/src/next/components/Modal/examples/ModalCustomWidth.tsx +0 -43
  411. package/src/next/components/Modal/examples/ModalNoHeaderFooter.tsx +0 -40
  412. package/src/next/components/Modal/examples/ModalTitleIcon.tsx +0 -48
  413. package/src/next/components/Modal/examples/ModalTopAligned.tsx +0 -43
  414. package/src/next/components/Modal/examples/ModalWithDescription.tsx +0 -80
  415. package/src/next/components/Modal/examples/ModalWithDropdown.tsx +0 -105
  416. package/src/next/components/Modal/examples/ModalWithForm.tsx +0 -191
  417. package/src/next/components/Modal/examples/ModalWithHelp.tsx +0 -63
  418. package/src/next/components/Modal/examples/ModalWithOverflowingContent.tsx +0 -75
  419. package/src/next/components/Modal/index.ts +0 -4
  420. /package/dist/esm/{next/components → components}/Modal/ModalBody.d.ts +0 -0
  421. /package/dist/esm/{next/components → components}/Modal/ModalBody.js +0 -0
  422. /package/dist/esm/{next/components → components}/Modal/ModalFooter.d.ts +0 -0
  423. /package/dist/esm/{next/components → components}/Modal/ModalFooter.js +0 -0
  424. /package/dist/esm/{next/components → components}/Modal/ModalHeader.d.ts +0 -0
  425. /package/dist/esm/{next/components → components}/Modal/ModalHeader.js +0 -0
  426. /package/dist/esm/{components → deprecated/components}/Modal/ModalBoxBody.d.ts +0 -0
  427. /package/dist/esm/{components → deprecated/components}/Modal/ModalBoxBody.js +0 -0
  428. /package/dist/esm/{next → deprecated}/components/Modal/ModalBoxCloseButton.d.ts +0 -0
  429. /package/dist/esm/{next → deprecated}/components/Modal/ModalBoxDescription.d.ts +0 -0
  430. /package/dist/esm/{next → deprecated}/components/Modal/ModalBoxDescription.js +0 -0
  431. /package/dist/esm/{components → deprecated/components}/Modal/ModalBoxFooter.d.ts +0 -0
  432. /package/dist/esm/{components → deprecated/components}/Modal/ModalBoxFooter.js +0 -0
  433. /package/dist/esm/{components → deprecated/components}/Modal/ModalBoxHeader.d.ts +0 -0
  434. /package/dist/esm/{components → deprecated/components}/Modal/ModalBoxHeader.js +0 -0
  435. /package/dist/js/{next/components → components}/Modal/ModalBody.d.ts +0 -0
  436. /package/dist/js/{next/components → components}/Modal/ModalBody.js +0 -0
  437. /package/dist/js/{next/components → components}/Modal/ModalFooter.d.ts +0 -0
  438. /package/dist/js/{next/components → components}/Modal/ModalFooter.js +0 -0
  439. /package/dist/js/{next/components → components}/Modal/ModalHeader.d.ts +0 -0
  440. /package/dist/js/{next/components → components}/Modal/ModalHeader.js +0 -0
  441. /package/dist/js/{components → deprecated/components}/Modal/ModalBoxBody.d.ts +0 -0
  442. /package/dist/js/{components → deprecated/components}/Modal/ModalBoxBody.js +0 -0
  443. /package/dist/js/{next → deprecated}/components/Modal/ModalBoxCloseButton.d.ts +0 -0
  444. /package/dist/js/{next → deprecated}/components/Modal/ModalBoxDescription.d.ts +0 -0
  445. /package/dist/js/{next → deprecated}/components/Modal/ModalBoxDescription.js +0 -0
  446. /package/dist/js/{components → deprecated/components}/Modal/ModalBoxFooter.d.ts +0 -0
  447. /package/dist/js/{components → deprecated/components}/Modal/ModalBoxFooter.js +0 -0
  448. /package/dist/js/{components → deprecated/components}/Modal/ModalBoxHeader.d.ts +0 -0
  449. /package/dist/js/{components → deprecated/components}/Modal/ModalBoxHeader.js +0 -0
  450. /package/src/{next/components → components}/Modal/ModalBody.tsx +0 -0
  451. /package/src/{next/components → components}/Modal/ModalFooter.tsx +0 -0
  452. /package/src/{next/components → components}/Modal/ModalHeader.tsx +0 -0
  453. /package/src/{next/components → components}/Modal/__tests__/ModalBody.test.tsx +0 -0
  454. /package/src/{next/components → components}/Modal/__tests__/ModalFooter.test.tsx +0 -0
  455. /package/src/{next/components → components}/Modal/__tests__/__snapshots__/ModalBody.test.tsx.snap +0 -0
  456. /package/src/{next/components → components}/Modal/__tests__/__snapshots__/ModalFooter.test.tsx.snap +0 -0
  457. /package/src/{components → deprecated/components}/Modal/ModalBoxBody.tsx +0 -0
  458. /package/src/{next → deprecated}/components/Modal/ModalBoxDescription.tsx +0 -0
  459. /package/src/{components → deprecated/components}/Modal/ModalBoxFooter.tsx +0 -0
  460. /package/src/{components → deprecated/components}/Modal/ModalBoxHeader.tsx +0 -0
  461. /package/src/{next → deprecated}/components/Modal/__tests__/ModalBox.test.tsx +0 -0
  462. /package/src/{components → deprecated/components}/Modal/__tests__/ModalBoxBody.test.tsx +0 -0
  463. /package/src/{next → deprecated}/components/Modal/__tests__/ModalBoxCloseButton.test.tsx +0 -0
  464. /package/src/{next → deprecated}/components/Modal/__tests__/ModalBoxDescription.test.tsx +0 -0
  465. /package/src/{components → deprecated/components}/Modal/__tests__/ModalBoxFooter.test.tsx +0 -0
  466. /package/src/{next → deprecated}/components/Modal/__tests__/__snapshots__/ModalBox.test.tsx.snap +0 -0
  467. /package/src/{components → deprecated/components}/Modal/__tests__/__snapshots__/ModalBoxBody.test.tsx.snap +0 -0
  468. /package/src/{next → deprecated}/components/Modal/__tests__/__snapshots__/ModalBoxDescription.test.tsx.snap +0 -0
  469. /package/src/{components → deprecated/components}/Modal/__tests__/__snapshots__/ModalBoxFooter.test.tsx.snap +0 -0
  470. /package/src/{next → deprecated}/components/Modal/__tests__/__snapshots__/ModalBoxTitle.test.tsx.snap +0 -0
@@ -0,0 +1,222 @@
1
+ import * as React from 'react';
2
+ import { FocusTrap } from '../../../helpers';
3
+ import modalStyles from '@patternfly/react-styles/css/components/ModalBox/modal-box';
4
+ import bullsEyeStyles from '@patternfly/react-styles/css/layouts/Bullseye/bullseye';
5
+ import { css } from '@patternfly/react-styles';
6
+ import { getOUIAProps, OUIAProps } from '../../../helpers';
7
+
8
+ import { Backdrop } from '../../../components/Backdrop/Backdrop';
9
+ import { ModalBoxBody } from './ModalBoxBody';
10
+ import { ModalBoxCloseButton } from './ModalBoxCloseButton';
11
+ import { ModalBox } from './ModalBox';
12
+ import { ModalBoxFooter } from './ModalBoxFooter';
13
+ import { ModalBoxDescription } from './ModalBoxDescription';
14
+ import { ModalBoxHeader } from './ModalBoxHeader';
15
+ import { ModalBoxTitle, isVariantIcon } from './ModalBoxTitle';
16
+
17
+ export interface ModalContentProps extends OUIAProps {
18
+ /** Action buttons to add to the standard modal footer. Ignored if the footer property
19
+ * is passed in.
20
+ */
21
+ actions?: any;
22
+ /** Id to use for the modal box descriptor. */
23
+ 'aria-describedby'?: string;
24
+ /** Accessible descriptor of the modal. */
25
+ 'aria-label'?: string;
26
+ /** Id to use for the modal box label. */
27
+ 'aria-labelledby'?: string | null;
28
+ /** Accessible label applied to the modal box body. This should be used to communicate
29
+ * important information about the modal box body div element if needed, such as that it
30
+ * is scrollable.
31
+ */
32
+ bodyAriaLabel?: string;
33
+ /** Accessible role applied to the modal box body. This will default to "region" if the
34
+ * bodyAriaLabel property is passed in. Set to a more appropriate role as applicable
35
+ * based on the modal content and context.
36
+ */
37
+ bodyAriaRole?: string;
38
+ /** Id of the modal box container. */
39
+ boxId: string;
40
+ /** Content rendered inside the modal. */
41
+ children: React.ReactNode;
42
+ /** Additional classes added to the modal box. */
43
+ className?: string;
44
+ /** Description of the modal. */
45
+ description?: React.ReactNode;
46
+ /** Id of the modal box description. */
47
+ descriptorId: string;
48
+ /** Flag to disable focus trap. */
49
+ disableFocusTrap?: boolean;
50
+ /** The element to focus when the modal opens. By default the first
51
+ * focusable element will receive focus.
52
+ */
53
+ elementToFocus?: HTMLElement | SVGElement | string;
54
+ /** Custom footer. */
55
+ footer?: React.ReactNode;
56
+ /** Flag indicating if modal content should be placed in a modal box body wrapper. */
57
+ hasNoBodyWrapper?: boolean;
58
+ /** Complex header (more than just text), supersedes the title property for header content. */
59
+ header?: React.ReactNode;
60
+ /** Optional help section for the modal header. */
61
+ help?: React.ReactNode;
62
+ /** Flag to show the modal. */
63
+ isOpen?: boolean;
64
+ /** Id of the modal box title. */
65
+ labelId: string;
66
+ /** A callback for when the close button is clicked. */
67
+ onClose?: (event: KeyboardEvent | React.MouseEvent) => void;
68
+ /** Position of the modal. By default a modal will be positioned vertically and horizontally centered. */
69
+ position?: 'default' | 'top';
70
+ /** Offset from alternate position. Can be any valid CSS length/percentage. */
71
+ positionOffset?: string;
72
+ /** Flag to show the close button in the header area of the modal. */
73
+ showClose?: boolean;
74
+ /** Simple text content of the modal header. Also used for the aria-label on the body. */
75
+ title?: string;
76
+ /** Optional alert icon (or other) to show before the title of the modal header. When the
77
+ * predefined alert types are used the default styling will be automatically applied.
78
+ */
79
+ titleIconVariant?: 'success' | 'danger' | 'warning' | 'info' | 'custom' | React.ComponentType<any>;
80
+ /** Optional title label text for screen readers. */
81
+ titleLabel?: string;
82
+ /** Variant of the modal. */
83
+ variant?: 'small' | 'medium' | 'large' | 'default';
84
+ /** Default width of the modal. */
85
+ width?: number | string;
86
+ /** Maximum width of the modal. */
87
+ maxWidth?: number | string;
88
+ /** Value to overwrite the randomly generated data-ouia-component-id.*/
89
+ ouiaId?: number | string;
90
+ /** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
91
+ ouiaSafe?: boolean;
92
+ }
93
+
94
+ export const ModalContent: React.FunctionComponent<ModalContentProps> = ({
95
+ children,
96
+ className = '',
97
+ isOpen = false,
98
+ header = null,
99
+ help = null,
100
+ description = null,
101
+ title = '',
102
+ titleIconVariant = null,
103
+ titleLabel = '',
104
+ 'aria-label': ariaLabel = '',
105
+ 'aria-describedby': ariaDescribedby,
106
+ 'aria-labelledby': ariaLabelledby,
107
+ bodyAriaLabel,
108
+ bodyAriaRole,
109
+ showClose = true,
110
+ footer = null,
111
+ actions = [],
112
+ onClose = () => undefined as any,
113
+ variant = 'default',
114
+ position,
115
+ positionOffset,
116
+ width,
117
+ maxWidth,
118
+ boxId,
119
+ labelId,
120
+ descriptorId,
121
+ disableFocusTrap = false,
122
+ hasNoBodyWrapper = false,
123
+ ouiaId,
124
+ ouiaSafe = true,
125
+ elementToFocus,
126
+ ...props
127
+ }: ModalContentProps) => {
128
+ if (!isOpen) {
129
+ return null;
130
+ }
131
+
132
+ const modalBoxHeader = header ? (
133
+ <ModalBoxHeader help={help}>{header}</ModalBoxHeader>
134
+ ) : (
135
+ title && (
136
+ <ModalBoxHeader help={help}>
137
+ <ModalBoxTitle title={title} titleIconVariant={titleIconVariant} titleLabel={titleLabel} id={labelId} />
138
+ {description && <ModalBoxDescription id={descriptorId}>{description}</ModalBoxDescription>}
139
+ </ModalBoxHeader>
140
+ )
141
+ );
142
+
143
+ const modalBoxFooter = footer ? (
144
+ <ModalBoxFooter>{footer}</ModalBoxFooter>
145
+ ) : (
146
+ actions.length > 0 && <ModalBoxFooter>{actions}</ModalBoxFooter>
147
+ );
148
+
149
+ const defaultModalBodyAriaRole = bodyAriaLabel ? 'region' : undefined;
150
+
151
+ const hasNoDescription = !description && !ariaDescribedby;
152
+ const id = hasNoDescription ? descriptorId : undefined;
153
+
154
+ const modalBody = hasNoBodyWrapper ? (
155
+ children
156
+ ) : (
157
+ <ModalBoxBody aria-label={bodyAriaLabel} role={bodyAriaRole || defaultModalBodyAriaRole} {...props} id={id}>
158
+ {children}
159
+ </ModalBoxBody>
160
+ );
161
+ const ariaLabelledbyFormatted = (): null | string => {
162
+ if (ariaLabelledby === null) {
163
+ return null;
164
+ }
165
+ const idRefList: string[] = [];
166
+ if ((ariaLabel && boxId) !== '') {
167
+ idRefList.push(ariaLabel && boxId);
168
+ }
169
+ if (ariaLabelledby) {
170
+ idRefList.push(ariaLabelledby);
171
+ }
172
+ if (title) {
173
+ idRefList.push(labelId);
174
+ }
175
+ return idRefList.join(' ');
176
+ };
177
+
178
+ const modalBox = (
179
+ <ModalBox
180
+ id={boxId}
181
+ className={css(className, isVariantIcon(titleIconVariant) && modalStyles.modifiers[titleIconVariant])}
182
+ variant={variant}
183
+ position={position}
184
+ positionOffset={positionOffset}
185
+ aria-label={ariaLabel}
186
+ aria-labelledby={ariaLabelledbyFormatted()}
187
+ aria-describedby={ariaDescribedby || (hasNoBodyWrapper ? null : descriptorId)}
188
+ {...getOUIAProps(ModalContent.displayName, ouiaId, ouiaSafe)}
189
+ style={
190
+ {
191
+ ...(width && { '--pf-v6-c-modal-box--Width': typeof width !== 'number' ? width : `${width}px` }),
192
+ ...(maxWidth && {
193
+ '--pf-v6-c-modal-box--MaxWidth': typeof maxWidth !== 'number' ? maxWidth : `${maxWidth}px`
194
+ })
195
+ } as React.CSSProperties
196
+ }
197
+ >
198
+ {showClose && <ModalBoxCloseButton onClose={(event) => onClose(event)} ouiaId={ouiaId} />}
199
+ {modalBoxHeader}
200
+ {modalBody}
201
+ {modalBoxFooter}
202
+ </ModalBox>
203
+ );
204
+ return (
205
+ <Backdrop>
206
+ <FocusTrap
207
+ active={!disableFocusTrap}
208
+ focusTrapOptions={{
209
+ clickOutsideDeactivates: true,
210
+ tabbableOptions: { displayCheck: 'none' },
211
+ // FocusTrap's initialFocus can accept false as a value to prevent initial focus.
212
+ // We want to prevent this in case false is ever passed in.
213
+ initialFocus: elementToFocus || undefined
214
+ }}
215
+ className={css(bullsEyeStyles.bullseye)}
216
+ >
217
+ {modalBox}
218
+ </FocusTrap>
219
+ </Backdrop>
220
+ );
221
+ };
222
+ ModalContent.displayName = 'ModalContent';
@@ -13,6 +13,7 @@ jest.spyOn(document, 'createElement');
13
13
  jest.spyOn(document.body, 'addEventListener');
14
14
 
15
15
  const props = {
16
+ title: 'Modal',
16
17
  onClose: jest.fn(),
17
18
  isOpen: false,
18
19
  children: 'modal content'
@@ -47,9 +48,9 @@ describe('Modal', () => {
47
48
  test('modal closes with escape', async () => {
48
49
  const user = userEvent.setup();
49
50
 
50
- render(<Modal {...props} isOpen appendTo={document.body} aria-label="modal-div" />);
51
+ render(<Modal {...props} isOpen appendTo={document.body} />);
51
52
 
52
- await user.type(screen.getByLabelText('modal-div'), `{${KeyTypes.Escape}}`);
53
+ await user.type(screen.getByText(props.title), `{${KeyTypes.Escape}}`);
53
54
  expect(props.onClose).toHaveBeenCalled();
54
55
  });
55
56
 
@@ -69,17 +70,13 @@ describe('Modal', () => {
69
70
  expect(document.body).not.toHaveClass(css(styles.backdropOpen));
70
71
  });
71
72
 
72
- test('modal shows the close button when onClose prop is passed (true by default)', () => {
73
+ test('modal shows the close button when showClose is true (true by default)', () => {
73
74
  render(<Modal {...props} isOpen />);
74
75
  expect(screen.getByRole('button', { name: 'Close' })).toBeInTheDocument();
75
76
  });
76
77
 
77
- test('modal does not show the close button when onClose not passed', () => {
78
- render(
79
- <Modal isOpen disableFocusTrap>
80
- No close button{' '}
81
- </Modal>
82
- );
78
+ test('modal does not show the close button when showClose is false', () => {
79
+ render(<Modal {...props} isOpen showClose={false} tabIndex={0} />);
83
80
  expect(screen.queryByRole('button', { name: 'Close' })).toBeNull();
84
81
  });
85
82
 
@@ -97,6 +94,21 @@ describe('Modal', () => {
97
94
  expect(consoleErrorMock).toHaveBeenCalled();
98
95
  });
99
96
 
97
+ test('modal generates console warning when conflicting accessible name strategies are provided', () => {
98
+ const props = {
99
+ hasNoBodyWrapper: true,
100
+ onClose: jest.fn(),
101
+ isOpen: true,
102
+ children: 'modal content'
103
+ };
104
+ const consoleErrorMock = jest.fn();
105
+ global.console = { error: consoleErrorMock } as any;
106
+
107
+ render(<Modal {...props} />);
108
+
109
+ expect(consoleErrorMock).toHaveBeenCalled();
110
+ });
111
+
100
112
  test('modal adds aria-hidden attribute to its siblings when open', () => {
101
113
  render(<ModalWithSiblings />, { container: document.body.appendChild(target) });
102
114
 
@@ -142,4 +154,59 @@ describe('Modal', () => {
142
154
  expect(asideSibling).not.toHaveAttribute('aria-hidden');
143
155
  expect(articleSibling).not.toHaveAttribute('aria-hidden');
144
156
  });
157
+ test('The modalBoxBody has no aria-label when bodyAriaLabel is not passed', () => {
158
+ const props = {
159
+ isOpen: true
160
+ };
161
+
162
+ render(<Modal {...props}>This is a ModalBox</Modal>);
163
+
164
+ const modalBoxBody = screen.getByText('This is a ModalBox');
165
+ expect(modalBoxBody).not.toHaveAccessibleName('modal box body aria label');
166
+ });
167
+
168
+ test('The modalBoxBody has the expected aria-label when bodyAriaLabel is passed', () => {
169
+ const props = {
170
+ isOpen: true
171
+ };
172
+
173
+ render(
174
+ <Modal bodyAriaLabel="modal box body aria label" {...props}>
175
+ This is a ModalBox
176
+ </Modal>
177
+ );
178
+
179
+ const modalBoxBody = screen.getByText('This is a ModalBox');
180
+ expect(modalBoxBody).toHaveAccessibleName('modal box body aria label');
181
+ });
182
+
183
+ test('The modalBoxBody has the expected aria role when bodyAriaLabel is passed and bodyAriaRole is not', () => {
184
+ const props = {
185
+ isOpen: true
186
+ };
187
+
188
+ render(
189
+ <Modal bodyAriaLabel="modal box body aria label" {...props}>
190
+ This is a ModalBox
191
+ </Modal>
192
+ );
193
+
194
+ const modalBoxBody = screen.getByRole('region', { name: 'modal box body aria label' });
195
+ expect(modalBoxBody).toBeInTheDocument();
196
+ });
197
+
198
+ test('The modalBoxBody has the expected aria role when bodyAriaRole is passed', () => {
199
+ const props = {
200
+ isOpen: true
201
+ };
202
+
203
+ render(
204
+ <Modal bodyAriaLabel="modal box body aria label" bodyAriaRole="article" {...props}>
205
+ This is a ModalBox
206
+ </Modal>
207
+ );
208
+
209
+ const modalBoxBody = screen.getByRole('article', { name: 'modal box body aria label' });
210
+ expect(modalBoxBody).toBeInTheDocument();
211
+ });
145
212
  });
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import { render } from '@testing-library/react';
3
+
4
+ import { ModalBoxHeader } from '../ModalBoxHeader';
5
+
6
+ test('ModalBoxHeader Test', () => {
7
+ const { asFragment } = render(<ModalBoxHeader>This is a ModalBox header</ModalBoxHeader>);
8
+ expect(asFragment()).toMatchSnapshot();
9
+ });
10
+
11
+ test('ModalBoxHeader help renders', () => {
12
+ const { asFragment } = render(<ModalBoxHeader help={<div>test</div>}>This is a ModalBox header</ModalBoxHeader>);
13
+ expect(asFragment()).toMatchSnapshot();
14
+ });
@@ -5,33 +5,55 @@ import { ModalBoxTitle } from '../ModalBoxTitle';
5
5
  import BullhornIcon from '@patternfly/react-icons/dist/esm/icons/bullhorn-icon';
6
6
 
7
7
  test('ModalBoxTitle alert variant', () => {
8
- const { asFragment } = render(<ModalBoxTitle title="Test Modal Box warning" id="boxId" titleIconVariant="warning" />);
8
+ const { asFragment } = render(
9
+ <ModalBoxTitle title="Test Modal Box warning" id="boxId" titleIconVariant="warning">
10
+ content
11
+ </ModalBoxTitle>
12
+ );
9
13
  expect(asFragment()).toMatchSnapshot();
10
14
  });
11
15
 
12
16
  test('ModalBoxTitle info variant', () => {
13
- const { asFragment } = render(<ModalBoxTitle title="Test Modal Box info" id="boxId" titleIconVariant="info" />);
17
+ const { asFragment } = render(
18
+ <ModalBoxTitle title="Test Modal Box info" id="boxId" titleIconVariant="info">
19
+ content
20
+ </ModalBoxTitle>
21
+ );
14
22
  expect(asFragment()).toMatchSnapshot();
15
23
  });
16
24
 
17
25
  test('ModalBoxTitle danger variant', () => {
18
- const { asFragment } = render(<ModalBoxTitle title="Test Modal Box danger" id="boxId" titleIconVariant="danger" />);
26
+ const { asFragment } = render(
27
+ <ModalBoxTitle title="Test Modal Box danger" id="boxId" titleIconVariant="danger">
28
+ content
29
+ </ModalBoxTitle>
30
+ );
19
31
  expect(asFragment()).toMatchSnapshot();
20
32
  });
21
33
 
22
34
  test('ModalBoxTitle custom variant', () => {
23
- const { asFragment } = render(<ModalBoxTitle title="Test Modal Box warning" id="boxId" titleIconVariant="custom" />);
35
+ const { asFragment } = render(
36
+ <ModalBoxTitle title="Test Modal Box warning" id="boxId" titleIconVariant="custom">
37
+ content
38
+ </ModalBoxTitle>
39
+ );
24
40
  expect(asFragment()).toMatchSnapshot();
25
41
  });
26
42
 
27
43
  test('ModalBoxTitle success variant', () => {
28
- const { asFragment } = render(<ModalBoxTitle title="Test Modal Box success" id="boxId" titleIconVariant="success" />);
44
+ const { asFragment } = render(
45
+ <ModalBoxTitle title="Test Modal Box success" id="boxId" titleIconVariant="success">
46
+ content
47
+ </ModalBoxTitle>
48
+ );
29
49
  expect(asFragment()).toMatchSnapshot();
30
50
  });
31
51
 
32
52
  test('ModalBoxTitle custom icon variant', () => {
33
53
  const { asFragment } = render(
34
- <ModalBoxTitle title="Test Modal Box custom" id="boxId" titleIconVariant={BullhornIcon} />
54
+ <ModalBoxTitle title="Test Modal Box custom" id="boxId" titleIconVariant={BullhornIcon}>
55
+ content
56
+ </ModalBoxTitle>
35
57
  );
36
58
  expect(asFragment()).toMatchSnapshot();
37
59
  });
@@ -0,0 +1,112 @@
1
+ import * as React from 'react';
2
+ import { render } from '@testing-library/react';
3
+
4
+ import { ModalContent } from '../ModalContent';
5
+
6
+ const modalContentProps = {
7
+ boxId: 'boxId',
8
+ labelId: 'labelId',
9
+ descriptorId: 'descriptorId'
10
+ };
11
+ test('Modal Content Test only body', () => {
12
+ const { asFragment } = render(
13
+ <ModalContent title="Test Modal Content title" isOpen {...modalContentProps}>
14
+ This is a ModalBox header
15
+ </ModalContent>
16
+ );
17
+ expect(asFragment()).toMatchSnapshot();
18
+ });
19
+
20
+ test('Modal Content Test isOpen', () => {
21
+ const { asFragment } = render(
22
+ <ModalContent title="Test Modal Content title" isOpen {...modalContentProps}>
23
+ This is a ModalBox header
24
+ </ModalContent>
25
+ );
26
+ expect(asFragment()).toMatchSnapshot();
27
+ });
28
+
29
+ test('Modal Content Test description', () => {
30
+ const { asFragment } = render(
31
+ <ModalContent
32
+ title="Test Modal Content title"
33
+ isOpen
34
+ description="This is a test description."
35
+ {...modalContentProps}
36
+ >
37
+ This is a ModalBox header
38
+ </ModalContent>
39
+ );
40
+ expect(asFragment()).toMatchSnapshot();
41
+ });
42
+
43
+ test('Modal Content Test with footer', () => {
44
+ const { asFragment } = render(
45
+ <ModalContent title="Test Modal Content title" isOpen actions={['Testing']} {...modalContentProps}>
46
+ This is a ModalBox header
47
+ </ModalContent>
48
+ );
49
+ expect(asFragment()).toMatchSnapshot();
50
+ });
51
+
52
+ test('Modal Content test without footer', () => {
53
+ const { asFragment } = render(
54
+ <ModalContent title="Test Modal Content title" isOpen {...modalContentProps}>
55
+ This is a ModalBox header
56
+ </ModalContent>
57
+ );
58
+ expect(asFragment()).toMatchSnapshot();
59
+ });
60
+
61
+ test('Modal Content Test with onclose', () => {
62
+ const { asFragment } = render(
63
+ <ModalContent
64
+ title="Test Modal Content title"
65
+ actions={['Testing footer']}
66
+ variant="large"
67
+ onClose={() => undefined}
68
+ isOpen
69
+ {...modalContentProps}
70
+ >
71
+ This is a ModalBox header
72
+ </ModalContent>
73
+ );
74
+ expect(asFragment()).toMatchSnapshot();
75
+ });
76
+
77
+ test('Modal Test with custom header', () => {
78
+ const header = <span id="test-custom-header">TEST</span>;
79
+
80
+ const { asFragment } = render(
81
+ <ModalContent
82
+ header={header}
83
+ title="test-custom-header-modal"
84
+ actions={['Testing footer']}
85
+ variant="large"
86
+ onClose={() => undefined}
87
+ isOpen
88
+ {...modalContentProps}
89
+ >
90
+ This is a ModalBox header
91
+ </ModalContent>
92
+ );
93
+ expect(asFragment()).toMatchSnapshot();
94
+ });
95
+
96
+ test('Modal Test with custom footer', () => {
97
+ const footer = <span id="test-custom-footer">TEST</span>;
98
+
99
+ const { asFragment } = render(
100
+ <ModalContent
101
+ footer={footer}
102
+ title="Test Modal Custom Footer"
103
+ variant="large"
104
+ onClose={() => undefined}
105
+ isOpen
106
+ {...modalContentProps}
107
+ >
108
+ This is a ModalBox header
109
+ </ModalContent>
110
+ );
111
+ expect(asFragment()).toMatchSnapshot();
112
+ });
@@ -1,20 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`Modal Test with custom header 1`] = `
4
- <DocumentFragment>
5
- <header
6
- class="pf-v6-c-modal-box__header"
7
- >
8
- <span
9
- id="test-custom-header"
10
- >
11
- TEST
12
- </span>
13
- </header>
14
- </DocumentFragment>
15
- `;
16
-
17
- exports[`ModalHeader Test 1`] = `
3
+ exports[`ModalBoxHeader Test 1`] = `
18
4
  <DocumentFragment>
19
5
  <header
20
6
  class="pf-v6-c-modal-box__header"
@@ -24,7 +10,7 @@ exports[`ModalHeader Test 1`] = `
24
10
  </DocumentFragment>
25
11
  `;
26
12
 
27
- exports[`ModalHeader help renders 1`] = `
13
+ exports[`ModalBoxHeader help renders 1`] = `
28
14
  <DocumentFragment>
29
15
  <header
30
16
  class="pf-v6-c-modal-box__header pf-m-help"