@patternfly/react-core 6.0.0-alpha.99 → 6.0.0-prerelease.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/CHANGELOG.md +53 -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/Content/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/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/DualListSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/esm/components/Button/Button.d.ts +1 -1
  115. package/dist/esm/components/Button/Button.d.ts.map +1 -1
  116. package/dist/esm/components/Button/Button.js +8 -3
  117. package/dist/esm/components/Button/Button.js.map +1 -1
  118. package/dist/esm/components/Card/CardHeader.d.ts +16 -10
  119. package/dist/esm/components/Card/CardHeader.d.ts.map +1 -1
  120. package/dist/esm/components/Card/CardHeader.js +25 -29
  121. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  122. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  123. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +1 -1
  124. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  125. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.d.ts +2 -0
  126. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
  127. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
  128. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
  129. package/dist/esm/components/DatePicker/DatePicker.d.ts.map +1 -1
  130. package/dist/esm/components/DatePicker/DatePicker.js +2 -5
  131. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  132. package/dist/esm/components/Drawer/DrawerCloseButton.d.ts.map +1 -1
  133. package/dist/esm/components/Drawer/DrawerCloseButton.js +1 -2
  134. package/dist/esm/components/Drawer/DrawerCloseButton.js.map +1 -1
  135. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  136. package/dist/esm/components/ExpandableSection/ExpandableSection.js +6 -4
  137. package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
  138. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  139. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js +6 -4
  140. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  141. package/dist/esm/components/LoginPage/LoginMainHeader.js +1 -1
  142. package/dist/esm/components/LoginPage/LoginMainHeader.js.map +1 -1
  143. package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts +2 -0
  144. package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts.map +1 -1
  145. package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.js +2 -2
  146. package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.js.map +1 -1
  147. package/dist/esm/components/NumberInput/NumberInput.d.ts.map +1 -1
  148. package/dist/esm/components/NumberInput/NumberInput.js +4 -6
  149. package/dist/esm/components/NumberInput/NumberInput.js.map +1 -1
  150. package/dist/esm/components/Page/Page.d.ts +3 -0
  151. package/dist/esm/components/Page/Page.d.ts.map +1 -1
  152. package/dist/esm/components/Page/Page.js +4 -2
  153. package/dist/esm/components/Page/Page.js.map +1 -1
  154. package/dist/esm/components/Tabs/TabAction.d.ts.map +1 -1
  155. package/dist/esm/components/Tabs/TabAction.js +1 -2
  156. package/dist/esm/components/Tabs/TabAction.js.map +1 -1
  157. package/dist/esm/demos/DashboardHeader.d.ts.map +1 -1
  158. package/dist/esm/demos/DashboardHeader.js +2 -2
  159. package/dist/esm/demos/DashboardHeader.js.map +1 -1
  160. package/dist/esm/demos/DashboardWrapper.d.ts.map +1 -1
  161. package/dist/esm/demos/DashboardWrapper.js +2 -2
  162. package/dist/esm/demos/DashboardWrapper.js.map +1 -1
  163. package/dist/js/components/Button/Button.d.ts +1 -1
  164. package/dist/js/components/Button/Button.d.ts.map +1 -1
  165. package/dist/js/components/Button/Button.js +8 -3
  166. package/dist/js/components/Button/Button.js.map +1 -1
  167. package/dist/js/components/Card/CardHeader.d.ts +16 -10
  168. package/dist/js/components/Card/CardHeader.d.ts.map +1 -1
  169. package/dist/js/components/Card/CardHeader.js +25 -29
  170. package/dist/js/components/Card/CardHeader.js.map +1 -1
  171. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  172. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +1 -1
  173. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  174. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.d.ts +2 -0
  175. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
  176. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
  177. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
  178. package/dist/js/components/DatePicker/DatePicker.d.ts.map +1 -1
  179. package/dist/js/components/DatePicker/DatePicker.js +2 -5
  180. package/dist/js/components/DatePicker/DatePicker.js.map +1 -1
  181. package/dist/js/components/Drawer/DrawerCloseButton.d.ts.map +1 -1
  182. package/dist/js/components/Drawer/DrawerCloseButton.js +1 -2
  183. package/dist/js/components/Drawer/DrawerCloseButton.js.map +1 -1
  184. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  185. package/dist/js/components/ExpandableSection/ExpandableSection.js +6 -4
  186. package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
  187. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  188. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +6 -4
  189. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  190. package/dist/js/components/LoginPage/LoginMainHeader.js +1 -1
  191. package/dist/js/components/LoginPage/LoginMainHeader.js.map +1 -1
  192. package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts +2 -0
  193. package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts.map +1 -1
  194. package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.js +2 -2
  195. package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.js.map +1 -1
  196. package/dist/js/components/NumberInput/NumberInput.d.ts.map +1 -1
  197. package/dist/js/components/NumberInput/NumberInput.js +4 -6
  198. package/dist/js/components/NumberInput/NumberInput.js.map +1 -1
  199. package/dist/js/components/Page/Page.d.ts +3 -0
  200. package/dist/js/components/Page/Page.d.ts.map +1 -1
  201. package/dist/js/components/Page/Page.js +4 -2
  202. package/dist/js/components/Page/Page.js.map +1 -1
  203. package/dist/js/components/Tabs/TabAction.d.ts.map +1 -1
  204. package/dist/js/components/Tabs/TabAction.js +1 -2
  205. package/dist/js/components/Tabs/TabAction.js.map +1 -1
  206. package/dist/js/demos/DashboardHeader.d.ts.map +1 -1
  207. package/dist/js/demos/DashboardHeader.js +2 -2
  208. package/dist/js/demos/DashboardHeader.js.map +1 -1
  209. package/dist/js/demos/DashboardWrapper.d.ts.map +1 -1
  210. package/dist/js/demos/DashboardWrapper.js +2 -2
  211. package/dist/js/demos/DashboardWrapper.js.map +1 -1
  212. package/dist/styles/assets/images/pf_logo_white.svg +16 -17
  213. package/dist/styles/base-no-reset.css +14 -13
  214. package/dist/styles/base.css +14 -13
  215. package/dist/umd/assets/{output-CIrjpuGJ.css → output-BBI9yTrj.css} +11073 -11075
  216. package/dist/umd/react-core.min.js +2 -2
  217. package/helpers/package.json +1 -1
  218. package/layouts/package.json +1 -1
  219. package/next/package.json +1 -1
  220. package/package.json +10 -11
  221. package/scripts/{copyStyles.js → copyStyles.mjs} +7 -4
  222. package/src/components/AboutModal/__tests__/__snapshots__/AboutModalBoxCloseButton.test.tsx.snap +3 -3
  223. package/src/components/Alert/__tests__/Generated/__snapshots__/AlertActionCloseButton.test.tsx.snap +1 -1
  224. package/src/components/Button/Button.tsx +19 -7
  225. package/src/components/Card/CardHeader.tsx +115 -93
  226. package/src/components/Card/__tests__/CardHeader.test.tsx +330 -1
  227. package/src/components/Card/__tests__/__snapshots__/CardHeader.test.tsx.snap +1 -1
  228. package/src/components/Card/examples/CardClickable.tsx +11 -21
  229. package/src/components/Card/examples/CardClickableSelectable.tsx +6 -3
  230. package/src/components/Card/examples/CardSelectable.tsx +6 -3
  231. package/src/components/Card/examples/CardSingleSelectable.tsx +6 -3
  232. package/src/components/ClipboardCopy/ClipboardCopy.tsx +1 -0
  233. package/src/components/ClipboardCopy/ClipboardCopyButton.tsx +4 -0
  234. package/src/components/ClipboardCopy/__tests__/ClipboardCopyButton.test.tsx +8 -0
  235. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyButton.test.tsx.snap +1 -1
  236. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +1 -1
  237. package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompactWithAdditionalAction.tsx +1 -1
  238. package/src/components/DataList/__tests__/Generated/__snapshots__/DataListToggle.test.tsx.snap +1 -1
  239. package/src/components/DataList/__tests__/__snapshots__/DataListToggle.test.tsx.snap +1 -1
  240. package/src/components/DatePicker/DatePicker.tsx +7 -9
  241. package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +44 -26
  242. package/src/components/Drawer/DrawerCloseButton.tsx +1 -3
  243. package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +6 -6
  244. package/src/components/DualListSelector/examples/DualListSelector.md +0 -1
  245. package/src/components/ExpandableSection/ExpandableSection.tsx +20 -15
  246. package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +25 -20
  247. package/src/components/ExpandableSection/__tests__/__snapshots__/ExpandableSection.test.tsx.snap +205 -145
  248. package/src/components/Form/__tests__/__snapshots__/FormFieldGroup.test.tsx.snap +1 -1
  249. package/src/components/Form/examples/FormFieldGroups.tsx +3 -15
  250. package/src/components/Label/__tests__/__snapshots__/Label.test.tsx.snap +3 -3
  251. package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +1 -1
  252. package/src/components/LoginPage/LoginMainHeader.tsx +2 -2
  253. package/src/components/LoginPage/__tests__/__snapshots__/LoginForm.test.tsx.snap +1 -1
  254. package/src/components/LoginPage/__tests__/__snapshots__/LoginMainHeader.test.tsx.snap +4 -4
  255. package/src/components/LoginPage/__tests__/__snapshots__/LoginPage.test.tsx.snap +2 -2
  256. package/src/components/Modal/__tests__/__snapshots__/ModalContent.test.tsx.snap +1 -1
  257. package/src/components/Modal/examples/Modal.md +0 -1
  258. package/src/components/Modal/examples/ModalWithHelp.tsx +1 -3
  259. package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatus.test.tsx.snap +183 -135
  260. package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatusItem.test.tsx.snap +8 -8
  261. package/src/components/NotificationDrawer/NotificationDrawerListItemHeader.tsx +8 -1
  262. package/src/components/NotificationDrawer/__tests__/NotificationDrawerListItemHeader.test.tsx +24 -0
  263. package/src/components/NotificationDrawer/examples/NotificationDrawerBasic.tsx +14 -21
  264. package/src/components/NotificationDrawer/examples/NotificationDrawerGroups.tsx +18 -27
  265. package/src/components/NumberInput/NumberInput.tsx +12 -10
  266. package/src/components/NumberInput/__tests__/__snapshots__/NumberInput.test.tsx.snap +26 -26
  267. package/src/components/Page/Page.tsx +6 -0
  268. package/src/components/Pagination/__tests__/Generated/__snapshots__/Navigation.test.tsx.snap +4 -4
  269. package/src/components/Pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +84 -84
  270. package/src/components/Popover/__tests__/Generated/__snapshots__/PopoverCloseButton.test.tsx.snap +1 -1
  271. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +17 -17
  272. package/src/components/Tabs/TabAction.tsx +2 -3
  273. package/src/components/Tabs/__tests__/__snapshots__/Tab.test.tsx.snap +1 -1
  274. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +4 -4
  275. package/src/demos/Banner.md +18 -15
  276. package/src/demos/CardDemos.md +1 -1
  277. package/src/demos/CustomMenus/examples/ContextSelectorDemo.tsx +2 -3
  278. package/src/demos/DashboardHeader.tsx +2 -3
  279. package/src/demos/DashboardWrapper.tsx +2 -0
  280. package/src/demos/JumpLinks.md +28 -17
  281. package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +2 -3
  282. package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +2 -3
  283. package/src/demos/RTL/examples/PaginatedTable.jsx +2 -3
  284. package/src/demos/RTL/examples/PaginatedTable.tsx +2 -3
  285. package/src/demos/examples/Card/CardUtilizationDemo3.tsx +3 -3
  286. package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +2 -3
  287. package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +2 -3
  288. package/src/demos/examples/Nav/NavFlyout.tsx +2 -3
  289. package/src/demos/examples/Nav/NavHorizontal.tsx +2 -3
  290. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +2 -3
  291. package/src/demos/examples/Nav/NavManual.tsx +2 -3
  292. package/src/demos/examples/Page/PageContextSelector.tsx +2 -3
  293. package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +2 -3
  294. package/src/demos/examples/Page/PageStickySectionGroup.tsx +2 -3
  295. package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +2 -3
  296. package/src/demos/examples/Tabs/ModalTabs.tsx +58 -48
  297. package/src/demos/examples/Tabs/NestedTabs.tsx +0 -2
  298. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +0 -2
  299. package/src/deprecated/components/Chip/__tests__/__snapshots__/Chip.test.tsx.snap +1 -1
  300. package/src/deprecated/components/Modal/__tests__/__snapshots__/ModalContent.test.tsx.snap +8 -8
  301. package/src/deprecated/components/Modal/examples/ModalWithHelp.tsx +1 -3
  302. package/src/deprecated/components/Wizard/__tests__/__snapshots__/Wizard.test.tsx.snap +2 -2
  303. package/dist/styles/assets/images/pf-logo-small.svg +0 -23
  304. package/dist/styles/assets/images/pf_logo_white.hbs +0 -35
  305. package/dist/styles/assets/images/pfbg-icon.svg +0 -1
  306. package/dist/styles/assets/pficon/pf-v5-pficon.woff2 +0 -0
  307. package/scripts/cleanDistExports.js +0 -14
  308. package/src/helpers/safeHTMLElement.js +0 -4
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
- import { render } from '@testing-library/react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
3
4
  import { CardHeader } from '../CardHeader';
