@patternfly/react-core 6.5.0-prerelease.59 → 6.5.0-prerelease.60

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 (184) hide show
  1. package/CHANGELOG.md +6 -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/SSRSafeIds/SSRSafeIds/package.json +1 -1
  100. package/dist/dynamic/helpers/constants/package.json +1 -1
  101. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useSSRSafeId/package.json +1 -1
  110. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  111. package/dist/dynamic/helpers/util/package.json +1 -1
  112. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  113. package/dist/dynamic/layouts/Flex/package.json +1 -1
  114. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  115. package/dist/dynamic/layouts/Grid/package.json +1 -1
  116. package/dist/dynamic/layouts/Level/package.json +1 -1
  117. package/dist/dynamic/layouts/Split/package.json +1 -1
  118. package/dist/dynamic/layouts/Stack/package.json +1 -1
  119. package/dist/dynamic/styles/package.json +1 -1
  120. package/dist/dynamic-modules.json +0 -2
  121. package/dist/esm/components/Compass/CompassContent.d.ts +1 -1
  122. package/dist/esm/components/Compass/CompassContent.d.ts.map +1 -1
  123. package/dist/esm/components/Compass/CompassMainHeader.d.ts +5 -5
  124. package/dist/esm/components/Compass/CompassMainHeader.d.ts.map +1 -1
  125. package/dist/esm/components/Compass/CompassMainHeader.js +2 -2
  126. package/dist/esm/components/Compass/CompassMainHeader.js.map +1 -1
  127. package/dist/esm/components/Compass/CompassMainHeaderContent.d.ts +1 -1
  128. package/dist/esm/components/Compass/index.d.ts +0 -1
  129. package/dist/esm/components/Compass/index.d.ts.map +1 -1
  130. package/dist/esm/components/Compass/index.js +0 -1
  131. package/dist/esm/components/Compass/index.js.map +1 -1
  132. package/dist/esm/components/Panel/Panel.d.ts +10 -0
  133. package/dist/esm/components/Panel/Panel.d.ts.map +1 -1
  134. package/dist/esm/components/Panel/Panel.js +2 -2
  135. package/dist/esm/components/Panel/Panel.js.map +1 -1
  136. package/dist/js/components/Compass/CompassContent.d.ts +1 -1
  137. package/dist/js/components/Compass/CompassContent.d.ts.map +1 -1
  138. package/dist/js/components/Compass/CompassMainHeader.d.ts +5 -5
  139. package/dist/js/components/Compass/CompassMainHeader.d.ts.map +1 -1
  140. package/dist/js/components/Compass/CompassMainHeader.js +2 -2
  141. package/dist/js/components/Compass/CompassMainHeader.js.map +1 -1
  142. package/dist/js/components/Compass/CompassMainHeaderContent.d.ts +1 -1
  143. package/dist/js/components/Compass/index.d.ts +0 -1
  144. package/dist/js/components/Compass/index.d.ts.map +1 -1
  145. package/dist/js/components/Compass/index.js +0 -1
  146. package/dist/js/components/Compass/index.js.map +1 -1
  147. package/dist/js/components/Panel/Panel.d.ts +10 -0
  148. package/dist/js/components/Panel/Panel.d.ts.map +1 -1
  149. package/dist/js/components/Panel/Panel.js +2 -2
  150. package/dist/js/components/Panel/Panel.js.map +1 -1
  151. package/dist/umd/assets/{output-DGLCZ_Kh.css → output-Bdv1bhxb.css} +17117 -17157
  152. package/dist/umd/react-core.min.js +1 -1
  153. package/helpers/package.json +1 -1
  154. package/layouts/package.json +1 -1
  155. package/next/package.json +1 -1
  156. package/package.json +5 -5
  157. package/src/components/Compass/CompassContent.tsx +1 -1
  158. package/src/components/Compass/CompassMainHeader.tsx +15 -11
  159. package/src/components/Compass/CompassMainHeaderContent.tsx +1 -1
  160. package/src/components/Compass/__tests__/CompassMainHeader.test.tsx +9 -8
  161. package/src/components/Compass/__tests__/__snapshots__/CompassMainHeader.test.tsx.snap +20 -12
  162. package/src/components/Compass/examples/Compass.md +10 -7
  163. package/src/components/Compass/examples/CompassBasic.tsx +12 -6
  164. package/src/components/Compass/examples/CompassDockLayout.tsx +12 -6
  165. package/src/components/Compass/index.ts +0 -1
  166. package/src/components/Panel/Panel.tsx +20 -0
  167. package/src/components/Panel/__tests__/Panel.test.tsx +121 -0
  168. package/src/components/Panel/__tests__/__snapshots__/Panel.test.tsx.snap +90 -0
  169. package/src/components/Panel/examples/Panel.md +10 -1
  170. package/src/components/Panel/examples/PanelPill.tsx +9 -0
  171. package/src/components/Panel/examples/PanelScrollableWithAutoHeight.tsx +37 -0
  172. package/src/demos/Compass/examples/CompassDemo.tsx +111 -91
  173. package/src/demos/Compass/examples/CompassDockDemo.tsx +8 -2
  174. package/dist/esm/components/Compass/CompassPanel.d.ts +0 -21
  175. package/dist/esm/components/Compass/CompassPanel.d.ts.map +0 -1
  176. package/dist/esm/components/Compass/CompassPanel.js +0 -10
  177. package/dist/esm/components/Compass/CompassPanel.js.map +0 -1
  178. package/dist/js/components/Compass/CompassPanel.d.ts +0 -21
  179. package/dist/js/components/Compass/CompassPanel.d.ts.map +0 -1
  180. package/dist/js/components/Compass/CompassPanel.js +0 -14
  181. package/dist/js/components/Compass/CompassPanel.js.map +0 -1
  182. package/src/components/Compass/CompassPanel.tsx +0 -51
  183. package/src/components/Compass/__tests__/CompassPanel.test.tsx +0 -86
  184. package/src/components/Compass/__tests__/__snapshots__/CompassPanel.test.tsx.snap +0 -25
