@patternfly/react-core 6.5.0-prerelease.21 → 6.5.0-prerelease.25

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 (276) hide show
  1. package/CHANGELOG.md +23 -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/Compass/package.json +1 -1
  23. package/dist/dynamic/components/Content/package.json +1 -1
  24. package/dist/dynamic/components/DataList/package.json +1 -1
  25. package/dist/dynamic/components/DatePicker/package.json +1 -1
  26. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  27. package/dist/dynamic/components/Divider/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hero/package.json +1 -1
  38. package/dist/dynamic/components/Hint/package.json +1 -1
  39. package/dist/dynamic/components/Icon/package.json +1 -1
  40. package/dist/dynamic/components/InputGroup/package.json +1 -1
  41. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  42. package/dist/dynamic/components/Label/package.json +1 -1
  43. package/dist/dynamic/components/List/package.json +1 -1
  44. package/dist/dynamic/components/LoginPage/package.json +1 -1
  45. package/dist/dynamic/components/Masthead/package.json +1 -1
  46. package/dist/dynamic/components/Menu/package.json +1 -1
  47. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  48. package/dist/dynamic/components/Modal/package.json +1 -1
  49. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  50. package/dist/dynamic/components/Nav/package.json +1 -1
  51. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  52. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  53. package/dist/dynamic/components/NumberInput/package.json +1 -1
  54. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  55. package/dist/dynamic/components/Page/package.json +1 -1
  56. package/dist/dynamic/components/Pagination/package.json +1 -1
  57. package/dist/dynamic/components/Panel/package.json +1 -1
  58. package/dist/dynamic/components/Popover/package.json +1 -1
  59. package/dist/dynamic/components/Progress/package.json +1 -1
  60. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  61. package/dist/dynamic/components/Radio/package.json +1 -1
  62. package/dist/dynamic/components/SearchInput/package.json +1 -1
  63. package/dist/dynamic/components/Select/package.json +1 -1
  64. package/dist/dynamic/components/Sidebar/package.json +1 -1
  65. package/dist/dynamic/components/SimpleList/package.json +1 -1
  66. package/dist/dynamic/components/Skeleton/package.json +1 -1
  67. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  68. package/dist/dynamic/components/Slider/package.json +1 -1
  69. package/dist/dynamic/components/Spinner/package.json +1 -1
  70. package/dist/dynamic/components/Switch/package.json +1 -1
  71. package/dist/dynamic/components/Tabs/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/TimePicker/package.json +1 -1
  76. package/dist/dynamic/components/Timestamp/package.json +1 -1
  77. package/dist/dynamic/components/Title/package.json +1 -1
  78. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  79. package/dist/dynamic/components/Toolbar/package.json +1 -1
  80. package/dist/dynamic/components/Tooltip/package.json +1 -1
  81. package/dist/dynamic/components/TreeView/package.json +1 -1
  82. package/dist/dynamic/components/Truncate/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/package.json +1 -1
  92. package/dist/dynamic/helpers/AnimationsProvider/AnimationsProvider/package.json +1 -1
  93. package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  103. package/dist/dynamic/helpers/package.json +1 -1
  104. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  105. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  106. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  107. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  108. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  109. package/dist/dynamic/helpers/util/package.json +1 -1
  110. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  111. package/dist/dynamic/layouts/Flex/package.json +1 -1
  112. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  113. package/dist/dynamic/layouts/Grid/package.json +1 -1
  114. package/dist/dynamic/layouts/Level/package.json +1 -1
  115. package/dist/dynamic/layouts/Split/package.json +1 -1
  116. package/dist/dynamic/layouts/Stack/package.json +1 -1
  117. package/dist/dynamic/styles/package.json +1 -1
  118. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts +8 -0
  119. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  120. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +4 -2
  121. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  122. package/dist/esm/components/Compass/Compass.d.ts +5 -3
  123. package/dist/esm/components/Compass/Compass.d.ts.map +1 -1
  124. package/dist/esm/components/Compass/Compass.js +3 -3
  125. package/dist/esm/components/Compass/Compass.js.map +1 -1
  126. package/dist/esm/components/Compass/CompassContent.d.ts +1 -1
  127. package/dist/esm/components/Compass/CompassContent.js +1 -1
  128. package/dist/esm/components/Compass/CompassContent.js.map +1 -1
  129. package/dist/esm/components/Compass/CompassMainHeader.d.ts +4 -4
  130. package/dist/esm/components/Compass/CompassMainHeaderContent.d.ts +2 -2
  131. package/dist/esm/components/Compass/CompassMainHeaderTitle.d.ts +2 -2
  132. package/dist/esm/components/Compass/CompassMainHeaderToolbar.d.ts +2 -2
  133. package/dist/esm/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
  134. package/dist/esm/components/Drawer/DrawerPanelContent.js +7 -1
  135. package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
  136. package/dist/esm/components/Form/FormGroup.d.ts.map +1 -1
  137. package/dist/esm/components/Form/FormGroup.js +1 -1
  138. package/dist/esm/components/Form/FormGroup.js.map +1 -1
  139. package/dist/esm/components/Masthead/Masthead.d.ts +2 -0
  140. package/dist/esm/components/Masthead/Masthead.d.ts.map +1 -1
  141. package/dist/esm/components/Masthead/Masthead.js +2 -2
  142. package/dist/esm/components/Masthead/Masthead.js.map +1 -1
  143. package/dist/esm/components/Nav/Nav.d.ts +2 -2
  144. package/dist/esm/components/Nav/Nav.d.ts.map +1 -1
  145. package/dist/esm/components/Nav/Nav.js +1 -1
  146. package/dist/esm/components/Nav/Nav.js.map +1 -1
  147. package/dist/esm/components/Nav/NavItem.d.ts +5 -1
  148. package/dist/esm/components/Nav/NavItem.d.ts.map +1 -1
  149. package/dist/esm/components/Nav/NavItem.js +8 -6
  150. package/dist/esm/components/Nav/NavItem.js.map +1 -1
  151. package/dist/esm/components/Page/Page.d.ts +2 -0
  152. package/dist/esm/components/Page/Page.d.ts.map +1 -1
  153. package/dist/esm/components/Page/Page.js +3 -3
  154. package/dist/esm/components/Page/Page.js.map +1 -1
  155. package/dist/esm/components/Toolbar/Toolbar.d.ts +2 -0
  156. package/dist/esm/components/Toolbar/Toolbar.d.ts.map +1 -1
  157. package/dist/esm/components/Toolbar/Toolbar.js +2 -2
  158. package/dist/esm/components/Toolbar/Toolbar.js.map +1 -1
  159. package/dist/esm/components/Wizard/WizardNavInternal.js +3 -3
  160. package/dist/esm/components/Wizard/WizardNavInternal.js.map +1 -1
  161. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +8 -0
  162. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  163. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +4 -2
  164. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  165. package/dist/js/components/Compass/Compass.d.ts +5 -3
  166. package/dist/js/components/Compass/Compass.d.ts.map +1 -1
  167. package/dist/js/components/Compass/Compass.js +3 -3
  168. package/dist/js/components/Compass/Compass.js.map +1 -1
  169. package/dist/js/components/Compass/CompassContent.d.ts +1 -1
  170. package/dist/js/components/Compass/CompassContent.js +1 -1
  171. package/dist/js/components/Compass/CompassContent.js.map +1 -1
  172. package/dist/js/components/Compass/CompassMainHeader.d.ts +4 -4
  173. package/dist/js/components/Compass/CompassMainHeaderContent.d.ts +2 -2
  174. package/dist/js/components/Compass/CompassMainHeaderTitle.d.ts +2 -2
  175. package/dist/js/components/Compass/CompassMainHeaderToolbar.d.ts +2 -2
  176. package/dist/js/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
  177. package/dist/js/components/Drawer/DrawerPanelContent.js +7 -1
  178. package/dist/js/components/Drawer/DrawerPanelContent.js.map +1 -1
  179. package/dist/js/components/Form/FormGroup.d.ts.map +1 -1
  180. package/dist/js/components/Form/FormGroup.js +1 -1
  181. package/dist/js/components/Form/FormGroup.js.map +1 -1
  182. package/dist/js/components/Masthead/Masthead.d.ts +2 -0
  183. package/dist/js/components/Masthead/Masthead.d.ts.map +1 -1
  184. package/dist/js/components/Masthead/Masthead.js +2 -2
  185. package/dist/js/components/Masthead/Masthead.js.map +1 -1
  186. package/dist/js/components/Nav/Nav.d.ts +2 -2
  187. package/dist/js/components/Nav/Nav.d.ts.map +1 -1
  188. package/dist/js/components/Nav/Nav.js +1 -1
  189. package/dist/js/components/Nav/Nav.js.map +1 -1
  190. package/dist/js/components/Nav/NavItem.d.ts +5 -1
  191. package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
  192. package/dist/js/components/Nav/NavItem.js +7 -6
  193. package/dist/js/components/Nav/NavItem.js.map +1 -1
  194. package/dist/js/components/Page/Page.d.ts +2 -0
  195. package/dist/js/components/Page/Page.d.ts.map +1 -1
  196. package/dist/js/components/Page/Page.js +3 -3
  197. package/dist/js/components/Page/Page.js.map +1 -1
  198. package/dist/js/components/Toolbar/Toolbar.d.ts +2 -0
  199. package/dist/js/components/Toolbar/Toolbar.d.ts.map +1 -1
  200. package/dist/js/components/Toolbar/Toolbar.js +2 -2
  201. package/dist/js/components/Toolbar/Toolbar.js.map +1 -1
  202. package/dist/js/components/Wizard/WizardNavInternal.js +3 -3
  203. package/dist/js/components/Wizard/WizardNavInternal.js.map +1 -1
  204. package/dist/umd/assets/{output-Bhl00hr4.css → output-ClqppqYH.css} +16187 -15964
  205. package/dist/umd/react-core.min.js +5 -5
  206. package/helpers/package.json +1 -1
  207. package/layouts/package.json +1 -1
  208. package/next/package.json +1 -1
  209. package/package.json +7 -7
  210. package/src/components/ClipboardCopy/ClipboardCopy.tsx +16 -1
  211. package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +72 -0
  212. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +1 -1
  213. package/src/components/Compass/Compass.tsx +46 -30
  214. package/src/components/Compass/CompassContent.tsx +2 -2
  215. package/src/components/Compass/CompassMainHeader.tsx +4 -4
  216. package/src/components/Compass/CompassMainHeaderContent.tsx +2 -2
  217. package/src/components/Compass/CompassMainHeaderTitle.tsx +2 -2
  218. package/src/components/Compass/CompassMainHeaderToolbar.tsx +2 -2
  219. package/src/components/Compass/__tests__/Compass.test.tsx +10 -0
  220. package/src/components/Compass/__tests__/__snapshots__/Compass.test.tsx.snap +1 -1
  221. package/src/components/Compass/__tests__/__snapshots__/CompassContent.test.tsx.snap +1 -1
  222. package/src/components/Compass/examples/Compass.md +16 -15
  223. package/src/components/Compass/examples/CompassDockLayout.tsx +25 -0
  224. package/src/components/Compass/examples/compass.css +16 -4
  225. package/src/components/Drawer/DrawerPanelContent.tsx +7 -0
  226. package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +20 -0
  227. package/src/components/Drawer/__tests__/Generated/__snapshots__/DrawerPanelContent.test.tsx.snap +1 -0
  228. package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +2 -0
  229. package/src/components/Drawer/examples/Drawer.md +1 -1
  230. package/src/components/Drawer/examples/DrawerAdditionalSectionAboveContent.tsx +1 -1
  231. package/src/components/Drawer/examples/DrawerBasic.tsx +1 -1
  232. package/src/components/Drawer/examples/DrawerBasicInline.tsx +1 -1
  233. package/src/components/Drawer/examples/DrawerBasicPill.tsx +1 -1
  234. package/src/components/Drawer/examples/DrawerBreakpoint.tsx +1 -1
  235. package/src/components/Drawer/examples/DrawerInlinePanelEnd.tsx +1 -1
  236. package/src/components/Drawer/examples/DrawerInlinePanelStart.tsx +1 -1
  237. package/src/components/Drawer/examples/DrawerModifiedContentPadding.tsx +1 -1
  238. package/src/components/Drawer/examples/DrawerModifiedPanelPadding.tsx +1 -1
  239. package/src/components/Drawer/examples/DrawerPanelBottom.tsx +1 -1
  240. package/src/components/Drawer/examples/DrawerPanelEnd.tsx +1 -1
  241. package/src/components/Drawer/examples/DrawerPanelStart.tsx +1 -1
  242. package/src/components/Drawer/examples/DrawerPillInline.tsx +1 -1
  243. package/src/components/Drawer/examples/DrawerResizableAtEnd.tsx +1 -1
  244. package/src/components/Drawer/examples/DrawerResizableAtStart.tsx +1 -1
  245. package/src/components/Drawer/examples/DrawerResizableOnBottom.tsx +1 -1
  246. package/src/components/Drawer/examples/DrawerResizableOnInline.tsx +1 -1
  247. package/src/components/Drawer/examples/DrawerStatic.tsx +1 -1
  248. package/src/components/Dropdown/examples/Dropdown.md +13 -1
  249. package/src/components/Dropdown/examples/DropdownWithSplit.tsx +97 -0
  250. package/src/components/Form/FormGroup.tsx +1 -2
  251. package/src/components/Form/__tests__/__snapshots__/FormGroup.test.tsx.snap +1 -1
  252. package/src/components/LoginPage/__tests__/__snapshots__/LoginForm.test.tsx.snap +6 -6
  253. package/src/components/Masthead/Masthead.tsx +4 -0
  254. package/src/components/Masthead/__tests__/Masthead.test.tsx +25 -1
  255. package/src/components/Nav/Nav.tsx +3 -2
  256. package/src/components/Nav/NavItem.tsx +27 -3
  257. package/src/components/Nav/__tests__/Nav.test.tsx +15 -0
  258. package/src/components/Page/Page.tsx +5 -1
  259. package/src/components/Page/__tests__/Page.test.tsx +17 -0
  260. package/src/components/Toolbar/Toolbar.tsx +4 -0
  261. package/src/components/Toolbar/__tests__/Toolbar.test.tsx +34 -1
  262. package/src/components/Wizard/WizardNavInternal.tsx +3 -3
  263. package/src/components/Wizard/__tests__/Wizard.test.tsx +39 -0
  264. package/src/demos/Compass/Compass.md +40 -0
  265. package/src/demos/Compass/examples/CompassDockDemo.tsx +215 -0
  266. package/src/demos/Page.md +12 -1
  267. package/src/demos/assets/PF-IconLogo-color.svg +17 -0
  268. package/src/demos/examples/Page/PageDockedNav.tsx +259 -0
  269. package/src/layouts/Bullseye/examples/bullseye.css +2 -2
  270. package/src/layouts/Flex/examples/flex.css +3 -3
  271. package/src/layouts/Gallery/examples/gallery.css +2 -2
  272. package/src/layouts/Grid/examples/grid.css +2 -2
  273. package/src/layouts/Level/examples/level.css +4 -4
  274. package/src/layouts/Split/examples/split.css +2 -2
  275. package/src/layouts/Stack/examples/stack.css +4 -4
  276. /package/src/{components → demos}/Compass/examples/CompassDemo.tsx +0 -0
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.5.0-prerelease.20","private":true}
1
+ {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.5.0-prerelease.24","private":true}
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.5.0-prerelease.20","private":true}
1
+ {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.5.0-prerelease.24","private":true}
package/next/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.5.0-prerelease.20","private":true}
1
+ {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.5.0-prerelease.24","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.5.0-prerelease.21",
3
+ "version": "6.5.0-prerelease.25",
4
4
  "description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
5
5
  "main": "dist/js/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -46,15 +46,15 @@
46
46
  "subpaths": "node ../../scripts/exportSubpaths.mjs --config subpaths.config.json"
47
47
  },
48
48
  "dependencies": {
49
- "@patternfly/react-icons": "^6.5.0-prerelease.8",
50
- "@patternfly/react-styles": "^6.5.0-prerelease.6",
51
- "@patternfly/react-tokens": "^6.5.0-prerelease.6",
52
- "focus-trap": "7.6.4",
49
+ "@patternfly/react-icons": "^6.5.0-prerelease.11",
50
+ "@patternfly/react-styles": "^6.5.0-prerelease.9",
51
+ "@patternfly/react-tokens": "^6.5.0-prerelease.9",
52
+ "focus-trap": "7.6.6",
53
53
  "react-dropzone": "^14.3.5",
54
54
  "tslib": "^2.8.1"
55
55
  },
56
56
  "devDependencies": {
57
- "@patternfly/patternfly": "6.5.0-prerelease.27",
57
+ "@patternfly/patternfly": "6.5.0-prerelease.33",
58
58
  "case-anything": "^3.1.2",
59
59
  "css": "^3.0.0",
60
60
  "fs-extra": "^11.3.0"
@@ -63,5 +63,5 @@
63
63
  "react": "^17 || ^18 || ^19",
64
64
  "react-dom": "^17 || ^18 || ^19"
65
65
  },
66
- "gitHead": "5d9af44db11de73886f034a15546618870aab25c"
66
+ "gitHead": "e9f9e1fc3f1dfdc3f9474618a303d2f811ea06c5"
67
67
  }
@@ -55,6 +55,10 @@ export interface ClipboardCopyProps extends Omit<React.HTMLProps<HTMLDivElement>
55
55
  textAriaLabel?: string;
56
56
  /** Aria-label to use on the ClipboardCopyToggle. */
57
57
  toggleAriaLabel?: string;
58
+ /** ID to use on the TextInput. */
59
+ inputId?: string;
60
+ /** Name attribute to use on the TextInput. */
61
+ inputName?: string;
58
62
  /** Flag to show if the input is read only. */
59
63
  isReadOnly?: boolean;
60
64
  /** Flag to determine if clipboard copy is in the expanded state initially */
@@ -91,6 +95,10 @@ export interface ClipboardCopyProps extends Omit<React.HTMLProps<HTMLDivElement>
91
95
  onCopy?: (event: React.ClipboardEvent<HTMLDivElement>, text?: React.ReactNode) => void;
92
96
  /** A function that is triggered on changing the text. */
93
97
  onChange?: (event: React.FormEvent, text?: string) => void;
98
+ /** Callback function when text input is focused */
99
+ onInputFocus?: (event?: any) => void;
100
+ /** Callback function when text input is blurred (focus leaves) */
101
+ onInputBlur?: (event?: any) => void;
94
102
  /** The text which is copied. */
95
103
  children: string | string[];
96
104
  /** Additional actions for inline clipboard copy. Should be wrapped with ClipboardCopyAction. */
@@ -177,6 +185,8 @@ class ClipboardCopy extends Component<ClipboardCopyProps, ClipboardCopyState> {
177
185
  /* eslint-disable @typescript-eslint/no-unused-vars */
178
186
  isExpanded,
179
187
  onChange, // Don't pass to <div>
188
+ onInputFocus, // Don't pass to <div>
189
+ onInputBlur, // Don't pass to <div>
180
190
  /* eslint-enable @typescript-eslint/no-unused-vars */
181
191
  isReadOnly,
182
192
  isCode,
@@ -189,6 +199,8 @@ class ClipboardCopy extends Component<ClipboardCopyProps, ClipboardCopyState> {
189
199
  clickTip,
190
200
  textAriaLabel,
191
201
  toggleAriaLabel,
202
+ inputId,
203
+ inputName,
192
204
  variant,
193
205
  position,
194
206
  className,
@@ -295,8 +307,11 @@ class ClipboardCopy extends Component<ClipboardCopyProps, ClipboardCopyState> {
295
307
  readOnlyVariant={isReadOnly || this.state.expanded ? 'default' : undefined}
296
308
  onChange={this.updateText}
297
309
  value={this.state.expanded ? this.state.textWhenExpanded : copyableText}
298
- id={`text-input-${id}`}
310
+ id={inputId ?? `text-input-${id}`}
311
+ name={inputName}
299
312
  aria-label={textAriaLabel}
313
+ onFocus={onInputFocus}
314
+ onBlur={onInputBlur}
300
315
  {...(isCode && { dir: 'ltr' })}
301
316
  />
302
317
  <ClipboardCopyButton
@@ -309,6 +309,18 @@ test('Passes textAriaLabel to TextInput', () => {
309
309
  expect(screen.getByRole('textbox')).toHaveAccessibleName('text label');
310
310
  });
311
311
 
312
+ test('Passes inputId to TextInput', () => {
313
+ render(<ClipboardCopy inputId="custom-input-id">{children}</ClipboardCopy>);
314
+
315
+ expect(screen.getByRole('textbox')).toHaveAttribute('id', 'custom-input-id');
316
+ });
317
+
318
+ test('Passes inputName to TextInput', () => {
319
+ render(<ClipboardCopy inputName="custom-input-name">{children}</ClipboardCopy>);
320
+
321
+ expect(screen.getByRole('textbox')).toHaveAttribute('name', 'custom-input-name');
322
+ });
323
+
312
324
  test('Calls onChange when ClipboardCopy textinput is typed in', async () => {
313
325
  const onChangeMock = jest.fn();
314
326
  const user = userEvent.setup();
@@ -338,6 +350,66 @@ test('Does not call onChange when ClipboardCopy textinput is not typed in', asyn
338
350
  expect(onChangeMock).not.toHaveBeenCalled();
339
351
  });
340
352
 
353
+ test('Calls onFocus when ClipboardCopy textinput is focused', async () => {
354
+ const onFocusMock = jest.fn();
355
+ const user = userEvent.setup();
356
+
357
+ render(<ClipboardCopy onInputFocus={onFocusMock}>{children}</ClipboardCopy>);
358
+
359
+ await user.click(screen.getByRole('textbox'));
360
+
361
+ expect(onFocusMock).toHaveBeenCalledTimes(1);
362
+ });
363
+
364
+ test('Does not call onFocus when ClipboardCopy textinput is not focused', async () => {
365
+ const onFocusMock = jest.fn();
366
+ const user = userEvent.setup();
367
+
368
+ render(
369
+ <>
370
+ <ClipboardCopy onInputFocus={onFocusMock}>{children}</ClipboardCopy>
371
+ <input aria-label="native input" />
372
+ </>
373
+ );
374
+
375
+ await user.click(screen.getByRole('textbox', { name: 'native input' }));
376
+
377
+ expect(onFocusMock).not.toHaveBeenCalled();
378
+ });
379
+
380
+ test('Calls onBlur when ClipboardCopy textinput loses focus', async () => {
381
+ const onBlurMock = jest.fn();
382
+ const user = userEvent.setup();
383
+
384
+ render(
385
+ <>
386
+ <ClipboardCopy onInputBlur={onBlurMock}>{children}</ClipboardCopy>
387
+ <input aria-label="native input" />
388
+ </>
389
+ );
390
+
391
+ await user.click(screen.getByRole('textbox', { name: 'Copyable input' }));
392
+ await user.click(screen.getByRole('textbox', { name: 'native input' }));
393
+
394
+ expect(onBlurMock).toHaveBeenCalledTimes(1);
395
+ });
396
+
397
+ test('Does not call onBlur when ClipboardCopy textinput does not lose focus', async () => {
398
+ const onBlurMock = jest.fn();
399
+ const user = userEvent.setup();
400
+
401
+ render(
402
+ <>
403
+ <ClipboardCopy onInputBlur={onBlurMock}>{children}</ClipboardCopy>
404
+ <input aria-label="native input" />
405
+ </>
406
+ );
407
+
408
+ await user.click(screen.getByRole('textbox', { name: 'native input' }));
409
+
410
+ expect(onBlurMock).not.toHaveBeenCalled();
411
+ });
412
+
341
413
  test('Calls onCopy when ClipboardCopyButton is clicked', async () => {
342
414
  const onCopyMock = jest.fn();
343
415
  const user = userEvent.setup();
@@ -18,7 +18,7 @@ exports[`Matches snapshot 1`] = `
18
18
  <input
19
19
  aria-invalid="false"
20
20
  aria-label="Copyable input"
21
- data-ouia-component-id="OUIA-Generated-TextInputBase-36"
21
+ data-ouia-component-id="OUIA-Generated-TextInputBase-42"
22
22
  data-ouia-component-type="PF6/TextInput"
23
23
  data-ouia-safe="true"
24
24
  id="text-input-generated-id"
@@ -6,8 +6,10 @@ import compassBackgroundImageLight from '@patternfly/react-tokens/dist/esm/c_com
6
6
  import compassBackgroundImageDark from '@patternfly/react-tokens/dist/esm/c_compass_BackgroundImage_dark';
7
7
 
8
8
  export interface CompassProps extends React.HTMLProps<HTMLDivElement> {
9
- /** Additional classes added to the compass. */
9
+ /** Additional classes added to the Compass. */
10
10
  className?: string;
11
+ /** Content of the docked navigation area of the layout */
12
+ dock?: React.ReactNode;
11
13
  /** Content placed at the top of the layout */
12
14
  header?: React.ReactNode;
13
15
  /** Flag indicating if the header is expanded */
@@ -30,14 +32,15 @@ export interface CompassProps extends React.HTMLProps<HTMLDivElement> {
30
32
  drawerContent?: React.ReactNode;
31
33
  /** Additional props passed to the drawer */
32
34
  drawerProps?: DrawerProps;
33
- /** Light theme background image path of the compass */
35
+ /** Light theme background image path of the Compass */
34
36
  backgroundSrcLight?: string;
35
- /** Dark theme background image path of the compass */
37
+ /** Dark theme background image path of the Compass */
36
38
  backgroundSrcDark?: string;
37
39
  }
38
40
 
39
41
  export const Compass: React.FunctionComponent<CompassProps> = ({
40
42
  className,
43
+ dock,
41
44
  header,
42
45
  isHeaderExpanded = true,
43
46
  sidebarStart,
@@ -64,38 +67,51 @@ export const Compass: React.FunctionComponent<CompassProps> = ({
64
67
  }
65
68
 
66
69
  const compassContent = (
67
- <div className={css(styles.compass, className)} {...props} style={{ ...props.style, ...backgroundImageStyles }}>
68
- <div
69
- className={css(styles.compassHeader, isHeaderExpanded && 'pf-m-expanded')}
70
- {...(!isHeaderExpanded && { inert: 'true' })}
71
- >
72
- {header}
73
- </div>
74
- <div
75
- className={css(styles.compassSidebar, styles.modifiers.start, isSidebarStartExpanded && 'pf-m-expanded')}
76
- {...(!isSidebarStartExpanded && { inert: 'true' })}
77
- >
78
- {sidebarStart}
79
- </div>
80
- <div className={css(styles.compassMain)}>{main}</div>
81
- <div
82
- className={css(styles.compassSidebar, styles.modifiers.end, isSidebarEndExpanded && 'pf-m-expanded')}
83
- {...(!isSidebarEndExpanded && { inert: 'true' })}
84
- >
85
- {sidebarEnd}
86
- </div>
87
- <div
88
- className={css(styles.compassFooter, isFooterExpanded && 'pf-m-expanded')}
89
- {...(!isFooterExpanded && { inert: 'true' })}
90
- >
91
- {footer}
92
- </div>
70
+ <div
71
+ className={css(styles.compass, dock !== undefined && styles.modifiers.dock, className)}
72
+ {...props}
73
+ style={{ ...props.style, ...backgroundImageStyles }}
74
+ >
75
+ {dock && <div className={css(`${styles.compass}__dock`)}>{dock}</div>}
76
+ {header && (
77
+ <div
78
+ className={css(styles.compassHeader, isHeaderExpanded && 'pf-m-expanded')}
79
+ {...(!isHeaderExpanded && { inert: 'true' })}
80
+ >
81
+ {header}
82
+ </div>
83
+ )}
84
+ {sidebarStart && (
85
+ <div
86
+ className={css(styles.compassSidebar, styles.modifiers.start, isSidebarStartExpanded && 'pf-m-expanded')}
87
+ {...(!isSidebarStartExpanded && { inert: 'true' })}
88
+ >
89
+ {sidebarStart}
90
+ </div>
91
+ )}
92
+ {main && <div className={css(styles.compassMain)}>{main}</div>}
93
+ {sidebarEnd && (
94
+ <div
95
+ className={css(styles.compassSidebar, styles.modifiers.end, isSidebarEndExpanded && 'pf-m-expanded')}
96
+ {...(!isSidebarEndExpanded && { inert: 'true' })}
97
+ >
98
+ {sidebarEnd}
99
+ </div>
100
+ )}
101
+ {footer && (
102
+ <div
103
+ className={css(styles.compassFooter, isFooterExpanded && 'pf-m-expanded')}
104
+ {...(!isFooterExpanded && { inert: 'true' })}
105
+ >
106
+ {footer}
107
+ </div>
108
+ )}
93
109
  </div>
94
110
  );
95
111
 
96
112
  if (hasDrawer) {
97
113
  return (
98
- <Drawer {...drawerProps}>
114
+ <Drawer isPill {...drawerProps}>
99
115
  <DrawerContent panelContent={drawerContent}>
100
116
  <DrawerContentBody>{compassContent}</DrawerContentBody>
101
117
  </DrawerContent>
@@ -3,7 +3,7 @@ import styles from '@patternfly/react-styles/css/components/Compass/compass';
3
3
  import { css } from '@patternfly/react-styles';
4
4
 
5
5
  export interface CompassContentProps extends React.HTMLProps<HTMLDivElement> {
6
- /** Content of the main compass area. Typically one or more CompassPanel components. */
6
+ /** Content of the main Compass area. Typically one or more CompassPanel components. */
7
7
  children: React.ReactNode;
8
8
  /** Additional classes added to the CompassContent */
9
9
  className?: string;
@@ -30,7 +30,7 @@ export const CompassContent: React.FunctionComponent<CompassContentProps> = ({
30
30
 
31
31
  if (hasDrawer) {
32
32
  return (
33
- <Drawer {...drawerProps}>
33
+ <Drawer isPill {...drawerProps}>
34
34
  <DrawerContent panelContent={drawerContent}>{compassContent}</DrawerContent>
35
35
  </Drawer>
36
36
  );
@@ -5,8 +5,8 @@ import { CompassMainHeaderToolbar } from './CompassMainHeaderToolbar';
5
5
  import styles from '@patternfly/react-styles/css/components/Compass/compass';
6
6
  import { css } from '@patternfly/react-styles';
7
7
 
8
- /** The wrapper component for header content in the main compass area. When building out a custom implementation,
9
- * you should ensure any content within the main header is rendered inside a compass panel and main header content wrappers.
8
+ /** The wrapper component for header content in the main Compass area. When building out a custom implementation,
9
+ * you should ensure any content within the main header is rendered inside a Compass panel and main header content wrappers.
10
10
  */
11
11
 
12
12
  export interface CompassMainHeaderProps extends Omit<React.HTMLProps<HTMLDivElement>, 'title'> {
@@ -18,8 +18,8 @@ export interface CompassMainHeaderProps extends Omit<React.HTMLProps<HTMLDivElem
18
18
  title?: React.ReactNode;
19
19
  /** Styled toolbar. If title or toolbar is provided, the children will be ignored. */
20
20
  toolbar?: React.ReactNode;
21
- /** Additional props passed to the compass panel that wraps the main header content when using the title or toolbar props. When using the
22
- * children prop, you should pass your own compass panel.
21
+ /** Additional props passed to the Compass panel that wraps the main header content when using the title or toolbar props. When using the
22
+ * children prop, you should pass your own Compass panel.
23
23
  */
24
24
  compassPanelProps?: Omit<CompassPanelProps, 'children'>;
25
25
  }
@@ -1,8 +1,8 @@
1
1
  import styles from '@patternfly/react-styles/css/components/Compass/compass';
2
2
  import { css } from '@patternfly/react-styles';
3
3
 
4
- /** A wrapper component to be passed as custom content for the compass main header. This should also be wrapped
5
- * in a compass panel component.
4
+ /** A wrapper component to be passed as custom content for the Compass main header. This should also be wrapped
5
+ * in a Compass panel component.
6
6
  */
7
7
 
8
8
  export interface CompassMainHeaderContentProps extends React.HTMLProps<HTMLDivElement> {
@@ -1,8 +1,8 @@
1
1
  import styles from '@patternfly/react-styles/css/components/Compass/compass';
2
2
  import { css } from '@patternfly/react-styles';
3
3
 
4
- /** A wrapper component for custom title content to be passed into a compass main header. This should also be wrapped
5
- * by a compass main header content component.
4
+ /** A wrapper component for custom title content to be passed into a Compass main header. This should also be wrapped
5
+ * by a Compass main header content component.
6
6
  */
7
7
 
8
8
  export interface CompassMainHeaderTitleProps extends React.HTMLProps<HTMLDivElement> {
@@ -1,8 +1,8 @@
1
1
  import styles from '@patternfly/react-styles/css/components/Compass/compass';
2
2
  import { css } from '@patternfly/react-styles';
3
3
 
4
- /** A wrapper component for custom toolbar content to be passed into a compass main header. This should also be wrapped
5
- * by a compass main header content component.
4
+ /** A wrapper component for custom toolbar content to be passed into a Compass main header. This should also be wrapped
5
+ * by a Compass main header content component.
6
6
  */
7
7
 
8
8
  export interface CompassMainHeaderToolbarProps extends React.HTMLProps<HTMLDivElement> {
@@ -170,3 +170,13 @@ test('Matches the snapshot with drawer', () => {
170
170
  );
171
171
  expect(asFragment()).toMatchSnapshot();
172
172
  });
173
+
174
+ test(`Renders with ${styles.modifiers.dock} class when dock is passed`, () => {
175
+ render(<Compass dock={<div>Dock content</div>} data-testid="compass" />);
176
+ expect(screen.getByTestId('compass')).toHaveClass(styles.modifiers.dock);
177
+ });
178
+
179
+ test(`Does not render with ${styles.modifiers.dock} class when dock is not passed`, () => {
180
+ render(<Compass data-testid="compass" />);
181
+ expect(screen.getByTestId('compass')).not.toHaveClass(styles.modifiers.dock);
182
+ });
@@ -47,7 +47,7 @@ exports[`Matches the snapshot with basic layout 1`] = `
47
47
  exports[`Matches the snapshot with drawer 1`] = `
48
48
  <DocumentFragment>
49
49
  <div
50
- class="pf-v6-c-drawer pf-m-expanded"
50
+ class="pf-v6-c-drawer pf-m-expanded pf-m-pill"
51
51
  >
52
52
  <div
53
53
  class="pf-v6-c-drawer__main"
@@ -3,7 +3,7 @@
3
3
  exports[`Matches the snapshot with drawer 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
- class="pf-v6-c-drawer pf-m-expanded"
6
+ class="pf-v6-c-drawer pf-m-expanded pf-m-pill"
7
7
  >
8
8
  <div
9
9
  class="pf-v6-c-drawer__main"
@@ -12,11 +12,12 @@ propComponents:
12
12
  'CompassHero',
13
13
  'CompassMainHeader',
14
14
  'CompassPanel',
15
- 'CompassMessageBar'
15
+ 'CompassMessageBar',
16
+ 'CompassMainFooter'
16
17
  ]
17
18
  ---
18
19
 
19
- import { useRef, useState } from 'react';
20
+ import { useRef, useState, useEffect } from 'react';
20
21
  import PlayIcon from '@patternfly/react-icons/dist/esm/icons/play-icon';
21
22
  import OutlinedPlusSquare from '@patternfly/react-icons/dist/esm/icons/outlined-plus-square-icon';
22
23
  import OutlinedCopy from '@patternfly/react-icons/dist/esm/icons/outlined-copy-icon';
@@ -28,15 +29,15 @@ import './compass.css';
28
29
 
29
30
  ### Basic
30
31
 
31
- In a basic compass layout, content can be passed to the following props to populate areas of the page:
32
+ In a basic Compass layout, content can be passed to the following props to populate different areas of the page:
32
33
 
33
- - `header`: content rendered in the top of the page. This will typically be a `CompassHeader` component to break the header into 3 areas consisting of a logo or brand, middle navigation, and profile.
34
- - `sidebarStart`: content rendered in the left side or start side of the page
35
- - `main`: content rendered in the center of the page. This will typically consist of a `CompassMainHeader` or `CompassHero`, along with a `CompassContent` filled with one or more `CompassPanel` components.
36
- - `sidebarEnd`: content rendered in the right side or end side of the page
37
- - `footer`: content rendered in the bottom of the page
34
+ - `header`: Content rendered at the top of the page, typically including a `<CompassHeader>` component that divides the header into 3 areas, with a logo or brand, middle navigation, and profile.
35
+ - `sidebarStart`: Content rendered at the horizontal start of the page (by default, the left side).
36
+ - `main`: Content rendered in the center of the page, typically including a `<CompassMainHeader>` or `<CompassHero>`, along with a `<CompassContent>` filled with 1 or more `<CompassPanel>` components.
37
+ - `sidebarEnd`: Content rendered at the horizontal end of the page (by default, the right side).
38
+ - `footer`: Content rendered at the bottom of the page.
38
39
 
39
- The background image of the `Compass` and `CompassHero` may be customized by using their respective `backgroundSrcLight` and `backgroundSrcDark` props. The `CompassHero` also allows customization of a color gradient across its container by using the `gradientLight` and `gradientDark` props.
40
+ To customize the background image of the `<Compass>` and `<CompassHero>` components, you can use their respective `backgroundSrcLight` and `backgroundSrcDark` props. You can also add and customize a color gradient background for the `<CompassHero>` component by using the `gradientLight` and `gradientDark` props.
40
41
 
41
42
  ```ts isBeta file="CompassBasic.tsx"
42
43
 
@@ -44,31 +45,31 @@ The background image of the `Compass` and `CompassHero` may be customized by usi
44
45
 
45
46
  ### With alternate footer
46
47
 
47
- When `footer` is used, its content will take up the width of the screen. However, if content inside of the footer grows, then the two sidebars' heights and placement will adjust to allow for the change. If this is not the desired behavior, then using a `CompassMainFooter` inside of the of the `main` section provides an alterate way to render footer content without interfering with the sidebars, by rendering content at the bottom of the page between the two sidebars opposed to the whole bottom of the page.
48
+ When `footer` is used, its content will fill the width of the screen. By default, when content inside the footer grows, the height and placement of the start and end sidebars will adjust to allow for the change. To modify this behavior and render footer content without interfering with the sidebars, instead place a `<CompassMainFooter>` inside the `main` section. This will render content at the bottom of the page between the 2 sidebars, rather than across the entire bottom of the page.
48
49
 
49
50
  ```ts file="CompassMainFooterDemo.tsx"
50
51
 
51
52
  ```
52
53
 
53
- ### Demo
54
+ ### With docked nav
54
55
 
55
- ```ts isFullscreen isBeta file="CompassDemo.tsx"
56
+ ```ts file="CompassDockLayout.tsx"
56
57
 
57
58
  ```
58
59
 
59
60
  ## Composable structure
60
61
 
61
- When building a more custom implementation using Compass components, there are some intended or expected structures that must be present.
62
+ When building a more custom implementation with Compass components, there are some intended or expected structures that must remain present.
62
63
 
63
64
  ### CompassMainHeader structure
64
65
 
65
- When using the `children` property in the `<CompassMainHeader>` component, you should ensure that the expected sub-components are used. The following code block shows a general structure to follow.
66
+ When using the `children` property in the `<CompassMainHeader>` component, there are specific structural patterns that you should follow, as shown this general code structure.
66
67
 
67
68
  ```noLive
68
69
  <CompassMainHeader>
69
70
  <CompassPanel>
70
71
  <CompassMainHeaderContent>
71
- {Your custom content goes here, which can include the CompassMainHeaderTitle and/or CompassMainHeaderToolbar sub-components}
72
+ {Your custom content goes here, which can include the <CompassMainHeaderTitle> and/or <CompassMainHeaderToolbar> sub-components}
72
73
  </CompassMainHeaderContent>
73
74
  </CompassPanel>
74
75
  </CompassMainHeader>
@@ -0,0 +1,25 @@
1
+ import {
2
+ Compass,
3
+ CompassContent,
4
+ CompassMainHeader,
5
+ CompassPanel,
6
+ CompassMainHeaderContent
7
+ } from '@patternfly/react-core';
8
+ import './compass.css';
9
+
10
+ export const CompassBasic: React.FunctionComponent = () => {
11
+ const dockContent = <div>Content</div>;
12
+ const mainContent = (
13
+ <CompassContent>
14
+ <CompassMainHeader>
15
+ <CompassPanel>
16
+ <CompassMainHeaderContent>
17
+ <div>Content title</div>
18
+ </CompassMainHeaderContent>
19
+ </CompassPanel>
20
+ </CompassMainHeader>
21
+ <div>Content</div>
22
+ </CompassContent>
23
+ );
24
+ return <Compass dock={dockContent} main={mainContent} />;
25
+ };
@@ -1,8 +1,8 @@
1
- #ws-react-p-compass-basic [class*="pf-v6-c-compass"] {
1
+ #ws-react-a-compass-basic [class*="pf-v6-c-compass"] {
2
2
  position: relative;
3
3
  }
4
4
 
5
- #ws-react-p-compass-basic [class*="pf-v6-c-compass"]::after {
5
+ #ws-react-a-compass-basic [class*="pf-v6-c-compass"]::after {
6
6
  content: "";
7
7
  position: absolute;
8
8
  inset: 0;
@@ -10,11 +10,23 @@
10
10
  pointer-events: none;
11
11
  }
12
12
 
13
- #ws-react-p-compass-with-alternate-footer [class*="pf-v6-c-compass"] {
13
+ #ws-react-a-compass-with-alternate-footer [class*="pf-v6-c-compass"] {
14
14
  position: relative;
15
15
  }
16
16
 
17
- #ws-react-p-compass-with-alternate-footer [class*="pf-v6-c-compass"]:not([class*="footer"])::after {
17
+ #ws-react-a-compass-with-alternate-footer [class*="pf-v6-c-compass"]:not([class*="footer"])::after {
18
+ content: "";
19
+ position: absolute;
20
+ inset: 0;
21
+ border: var(--pf-t--global--border--width--regular) dashed var(--pf-t--global--border--color--default);
22
+ pointer-events: none;
23
+ }
24
+
25
+ #ws-react-a-compass-with-docked-nav [class*="pf-v6-c-compass"] {
26
+ position: relative;
27
+ }
28
+
29
+ #ws-react-a-compass-with-docked-nav [class*="pf-v6-c-compass"]:not([class*="footer"])::after {
18
30
  content: "";
19
31
  position: absolute;
20
32
  inset: 0;
@@ -90,6 +90,7 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
90
90
  const hidden = isStatic ? false : !isExpanded;
91
91
  const [isExpandedInternal, setIsExpandedInternal] = useState(!hidden);
92
92
  const [isFocusTrapActive, setIsFocusTrapActive] = useState(false);
93
+ const [shouldCollapseSpace, setShouldCollapseSpace] = useState(hidden);
93
94
  const previouslyFocusedElement = useRef(null);
94
95
  let currWidth: number = 0;
95
96
  let panelRect: DOMRect;
@@ -108,6 +109,7 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
108
109
  useEffect(() => {
109
110
  if (!isStatic && isExpanded) {
110
111
  setIsExpandedInternal(isExpanded);
112
+ setShouldCollapseSpace(false);
111
113
  }
112
114
  }, [isStatic, isExpanded]);
113
115
 
@@ -380,6 +382,10 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
380
382
  onExpand(ev);
381
383
  }
382
384
  setIsExpandedInternal(!hidden);
385
+ // We also need to collapse the space when the panel is hidden to prevent automation from scrolling to it
386
+ if (hidden && ev.nativeEvent.propertyName === 'transform') {
387
+ setShouldCollapseSpace(true);
388
+ }
383
389
  if (isValidFocusTrap && ev.nativeEvent.propertyName === 'transform') {
384
390
  setIsFocusTrapActive((prevIsFocusTrapActive) => !prevIsFocusTrapActive);
385
391
  }
@@ -390,6 +396,7 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
390
396
  ...((defaultSize || minSize || maxSize) && boundaryCssVars),
391
397
  ...style
392
398
  }}
399
+ {...(shouldCollapseSpace && { inert: '' })}
393
400
  {...props}
394
401
  ref={panel}
395
402
  >
@@ -122,6 +122,26 @@ test('Renders with role="dialog" when focusTrap.enabled is true', () => {
122
122
  expect(screen.getByRole('dialog')).toBeInTheDocument();
123
123
  });
124
124
 
125
+ test('Does not render with inert when drawer is expanded', () => {
126
+ render(
127
+ <Drawer isExpanded>
128
+ <DrawerPanelContent data-testid="drawer-content">Drawer panel content</DrawerPanelContent>
129
+ </Drawer>
130
+ );
131
+
132
+ expect(screen.getByTestId('drawer-content')).not.toHaveAttribute('inert');
133
+ });
134
+
135
+ test('Renders with inert when drawer is collapsed', () => {
136
+ render(
137
+ <Drawer>
138
+ <DrawerPanelContent data-testid="drawer-content">Drawer panel content</DrawerPanelContent>
139
+ </Drawer>
140
+ );
141
+
142
+ expect(screen.getByTestId('drawer-content')).toHaveAttribute('inert');
143
+ });
144
+
125
145
  test('Applies style prop as expected', () => {
126
146
  render(
127
147
  <Drawer isExpanded>
@@ -6,6 +6,7 @@ exports[`DrawerPanelContent should match snapshot (auto-generated) 1`] = `
6
6
  class="pf-v6-c-drawer__panel ''"
7
7
  hidden=""
8
8
  id="generated-id"
9
+ inert=""
9
10
  />
10
11
  </DocumentFragment>
11
12
  `;