5
+ import { CardContext } from '../Card';
4
6
 
5
7
  describe('CardHeader', () => {
6
8
  test('onExpand adds the toggle button', () => {
@@ -13,3 +15,330 @@ describe('CardHeader', () => {
13
15
  expect(asFragment()).toMatchSnapshot();
14
16
  });
15
17
  });
18
+
19
+ // TODO: check if hasNoOffset for actions/selectableActions and className for selectableActions render
20
+ describe('Card with actions and selectableActions', () => {
21
+ test('Does not render selectable or clickable actions by default', () => {
22
+ render(<CardHeader>Test</CardHeader>);
23
+
24
+ expect(screen.queryByRole('checkbox')).not.toBeInTheDocument();
25
+ expect(screen.queryByRole('button')).not.toBeInTheDocument();
26
+ expect(screen.queryByRole('link')).not.toBeInTheDocument();
27
+ });
28
+
29
+ test('Renders checkbox input when Card has isSelectable and selectableActions.variant = "multiple"', () => {
30
+ render(
31
+ <CardContext.Provider value={{ isSelectable: true }}>
32
+ <CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
33
+ </CardContext.Provider>
34
+ );
35
+
36
+ expect(screen.getByRole('checkbox')).toBeInTheDocument();
37
+ });
38
+ test('Renders checkbox input by default when Card has isSelectable and selectableActions is passed with any props', () => {
39
+ render(
40
+ <CardContext.Provider value={{ isSelectable: true }}>
41
+ <CardHeader selectableActions={{ className: 'test' }}>Test</CardHeader>
42
+ </CardContext.Provider>
43
+ );
44
+
45
+ expect(screen.getByRole('checkbox')).toBeInTheDocument();
46
+ });
47
+ test('Renders radio input when Card has isSelectable and selectableActions.variant = "single"', () => {
48
+ render(
49
+ <CardContext.Provider value={{ isSelectable: true }}>
50
+ <CardHeader selectableActions={{ variant: 'single' }}>Test</CardHeader>
51
+ </CardContext.Provider>
52
+ );
53
+
54
+ expect(screen.getByRole('radio')).toBeInTheDocument();
55
+ });
56
+ test('Renders default ID for selectable card input when selectableActions.selectableActionId is not passed', () => {
57
+ render(
58
+ <CardContext.Provider value={{ isSelectable: true }}>
59
+ <CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
60
+ </CardContext.Provider>
61
+ );
62
+
63
+ expect(screen.getByRole('checkbox').getAttribute('id')).toMatch(/^card-selectable/);
64
+ });
65
+ test('Renders custom ID for selectable card input when selectableActions.selectableActionId is passed', () => {
66
+ render(
67
+ <CardContext.Provider value={{ isSelectable: true }}>
68
+ <CardHeader selectableActions={{ variant: 'multiple', selectableActionId: 'custom-id' }}>Test</CardHeader>
69
+ </CardContext.Provider>
70
+ );
71
+
72
+ expect(screen.getByRole('checkbox')).toHaveAttribute('id', 'custom-id');
73
+ });
74
+ test('Renders name on a selectable card input', () => {
75
+ render(
76
+ <CardContext.Provider value={{ isSelectable: true }}>
77
+ <CardHeader selectableActions={{ variant: 'single', name: 'test' }}>Test</CardHeader>
78
+ </CardContext.Provider>
79
+ );
80
+
81
+ expect(screen.getByRole('radio')).toHaveAttribute('name', 'test');
82
+ });
83
+ test('Renders a selectable card input as not checked by default', () => {
84
+ render(
85
+ <CardContext.Provider value={{ isSelectable: true }}>
86
+ <CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
87
+ </CardContext.Provider>
88
+ );
89
+
90
+ expect(screen.getByRole('checkbox')).not.toBeChecked();
91
+ });
92
+ test('Renders a selectable card input as checked when Card has isSelected = true', () => {
93
+ render(
94
+ <CardContext.Provider value={{ isSelectable: true, isSelected: true }}>
95
+ <CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
96
+ </CardContext.Provider>
97
+ );
98
+
99
+ expect(screen.getByRole('checkbox')).toBeChecked();
100
+ });
101
+ test('Renders a selectable card input as checked when deprecated selectableActions.isChecked is true', () => {
102
+ render(
103
+ <CardContext.Provider value={{ isSelectable: true }}>
104
+ <CardHeader selectableActions={{ variant: 'multiple', isChecked: true }}>Test</CardHeader>
105
+ </CardContext.Provider>
106
+ );
107
+
108
+ expect(screen.getByRole('checkbox')).toBeChecked();
109
+ });
110
+ test('Renders additional props on selectable card input when selectableActions.selectableActionProps is passed', () => {
111
+ render(
112
+ <CardContext.Provider value={{ isSelectable: true }}>
113
+ <CardHeader selectableActions={{ variant: 'multiple', selectableActionProps: { style: { color: 'red' } } }}>
114
+ Test
115
+ </CardHeader>
116
+ </CardContext.Provider>
117
+ );
118
+
119
+ expect(screen.getByRole('checkbox')).toHaveAttribute('style');
120
+ });
121
+
122
+ test('Does not call onChange for selectable card when card is not clicked', async () => {
123
+ const user = userEvent.setup();
124
+ const onChangeMock = jest.fn();
125
+
126
+ render(
127
+ <>
128
+ <button>Test click</button>
129
+ <CardContext.Provider value={{ isSelectable: true }}>
130
+ <CardHeader selectableActions={{ variant: 'multiple', onChange: onChangeMock }}>Test</CardHeader>
131
+ </CardContext.Provider>
132
+ </>
133
+ );
134
+
135
+ await user.click(screen.getByRole('button', { name: 'Test click' }));
136
+ expect(onChangeMock).not.toHaveBeenCalled();
137
+ });
138
+ test('Calls onChange for selectable card when card is clicked', async () => {
139
+ const user = userEvent.setup();
140
+ const onChangeMock = jest.fn();
141
+
142
+ render(
143
+ <CardContext.Provider value={{ isSelectable: true }}>
144
+ <CardHeader selectableActions={{ variant: 'multiple', onChange: onChangeMock }}>Test</CardHeader>
145
+ </CardContext.Provider>
146
+ );
147
+
148
+ const labelElement = document.querySelector('label');
149
+ await user.click(labelElement as HTMLElement);
150
+ expect(onChangeMock).toHaveBeenCalled();
151
+ });
152
+
153
+ test('Renders button element when Card has isClickable and selectableActions.onClickAction is passed"', () => {
154
+ render(
155
+ <CardContext.Provider value={{ isClickable: true }}>
156
+ <CardHeader selectableActions={{ onClickAction: () => {} }}>Test</CardHeader>
157
+ </CardContext.Provider>
158
+ );
159
+
160
+ expect(screen.getByRole('button')).toBeInTheDocument();
161
+ });
162
+ test('Renders anchor element when Card has isClickable and selectableActions.to is passed"', () => {
163
+ render(
164
+ <CardContext.Provider value={{ isClickable: true }}>
165
+ <CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
166
+ </CardContext.Provider>
167
+ );
168
+
169
+ expect(screen.getByRole('link')).toBeInTheDocument();
170
+ });
171
+ test('Renders href when Card has isClickable and selectableActions.to is passed"', () => {
172
+ render(
173
+ <CardContext.Provider value={{ isClickable: true }}>
174
+ <CardHeader selectableActions={{ to: '#some-id' }}>Test</CardHeader>
175
+ </CardContext.Provider>
176
+ );
177
+
178
+ expect(screen.getByRole('link')).toHaveAttribute('href', '#some-id');
179
+ });
180
+ test('Does not render ID on clickable element when selectableActions.selectableActionId is not passed"', () => {
181
+ render(
182
+ <CardContext.Provider value={{ isClickable: true }}>
183
+ <CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
184
+ </CardContext.Provider>
185
+ );
186
+
187
+ expect(screen.getByRole('link')).not.toHaveAttribute('id');
188
+ });
189
+ test('Renders ID on clickable element when selectableActions.selectableActionId is passed"', () => {
190
+ render(
191
+ <CardContext.Provider value={{ isClickable: true }}>
192
+ <CardHeader selectableActions={{ to: '#', selectableActionId: 'custom-id' }}>Test</CardHeader>
193
+ </CardContext.Provider>
194
+ );
195
+
196
+ expect(screen.getByRole('link')).toHaveAttribute('id', 'custom-id');
197
+ });
198
+ test('Renders additional props on clickable element when selectableActions.selectableActionProps is passed', () => {
199
+ render(
200
+ <CardContext.Provider value={{ isClickable: true }}>
201
+ <CardHeader selectableActions={{ to: '#', selectableActionProps: { style: { color: 'red' } } }}>
202
+ Test
203
+ </CardHeader>
204
+ </CardContext.Provider>
205
+ );
206
+
207
+ expect(screen.getByRole('link')).toHaveAttribute('style');
208
+ });
209
+ test('Does not render target="_blank" on clickable card anchor element by default"', () => {
210
+ render(
211
+ <CardContext.Provider value={{ isClickable: true }}>
212
+ <CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
213
+ </CardContext.Provider>
214
+ );
215
+
216
+ expect(screen.getByRole('link')).not.toHaveAttribute('target');
217
+ });
218
+ test('Renders target="_blank" on clickable card anchor element when selectableActions.isExternalLink is true"', () => {
219
+ render(
220
+ <CardContext.Provider value={{ isClickable: true }}>
221
+ <CardHeader selectableActions={{ to: '#', isExternalLink: true }}>Test</CardHeader>
222
+ </CardContext.Provider>
223
+ );
224
+
225
+ expect(screen.getByRole('link')).toHaveAttribute('target', '_blank');
226
+ });
227
+ test('Calls onClickAction for clickable card when card is clicked', async () => {
228
+ const user = userEvent.setup();
229
+ const onClickMock = jest.fn();
230
+
231
+ render(
232
+ <CardContext.Provider value={{ isClickable: true }}>
233
+ <CardHeader selectableActions={{ onClickAction: onClickMock }}>Test</CardHeader>
234
+ </CardContext.Provider>
235
+ );
236
+
237
+ await user.click(screen.getByRole('button'));
238
+ expect(onClickMock).toHaveBeenCalled();
239
+ });
240
+
241
+ test('Throws error when Card is either clickable or selectable only and has actions prop passed"', () => {
242
+ const errorMock = jest.fn() as any;
243
+ global.console = { error: errorMock } as any;
244
+ render(
245
+ <CardContext.Provider value={{ isClickable: true }}>
246
+ <CardHeader
247
+ actions={{ actions: <button>Toggle</button> }}
248
+ selectableActions={{ to: '#', selectableActionAriaLabel: 'Link' }}
249
+ >
250
+ Test
251
+ </CardHeader>
252
+ </CardContext.Provider>
253
+ );
254
+
255
+ expect(errorMock).toHaveBeenCalled();
256
+ });
257
+ test('Does not throw error when Card is both clickable and selectable and has actions prop passed"', () => {
258
+ const errorMock = jest.fn() as any;
259
+ global.console = { error: errorMock } as any;
260
+ render(
261
+ <CardContext.Provider value={{ isClickable: true, isSelectable: true }}>
262
+ <CardHeader
263
+ actions={{ actions: <button>Toggle</button> }}
264
+ selectableActions={{ to: '#', selectableActionAriaLabel: 'Link' }}
265
+ >
266
+ Test
267
+ </CardHeader>
268
+ </CardContext.Provider>
269
+ );
270
+
271
+ expect(errorMock).not.toHaveBeenCalled();
272
+ });
273
+ test('Throws error when Card has isClickable and selectableActions.selectableActionAriaLabel or selectableActions.selectableActionAriaLabelledby is not passed"', () => {
274
+ const errorMock = jest.fn() as any;
275
+ global.console = { error: errorMock } as any;
276
+ render(
277
+ <CardContext.Provider value={{ isClickable: true }}>
278
+ <CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
279
+ </CardContext.Provider>
280
+ );
281
+
282
+ expect(errorMock).toHaveBeenCalled();
283
+ });
284
+ test('Throws error when Card has isSelectable and selectableActions.selectableActionAriaLabel or selectableActions.selectableActionAriaLabelledby is not passed"', () => {
285
+ const errorMock = jest.fn() as any;
286
+ global.console = { error: errorMock } as any;
287
+ render(
288
+ <CardContext.Provider value={{ isSelectable: true }}>
289
+ <CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
290
+ </CardContext.Provider>
291
+ );
292
+
293
+ expect(errorMock).toHaveBeenCalled();
294
+ });
295
+
296
+ test('Renders accessible name on selectable card input when selectableActions.selectableActionAriaLabel is passed', () => {
297
+ const accessibleName = 'Accessible name';
298
+ render(
299
+ <CardContext.Provider value={{ isSelectable: true }}>
300
+ <CardHeader selectableActions={{ variant: 'multiple', selectableActionAriaLabel: accessibleName }}>
301
+ Test
302
+ </CardHeader>
303
+ </CardContext.Provider>
304
+ );
305
+
306
+ expect(screen.getByRole('checkbox')).toHaveAccessibleName(accessibleName);
307
+ });
308
+ test('Renders accessible name on selectable card input when selectableActions.selectableActionAriaLabelledby is passed', () => {
309
+ const labelingId = 'labelling-id';
310
+ const accessibleName = 'Accessible name';
311
+ render(
312
+ <CardContext.Provider value={{ isSelectable: true }}>
313
+ <CardHeader selectableActions={{ variant: 'multiple', selectableActionAriaLabelledby: labelingId }}>
314
+ <div id={labelingId}>{accessibleName}</div>
315
+ </CardHeader>
316
+ </CardContext.Provider>
317
+ );
318
+
319
+ expect(screen.getByRole('checkbox')).toHaveAccessibleName(accessibleName);
320
+ });
321
+ test('Renders accessible name on clickable card clickable element when selectableActions.selectableActionAriaLabel is passed', () => {
322
+ const accessibleName = 'Accessible name';
323
+ render(
324
+ <CardContext.Provider value={{ isClickable: true }}>
325
+ <CardHeader selectableActions={{ to: '#', selectableActionAriaLabel: accessibleName }}>Test</CardHeader>
326
+ </CardContext.Provider>
327
+ );
328
+
329
+ expect(screen.getByRole('link')).toHaveAccessibleName(accessibleName);
330
+ });
331
+ test('Renders accessible name on clickable card clickable element when selectableActions.selectableActionAriaLabelledby is passed', () => {
332
+ const labelingId = 'labelling-id';
333
+ const accessibleName = 'Accessible name';
334
+ render(
335
+ <CardContext.Provider value={{ isClickable: true }}>
336
+ <CardHeader selectableActions={{ to: '#', selectableActionAriaLabelledby: labelingId }}>
337
+ <div id={labelingId}>{accessibleName}</div>
338
+ </CardHeader>
339
+ </CardContext.Provider>
340
+ );
341
+
342
+ expect(screen.getByRole('link')).toHaveAccessibleName(accessibleName);
343
+ });
344
+ });
@@ -29,7 +29,7 @@ exports[`CardHeader onExpand adds the toggle button 1`] = `
29
29
  type="button"
30
30
  >
31
31
  <span
32
- class="pf-v6-c-button__icon pf-m-start"
32
+ class="pf-v6-c-button__icon"
33
33
  >
34
34
  <span
35
35
  class="pf-v6-c-card__header-toggle-icon"
@@ -4,10 +4,6 @@ import { Card, CardHeader, CardTitle, CardBody, Checkbox, Gallery } from '@patte
4
4
  export const CardClickable: React.FunctionComponent = () => {
5
5
  const [isSecondary, setIsSecondary] = React.useState<boolean>(false);
6
6
 
7
- const id1 = 'clickable-card-input-1';
8
- const id2 = 'clickable-card-input-2';
9
- const id3 = 'clickable-card-input-3';
10
-
11
7
  const toggleVariant = (checked: boolean) => {
12
8
  setIsSecondary(checked);
13
9
  };
@@ -24,44 +20,38 @@ export const CardClickable: React.FunctionComponent = () => {
24
20
  />
25
21
  <div style={{ marginTop: '15px' }}>
26
22
  <Gallery hasGutter>
27
- <Card id="clickable-card-example-1" isClickable variant={isSecondary ? 'secondary' : 'default'}>
23
+ <Card isClickable variant={isSecondary ? 'secondary' : 'default'}>
28
24
  <CardHeader
29
25
  selectableActions={{
30
26
  // eslint-disable-next-line no-console
31
- onClickAction: () => console.log(`${id1} clicked`),
32
- selectableActionId: id1,
33
- selectableActionAriaLabelledby: 'clickable-card-example-1',
34
- name: 'clickable-card-example'
27
+ onClickAction: () => console.log(`First card in actionable example clicked`),
28
+ selectableActionAriaLabelledby: 'clickable-card-example-title-1'
35
29
  }}
36
30
  >
37
- <CardTitle>First card</CardTitle>
31
+ <CardTitle id="clickable-card-example-title-1">First card in the actionable example</CardTitle>
38
32
  </CardHeader>
39
33
  <CardBody>This card performs an action on click.</CardBody>
40
34
  </Card>
41
- <Card id="clickable-card-example-2" isClickable variant={isSecondary ? 'secondary' : 'default'}>
35
+ <Card isClickable variant={isSecondary ? 'secondary' : 'default'}>
42
36
  <CardHeader
43
37
  selectableActions={{
44
38
  to: '#',
45
- selectableActionId: id2,
46
- selectableActionAriaLabelledby: 'clickable-card-example-2',
47
- name: 'clickable-card-example'
39
+ selectableActionAriaLabelledby: 'clickable-card-example-title-2'
48
40
  }}
49
41
  >
50
- <CardTitle>Second card</CardTitle>
42
+ <CardTitle id="clickable-card-example-title-2">Second card in the actionable example</CardTitle>
51
43
  </CardHeader>
52
44
  <CardBody>This card can navigate to a link on click.</CardBody>
53
45
  </Card>
54
- <Card id="clickable-card-example-3" isClickable isDisabled variant={isSecondary ? 'secondary' : 'default'}>
46
+ <Card isClickable isDisabled variant={isSecondary ? 'secondary' : 'default'}>
55
47
  <CardHeader
56
48
  selectableActions={{
57
49
  // eslint-disable-next-line no-console
58
- onClickAction: () => console.log(`${id3} clicked`),
59
- selectableActionId: id3,
60
- selectableActionAriaLabelledby: 'clickable-card-example-3',
61
- name: 'clickable-card-example'
50
+ onClickAction: () => console.log(`Third card in actionable example clicked`),
51
+ selectableActionAriaLabelledby: 'clickable-card-example-title-3'
62
52
  }}
63
53
  >
64
- <CardTitle>Third card</CardTitle>
54
+ <CardTitle id="clickable-card-example-title-3">Third card in the actionable example</CardTitle>
65
55
  </CardHeader>
66
56
  <CardBody>This card is clickable but disabled.</CardBody>
67
57
  </Card>
@@ -61,7 +61,8 @@ export const CardClickable: React.FunctionComponent = () => {
61
61
  selectableActionId: id1,
62
62
  selectableActionAriaLabelledby: 'clickable-selectable-card-example-1',
63
63
  name: id1,
64
- onChange
64
+ onChange,
65
+ hasNoOffset: true
65
66
  }}
66
67
  >
67
68
  <CardTitle>
@@ -84,7 +85,8 @@ export const CardClickable: React.FunctionComponent = () => {
84
85
  selectableActionId: id2,
85
86
  selectableActionAriaLabelledby: 'clickable-selectable-card-example-2',
86
87
  name: id2,
87
- onChange
88
+ onChange,
89
+ hasNoOffset: true
88
90
  }}
89
91
  >
90
92
  <CardTitle>Second Card</CardTitle>
@@ -110,7 +112,8 @@ export const CardClickable: React.FunctionComponent = () => {
110
112
  selectableActionId: id3,
111
113
  selectableActionAriaLabelledby: 'clickable-selectable-card-example-3',
112
114
  name: id3,
113
- onChange
115
+ onChange,
116
+ hasNoOffset: true
114
117
  }}
115
118
  >
116
119
  <CardTitle>
@@ -53,7 +53,8 @@ export const SelectableCard: React.FunctionComponent = () => {
53
53
  selectableActionId: id1,
54
54
  selectableActionAriaLabelledby: 'selectable-card-example-1',
55
55
  name: id1,
56
- onChange
56
+ onChange,
57
+ hasNoOffset: true
57
58
  }}
58
59
  >
59
60
  <CardTitle>First card</CardTitle>
@@ -71,7 +72,8 @@ export const SelectableCard: React.FunctionComponent = () => {
71
72
  selectableActionId: id2,
72
73
  selectableActionAriaLabelledby: 'selectable-card-example-2',
73
74
  name: id2,
74
- onChange
75
+ onChange,
76
+ hasNoOffset: true
75
77
  }}
76
78
  >
77
79
  <CardTitle>Second card</CardTitle>
@@ -90,7 +92,8 @@ export const SelectableCard: React.FunctionComponent = () => {
90
92
  selectableActionId: id3,
91
93
  selectableActionAriaLabelledby: 'selectable-card-example-3',
92
94
  name: id3,
93
- onChange
95
+ onChange,
96
+ hasNoOffset: true
94
97
  }}
95
98
  >
96
99
  <CardTitle>Third card</CardTitle>
@@ -20,7 +20,8 @@ export const SingleSelectableCard: React.FunctionComponent = () => {
20
20
  selectableActionAriaLabelledby: 'single-selectable-card-example-1',
21
21
  name: 'single-selectable-card-example',
22
22
  variant: 'single',
23
- onChange
23
+ onChange,
24
+ hasNoOffset: true
24
25
  }}
25
26
  >
26
27
  <CardTitle>First card</CardTitle>
@@ -34,7 +35,8 @@ export const SingleSelectableCard: React.FunctionComponent = () => {
34
35
  selectableActionAriaLabelledby: 'single-selectable-card-example-2',
35
36
  name: 'single-selectable-card-example',
36
37
  variant: 'single',
37
- onChange
38
+ onChange,
39
+ hasNoOffset: true
38
40
  }}
39
41
  >
40
42
  <CardTitle>Second card</CardTitle>
@@ -48,7 +50,8 @@ export const SingleSelectableCard: React.FunctionComponent = () => {
48
50
  selectableActionAriaLabelledby: 'single-selectable-card-example-3',
49
51
  name: 'single-selectable-card-example',
50
52
  variant: 'single',
51
- onChange
53
+ onChange,
54
+ hasNoOffset: true
52
55
  }}
53
56
  >
54
57
  <CardTitle>Third card</CardTitle>
@@ -231,6 +231,7 @@ class ClipboardCopy extends React.Component<ClipboardCopyProps, ClipboardCopySta
231
231
  this.setState({ copied: true });
232
232
  }}
233
233
  onTooltipHidden={() => this.setState({ copied: false })}
234
+ hasNoPadding
234
235
  >
235
236
  {this.state.copied ? clickTip : hoverTip}
236
237
  </ClipboardCopyButton>
@@ -43,6 +43,8 @@ export interface ClipboardCopyButtonProps
43
43
  variant?: 'control' | 'plain';
44
44
  /** Callback when tooltip's hide transition has finished executing */
45
45
  onTooltipHidden?: () => void;
46
+ /** Removes padding from clipboard copy button. This is used for inline-compact variant */
47
+ hasNoPadding?: boolean;
46
48
  }
47
49
 
48
50
  export const ClipboardCopyButton: React.FunctionComponent<ClipboardCopyButtonProps> = ({
@@ -58,6 +60,7 @@ export const ClipboardCopyButton: React.FunctionComponent<ClipboardCopyButtonPro
58
60
  variant = 'control',
59
61
  onTooltipHidden = () => {},
60
62
  className,
63
+ hasNoPadding = false,
61
64
  ...props
62
65
  }: ClipboardCopyButtonProps) => {
63
66
  const triggerRef = React.createRef<HTMLButtonElement>();
@@ -78,6 +81,7 @@ export const ClipboardCopyButton: React.FunctionComponent<ClipboardCopyButtonPro
78
81
  <Button
79
82
  type="button"
80
83
  variant={variant}
84
+ hasNoPadding={hasNoPadding}
81
85
  onClick={onClick}
82
86
  aria-label={ariaLabel}
83
87
  className={className}
@@ -4,6 +4,7 @@ import { render, screen } from '@testing-library/react';
4
4
  import userEvent from '@testing-library/user-event';
5
5
  import { ClipboardCopyButton } from '../ClipboardCopyButton';
6
6
  import buttonStyles from '@patternfly/react-styles/css/components/Button/button';
7
+ import '@testing-library/jest-dom';
7
8
 
8
9
  jest.mock('../../Tooltip', () => ({
9
10
  Tooltip: ({ content, children, exitDelay, entryDelay, maxWidth, position, onTooltipHidden }) => (
@@ -89,6 +90,13 @@ test('Passes variant to Button when variant is passed', () => {
89
90
  expect(screen.getByRole('button')).toHaveClass(buttonStyles.modifiers.plain);
90
91
  });
91
92
 
93
+ test('Removes padding when hasNoPadding prop passed', () => {
94
+ render(<ClipboardCopyButton variant="plain" hasNoPadding {...requiredProps} />);
95
+
96
+ expect(screen.getByRole('button')).toHaveClass(buttonStyles.modifiers.plain);
97
+ expect(screen.getByRole('button')).toHaveClass(buttonStyles.modifiers.noPadding);
98
+ });
99
+
92
100
  test('Calls onClick when ClipboardCopyButton is clicked', async () => {
93
101
  const user = userEvent.setup();
94
102
 
@@ -39,7 +39,7 @@ exports[`Matches snapshot 1`] = `
39
39
  type="button"
40
40
  >
41
41
  <span
42
- class="pf-v6-c-button__icon pf-m-start"
42
+ class="pf-v6-c-button__icon"
43
43
  >
44
44
  <svg
45
45
  aria-hidden="true"
@@ -15,7 +15,7 @@ exports[`Matches snapshot 1`] = `
15
15
  type="button"
16
16
  >
17
17
  <span
18
- class="pf-v6-c-button__icon pf-m-start"
18
+ class="pf-v6-c-button__icon"
19
19
  >
20
20
  <div
21
21
  class="pf-v6-c-clipboard-copy__toggle-icon"
@@ -9,7 +9,7 @@ export const ClipboardCopyInlineCompactWithAdditionalAction: React.FunctionCompo
9
9
  variant="inline-compact"
10
10
  additionalActions={
11
11
  <ClipboardCopyAction>
12
- <Button variant="plain" aria-label="Run in web terminal" icon={<PlayIcon aria-hidden />} />
12
+ <Button variant="plain" hasNoPadding aria-label="Run in web terminal" icon={<PlayIcon aria-hidden />} />
13
13
  </ClipboardCopyAction>
14
14
  }
15
15
  >
@@ -22,7 +22,7 @@ exports[`DataListToggle should match snapshot (auto-generated) 1`] = `
22
22
  type="button"
23
23
  >
24
24
  <span
25
- class="pf-v6-c-button__icon pf-m-start"
25
+ class="pf-v6-c-button__icon"
26
26
  >
27
27
  <div
28
28
  class="pf-v6-c-data-list__toggle-icon"
@@ -22,7 +22,7 @@ exports[`Renders to match snapshot 1`] = `
22
22
  type="button"
23
23
  >
24
24
  <span
25
- class="pf-v6-c-button__icon pf-m-start"
25
+ class="pf-v6-c-button__icon"
26
26
  >
27
27
  <div
28
28
  class="pf-v6-c-data-list__toggle-icon"
@@ -1,9 +1,9 @@
1
1
  import * as React from 'react';
2
2
  import { css } from '@patternfly/react-styles';
3
3
  import styles from '@patternfly/react-styles/css/components/DatePicker/date-picker';
4
- import buttonStyles from '@patternfly/react-styles/css/components/Button/button';
5
4
  import calendarMonthStyles from '@patternfly/react-styles/css/components/CalendarMonth/calendar-month';
6
5
  import { TextInput, TextInputProps } from '../TextInput/TextInput';
6
+ import { Button } from '../Button';
7
7
  import { Popover, PopoverProps } from '../Popover/Popover';
8
8
  import { InputGroup, InputGroupItem } from '../InputGroup';
9
9
  import OutlinedCalendarAltIcon from '@patternfly/react-icons/dist/esm/icons/outlined-calendar-alt-icon';
@@ -325,17 +325,15 @@ const DatePickerBase = (
325
325
  />
326
326
  </InputGroupItem>
327
327
  <InputGroupItem>
328
- <button
328
+ <Button
329
329
  ref={buttonRef}
330
- // TODO: Removed style follow up work with issue #8457
331
- className={css(buttonStyles.button, buttonStyles.modifiers.control)}
330
+ variant="control"
332
331
  aria-label={buttonAriaLabel}
333
- type="button"
334
332
  onClick={() => setPopoverOpen(!popoverOpen)}
335
- disabled={isDisabled}
336
- >
337
- <OutlinedCalendarAltIcon />
338
- </button>
333
+ isDisabled={isDisabled}
334
+ icon={<OutlinedCalendarAltIcon />}
335
+ aria-haspopup="dialog"
336
+ />
339
337
  </InputGroupItem>
340
338
  </InputGroup>
341
339
  </div>