@@ -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.58","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.59","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.58","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.59","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.58","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.59","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.5.0-prerelease.59",
3
+ "version": "6.5.0-prerelease.60",
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",
@@ -47,14 +47,14 @@
47
47
  },
48
48
  "dependencies": {
49
49
  "@patternfly/react-icons": "^6.5.0-prerelease.25",
50
- "@patternfly/react-styles": "^6.5.0-prerelease.18",
51
- "@patternfly/react-tokens": "^6.5.0-prerelease.17",
50
+ "@patternfly/react-styles": "^6.5.0-prerelease.19",
51
+ "@patternfly/react-tokens": "^6.5.0-prerelease.18",
52
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.71",
57
+ "@patternfly/patternfly": "6.5.0-prerelease.72",
58
58
  "case-anything": "^3.1.2",
59
59
  "css": "^3.0.0",
60
60
  "fs-extra": "^11.3.3"
@@ -63,5 +63,5 @@
63
63
  "react": "^17 || ^18 || ^19",
64
64
  "react-dom": "^17 || ^18 || ^19"
65
65
  },
66
- "gitHead": "6558bdd10eb90061e973dcc37ec971eb2b1a354d"
66
+ "gitHead": "30db3d99f05b39b6478ed7ed48baeb29bfb895cd"
67
67
  }
@@ -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 `Panel` components. */
7
7
  children: React.ReactNode;
8
8
  /** Additional classes added to the CompassContent */
9
9
  className?: string;
@@ -1,12 +1,12 @@
1
- import { CompassPanel, CompassPanelProps } from './CompassPanel';
2
1
  import { CompassMainHeaderContent } from './CompassMainHeaderContent';
3
2
  import { CompassMainHeaderTitle } from './CompassMainHeaderTitle';
4
3
  import { CompassMainHeaderToolbar } from './CompassMainHeaderToolbar';
4
+ import { Panel, PanelMain, PanelMainBody, PanelProps } from '../Panel';
5
5
  import styles from '@patternfly/react-styles/css/components/Compass/compass';
6
6
  import { css } from '@patternfly/react-styles';
7
7
 
8
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.
9
+ * you should ensure any content within the main header is rendered inside a Panel, PanelMain, PanelMainBody stack and main header content wrappers.
10
10
  */
11
11
 
12
12
  export interface CompassMainHeaderProps extends Omit<React.HTMLProps<HTMLDivElement>, 'title'> {
@@ -18,10 +18,10 @@ 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 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 Panel.
23
23
  */
24
- compassPanelProps?: Omit<CompassPanelProps, 'children'>;
24
+ compassPanelProps?: Omit<PanelProps, 'children'>;
25
25
  }
26
26
 
27
27
  export const CompassMainHeader: React.FunctionComponent<CompassMainHeaderProps> = ({
@@ -34,12 +34,16 @@ export const CompassMainHeader: React.FunctionComponent<CompassMainHeaderProps>
34
34
  }: CompassMainHeaderProps) => {
35
35
  const _content =
36
36
  title !== undefined || toolbar !== undefined ? (
37
- <CompassPanel {...compassPanelProps}>
38
- <CompassMainHeaderContent>
39
- {title && <CompassMainHeaderTitle>{title}</CompassMainHeaderTitle>}
40
- {toolbar && <CompassMainHeaderToolbar>{toolbar}</CompassMainHeaderToolbar>}
41
- </CompassMainHeaderContent>
42
- </CompassPanel>
37
+ <Panel {...compassPanelProps}>
38
+ <PanelMain>
39
+ <PanelMainBody>
40
+ <CompassMainHeaderContent>
41
+ {title && <CompassMainHeaderTitle>{title}</CompassMainHeaderTitle>}
42
+ {toolbar && <CompassMainHeaderToolbar>{toolbar}</CompassMainHeaderToolbar>}
43
+ </CompassMainHeaderContent>
44
+ </PanelMainBody>
45
+ </PanelMain>
46
+ </Panel>
43
47
  ) : (
44
48
  children
45
49
  );
@@ -2,7 +2,7 @@ import styles from '@patternfly/react-styles/css/components/Compass/compass';
2
2
  import { css } from '@patternfly/react-styles';
3
3
 
4
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.
5
+ * in a `Panel` with `PanelMain` and `PanelMainBody`.
6
6
  */
7
7
 
8
8
  export interface CompassMainHeaderContentProps extends React.HTMLProps<HTMLDivElement> {
@@ -1,6 +1,7 @@
1
1
  import { render, screen } from '@testing-library/react';
2
2
  import { CompassMainHeader } from '../CompassMainHeader';
3
3
  import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+ import panelStyles from '@patternfly/react-styles/css/components/Panel/panel';
4
5
 
5
6
  test('Renders without children', () => {
6
7
  render(
@@ -74,21 +75,21 @@ test('Renders children when neither title nor toolbar are provided', () => {
74
75
  expect(screen.getByText('Custom children content')).toBeVisible();
75
76
  });
76
77
 
77
- test('Renders CompassPanel when title is passed', () => {
78
+ test('Renders Panel when title is passed', () => {
78
79
  render(<CompassMainHeader data-testid="test-id" title="Title text" />);
79
80
 
80
81
  const panel = screen.getByTestId('test-id').firstChild;
81
- expect(panel).toHaveClass(styles.compassPanel);
82
+ expect(panel).toHaveClass(panelStyles.panel);
82
83
  });
83
84
 
84
- test('Renders CompassPanel when toolbar is passed', () => {
85
+ test('Renders Panel when toolbar is passed', () => {
85
86
  render(<CompassMainHeader data-testid="test-id" toolbar="Toolbar text" />);
86
87
 
87
88
  const panel = screen.getByTestId('test-id').firstChild;
88
- expect(panel).toHaveClass(styles.compassPanel);
89
+ expect(panel).toHaveClass(panelStyles.panel);
89
90
  });
90
91
 
91
- test('Does not render CompassPanel when children are passed', () => {
92
+ test('Does not render Panel when children are passed', () => {
92
93
  render(
93
94
  <CompassMainHeader data-testid="test-id">
94
95
  <div>Children content</div>
@@ -96,10 +97,10 @@ test('Does not render CompassPanel when children are passed', () => {
96
97
  );
97
98
 
98
99
  const content = screen.getByTestId('test-id').firstChild;
99
- expect(content).not.toHaveClass(styles.compassPanel);
100
+ expect(content).not.toHaveClass(panelStyles.panel);
100
101
  });
101
102
 
102
- test('Passes props to CompassPanel when title and compassPanelProps is passed', () => {
103
+ test('Passes props to Panel when title and compassPanelProps is passed', () => {
103
104
  render(
104
105
  <CompassMainHeader data-testid="test-id" compassPanelProps={{ className: 'panel-class' }} title="Title text" />
105
106
  );
@@ -108,7 +109,7 @@ test('Passes props to CompassPanel when title and compassPanelProps is passed',
108
109
  expect(panel).toHaveClass('panel-class');
109
110
  });
110
111
 
111
- test('Passes props to CompassPanel when toolbar and compassPanelProps is passed', () => {
112
+ test('Passes props to Panel when toolbar and compassPanelProps is passed', () => {
112
113
  render(
113
114
  <CompassMainHeader data-testid="test-id" compassPanelProps={{ className: 'panel-class' }} toolbar="Toolbar text" />
114
115
  );
@@ -6,23 +6,31 @@ exports[`Matches the snapshot with both title and toolbar 1`] = `
6
6
  class="pf-v6-c-compass__main-header"
7
7
  >
8
8
  <div
9
- class="pf-v6-c-compass__panel"
9
+ class="pf-v6-c-panel"
10
10
  >
11
11
  <div
12
- class="pf-v6-c-compass__main-header-content"
12
+ class="pf-v6-c-panel__main"
13
13
  >
14
14
  <div
15
- class="pf-v6-c-compass__main-header-title"
15
+ class="pf-v6-c-panel__main-body"
16
16
  >
17
- <div>
18
- Title
19
- </div>
20
- </div>
21
- <div
22
- class="pf-v6-c-compass__main-header-toolbar"
23
- >
24
- <div>
25
- Toolbar
17
+ <div
18
+ class="pf-v6-c-compass__main-header-content"
19
+ >
20
+ <div
21
+ class="pf-v6-c-compass__main-header-title"
22
+ >
23
+ <div>
24
+ Title
25
+ </div>
26
+ </div>
27
+ <div
28
+ class="pf-v6-c-compass__main-header-toolbar"
29
+ >
30
+ <div>
31
+ Toolbar
32
+ </div>
33
+ </div>
26
34
  </div>
27
35
  </div>
28
36
  </div>
@@ -11,7 +11,6 @@ propComponents:
11
11
  'CompassContent',
12
12
  'CompassHero',
13
13
  'CompassMainHeader',
14
- 'CompassPanel',
15
14
  'CompassMessageBar',
16
15
  'CompassMainFooter'
17
16
  ]
@@ -33,7 +32,7 @@ In a basic Compass layout, content can be passed to the following props to popul
33
32
 
34
33
  - `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
34
  - `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.
35
+ - `main`: Content rendered in the center of the page, typically including a `<CompassMainHeader>` or `<CompassHero>`, along with a `<CompassContent>` filled with 1 or more `<Panel>` components.
37
36
  - `sidebarEnd`: Content rendered at the horizontal end of the page (by default, the right side).
38
37
  - `footer`: Content rendered at the bottom of the page.
39
38
 
@@ -67,10 +66,14 @@ When using the `children` property in the `<CompassMainHeader>` component, there
67
66
 
68
67
  ```noLive
69
68
  <CompassMainHeader>
70
- <CompassPanel>
71
- <CompassMainHeaderContent>
72
- {Your custom content goes here, which can include the <CompassMainHeaderTitle> and/or <CompassMainHeaderToolbar> sub-components}
73
- </CompassMainHeaderContent>
74
- </CompassPanel>
69
+ <Panel>
70
+ <PanelMain>
71
+ <PanelMainBody>
72
+ <CompassMainHeaderContent>
73
+ {Your custom content goes here, which can include the <CompassMainHeaderTitle> and/or <CompassMainHeaderToolbar> sub-components}
74
+ </CompassMainHeaderContent>
75
+ </PanelMainBody>
76
+ </PanelMain>
77
+ </Panel>
75
78
  </CompassMainHeader>
76
79
  ```
@@ -4,7 +4,9 @@ import {
4
4
  CompassHero,
5
5
  CompassContent,
6
6
  CompassMainHeader,
7
- CompassPanel,
7
+ Panel,
8
+ PanelMain,
9
+ PanelMainBody,
8
10
  CompassMainHeaderContent
9
11
  } from '@patternfly/react-core';
10
12
  import './compass.css';
@@ -20,11 +22,15 @@ export const CompassBasic: React.FunctionComponent = () => {
20
22
  </CompassHero>
21
23
  <CompassContent>
22
24
  <CompassMainHeader>
23
- <CompassPanel>
24
- <CompassMainHeaderContent>
25
- <div>Content title</div>
26
- </CompassMainHeaderContent>
27
- </CompassPanel>
25
+ <Panel>
26
+ <PanelMain>
27
+ <PanelMainBody>
28
+ <CompassMainHeaderContent>
29
+ <div>Content title</div>
30
+ </CompassMainHeaderContent>
31
+ </PanelMainBody>
32
+ </PanelMain>
33
+ </Panel>
28
34
  </CompassMainHeader>
29
35
  <div>Content</div>
30
36
  </CompassContent>
@@ -2,7 +2,9 @@ import {
2
2
  Compass,
3
3
  CompassContent,
4
4
  CompassMainHeader,
5
- CompassPanel,
5
+ Panel,
6
+ PanelMain,
7
+ PanelMainBody,
6
8
  CompassMainHeaderContent
7
9
  } from '@patternfly/react-core';
8
10
  import './compass.css';
@@ -12,11 +14,15 @@ export const CompassBasic: React.FunctionComponent = () => {
12
14
  const mainContent = (
13
15
  <CompassContent>
14
16
  <CompassMainHeader>
15
- <CompassPanel>
16
- <CompassMainHeaderContent>
17
- <div>Content title</div>
18
- </CompassMainHeaderContent>
19
- </CompassPanel>
17
+ <Panel>
18
+ <PanelMain>
19
+ <PanelMainBody>
20
+ <CompassMainHeaderContent>
21
+ <div>Content title</div>
22
+ </CompassMainHeaderContent>
23
+ </PanelMainBody>
24
+ </PanelMain>
25
+ </Panel>
20
26
  </CompassMainHeader>
21
27
  <div>Content</div>
22
28
  </CompassContent>
@@ -12,4 +12,3 @@ export * from './CompassNavContent';
12
12
  export * from './CompassNavHome';
13
13
  export * from './CompassNavMain';
14
14
  export * from './CompassNavSearch';
15
- export * from './CompassPanel';
@@ -12,6 +12,16 @@ export interface PanelProps extends React.HTMLProps<HTMLDivElement> {
12
12
  variant?: 'raised' | 'bordered' | 'secondary';
13
13
  /** Flag to add scrollable styling to the panel */
14
14
  isScrollable?: boolean;
15
+ /** @beta When used with a scrollable panel, sets the panel to auto height */
16
+ isAutoHeight?: boolean;
17
+ /** @beta Flag to remove the panel's border */
18
+ hasNoBorder?: boolean;
19
+ /** @beta Flag to make the panel fill the available height of its container */
20
+ isFullHeight?: boolean;
21
+ /** @beta Modifies the panel to use glass styling when the glass theme is enabled */
22
+ isGlass?: boolean;
23
+ /** @beta Uses pill (fully rounded) border radius for the panel */
24
+ isPill?: boolean;
15
25
  /** @hide Forwarded ref */
16
26
  innerRef?: React.Ref<any>;
17
27
  }
@@ -21,6 +31,11 @@ const PanelBase: React.FunctionComponent<PanelProps> = ({
21
31
  children,
22
32
  variant,
23
33
  isScrollable,
34
+ isAutoHeight,
35
+ hasNoBorder,
36
+ isFullHeight,
37
+ isGlass,
38
+ isPill,
24
39
  innerRef,
25
40
  ...props
26
41
  }: PanelProps) => (
@@ -29,6 +44,11 @@ const PanelBase: React.FunctionComponent<PanelProps> = ({
29
44
  styles.panel,
30
45
  variant && styles.modifiers[variant],
31
46
  isScrollable && styles.modifiers.scrollable,
47
+ isAutoHeight && styles.modifiers.scrollableAutoHeight,
48
+ hasNoBorder && styles.modifiers.noBorder,
49
+ isFullHeight && styles.modifiers.fullHeight,
50
+ isGlass && styles.modifiers.glass,
51
+ isPill && styles.modifiers.pill,
32
52
  className
33
53
  )}
34
54
  ref={innerRef}
@@ -1,4 +1,5 @@
1
1
  import { createRef, useEffect, useState } from 'react';
2
+ import '@testing-library/jest-dom';
2
3
  import { render, screen } from '@testing-library/react';
3
4
  import { Panel } from '../Panel';
4
5
  import { PanelMain } from '../PanelMain';
@@ -55,6 +56,71 @@ test(`Renders with class name ${styles.modifiers.scrollable} when isScrollable i
55
56
  expect(screen.getByText('Test')).toHaveClass(styles.modifiers.scrollable);
56
57
  });
57
58
 
59
+ test(`Renders with class name ${styles.modifiers.scrollableAutoHeight} when isAutoHeight is true`, () => {
60
+ render(<Panel isAutoHeight>Test</Panel>);
61
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.scrollableAutoHeight);
62
+ });
63
+
64
+ test(`Does not add ${styles.modifiers.scrollableAutoHeight} when isAutoHeight is false or undefined`, () => {
65
+ const { rerender } = render(<Panel isAutoHeight={false}>Test</Panel>);
66
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.scrollableAutoHeight);
67
+
68
+ rerender(<Panel>Test</Panel>);
69
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.scrollableAutoHeight);
70
+ });
71
+
72
+ test(`Renders with class name ${styles.modifiers.noBorder} when hasNoBorder is true`, () => {
73
+ render(<Panel hasNoBorder>Test</Panel>);
74
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.noBorder);
75
+ });
76
+
77
+ test(`Does not add ${styles.modifiers.noBorder} when hasNoBorder is false or undefined`, () => {
78
+ const { rerender } = render(<Panel hasNoBorder={false}>Test</Panel>);
79
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.noBorder);
80
+
81
+ rerender(<Panel>Test</Panel>);
82
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.noBorder);
83
+ });
84
+
85
+ test(`Renders with class name ${styles.modifiers.fullHeight} when isFullHeight is true`, () => {
86
+ render(<Panel isFullHeight>Test</Panel>);
87
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.fullHeight);
88
+ });
89
+
90
+ test(`Does not add ${styles.modifiers.fullHeight} when isFullHeight is false or undefined`, () => {
91
+ const { rerender } = render(<Panel isFullHeight={false}>Test</Panel>);
92
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.fullHeight);
93
+
94
+ rerender(<Panel>Test</Panel>);
95
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.fullHeight);
96
+ });
97
+
98
+ test(`Renders with class name ${styles.modifiers.glass} when isGlass is true`, () => {
99
+ render(<Panel isGlass>Test</Panel>);
100
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.glass);
101
+ });
102
+
103
+ test(`Does not add ${styles.modifiers.glass} when isGlass is false or undefined`, () => {
104
+ const { rerender } = render(<Panel isGlass={false}>Test</Panel>);
105
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.glass);
106
+
107
+ rerender(<Panel>Test</Panel>);
108
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.glass);
109
+ });
110
+
111
+ test(`Renders with class name ${styles.modifiers.pill} when isPill is true`, () => {
112
+ render(<Panel isPill>Test</Panel>);
113
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.pill);
114
+ });
115
+
116
+ test(`Does not add ${styles.modifiers.pill} when isPill is false or undefined`, () => {
117
+ const { rerender } = render(<Panel isPill={false}>Test</Panel>);
118
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.pill);
119
+
120
+ rerender(<Panel>Test</Panel>);
121
+ expect(screen.getByText('Test')).not.toHaveClass(styles.modifiers.pill);
122
+ });
123
+
58
124
  test('Renders with ref', async () => {
59
125
  const user = userEvent.setup();
60
126
  const panelRef: React.RefObject<HTMLDivElement | null> = createRef();
@@ -103,3 +169,58 @@ test('Matches the snapshot', () => {
103
169
  const { asFragment } = render(<Panel>Test</Panel>);
104
170
  expect(asFragment()).toMatchSnapshot();
105
171
  });
172
+
173
+ test('Matches the snapshot with hasNoBorder', () => {
174
+ const { asFragment } = render(
175
+ <Panel hasNoBorder>
176
+ <PanelMain>
177
+ <PanelMainBody>Test</PanelMainBody>
178
+ </PanelMain>
179
+ </Panel>
180
+ );
181
+ expect(asFragment()).toMatchSnapshot();
182
+ });
183
+
184
+ test('Matches the snapshot with isFullHeight', () => {
185
+ const { asFragment } = render(
186
+ <Panel isFullHeight>
187
+ <PanelMain>
188
+ <PanelMainBody>Test</PanelMainBody>
189
+ </PanelMain>
190
+ </Panel>
191
+ );
192
+ expect(asFragment()).toMatchSnapshot();
193
+ });
194
+
195
+ test('Matches the snapshot with isGlass', () => {
196
+ const { asFragment } = render(
197
+ <Panel isGlass>
198
+ <PanelMain>
199
+ <PanelMainBody>Test</PanelMainBody>
200
+ </PanelMain>
201
+ </Panel>
202
+ );
203
+ expect(asFragment()).toMatchSnapshot();
204
+ });
205
+
206
+ test('Matches the snapshot with isAutoHeight', () => {
207
+ const { asFragment } = render(
208
+ <Panel isScrollable isAutoHeight>
209
+ <PanelMain>
210
+ <PanelMainBody>Test</PanelMainBody>
211
+ </PanelMain>
212
+ </Panel>
213
+ );
214
+ expect(asFragment()).toMatchSnapshot();
215
+ });
216
+
217
+ test('Matches the snapshot with isPill', () => {
218
+ const { asFragment } = render(
219
+ <Panel isPill>
220
+ <PanelMain>
221
+ <PanelMainBody>Test</PanelMainBody>
222
+ </PanelMain>
223
+ </Panel>
224
+ );
225
+ expect(asFragment()).toMatchSnapshot();
226
+ });
@@ -9,3 +9,93 @@ exports[`Matches the snapshot 1`] = `
9
9
  </div>
10
10
  </DocumentFragment>
11
11
  `;
12
+
13
+ exports[`Matches the snapshot with hasNoBorder 1`] = `
14
+ <DocumentFragment>
15
+ <div
16
+ class="pf-v6-c-panel pf-m-no-border"
17
+ >
18
+ <div
19
+ class="pf-v6-c-panel__main"
20
+ >
21
+ <div
22
+ class="pf-v6-c-panel__main-body"
23
+ >
24
+ Test
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </DocumentFragment>
29
+ `;
30
+
31
+ exports[`Matches the snapshot with isFullHeight 1`] = `
32
+ <DocumentFragment>
33
+ <div
34
+ class="pf-v6-c-panel pf-m-full-height"
35
+ >
36
+ <div
37
+ class="pf-v6-c-panel__main"
38
+ >
39
+ <div
40
+ class="pf-v6-c-panel__main-body"
41
+ >
42
+ Test
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </DocumentFragment>
47
+ `;
48
+
49
+ exports[`Matches the snapshot with isGlass 1`] = `
50
+ <DocumentFragment>
51
+ <div
52
+ class="pf-v6-c-panel pf-m-glass"
53
+ >
54
+ <div
55
+ class="pf-v6-c-panel__main"
56
+ >
57
+ <div
58
+ class="pf-v6-c-panel__main-body"
59
+ >
60
+ Test
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </DocumentFragment>
65
+ `;
66
+
67
+ exports[`Matches the snapshot with isAutoHeight 1`] = `
68
+ <DocumentFragment>
69
+ <div
70
+ class="pf-v6-c-panel pf-m-scrollable pf-m-scrollable-auto-height"
71
+ >
72
+ <div
73
+ class="pf-v6-c-panel__main"
74
+ >
75
+ <div
76
+ class="pf-v6-c-panel__main-body"
77
+ >
78
+ Test
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </DocumentFragment>
83
+ `;
84
+
85
+ exports[`Matches the snapshot with isPill 1`] = `
86
+ <DocumentFragment>
87
+ <div
88
+ class="pf-v6-c-panel pf-m-pill"
89
+ >
90
+ <div
91
+ class="pf-v6-c-panel__main"
92
+ >
93
+ <div
94
+ class="pf-v6-c-panel__main-body"
95
+ >
96
+ Test
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </DocumentFragment>
101
+ `;
@@ -46,13 +46,22 @@ propComponents: [Panel, PanelMain, PanelMainBody, PanelHeader, PanelFooter]
46
46
 
47
47
  ```ts file="PanelSecondaryVariant.tsx"
48
48
  ```
49
-
50
49
  ### Scrollable
51
50
 
52
51
  ```ts file="PanelScrollable.tsx"
53
52
  ```
54
53
 
54
+ ### Scrollable with auto height
55
+
56
+ ```ts file="PanelScrollableWithAutoHeight.tsx"
57
+ ```
58
+
55
59
  ### Scrollable with header and footer
56
60
 
57
61
  ```ts file="PanelScrollableHeaderFooter.tsx"
58
62
  ```
63
+
64
+ ### Pill
65
+
66
+ ```ts file="PanelPill.tsx"
67
+ ```
@@ -0,0 +1,9 @@
1
+ import { Panel, PanelMain, PanelMainBody } from '@patternfly/react-core';
2
+
3
+ export const PanelPill: React.FunctionComponent = () => (
4
+ <Panel isPill>
5
+ <PanelMain>
6
+ <PanelMainBody>Main content</PanelMainBody>
7
+ </PanelMain>
8
+ </Panel>
9
+ );