@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.
- package/CHANGELOG.md +6 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/Compass/package.json +1 -1
- package/dist/dynamic/components/Content/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hero/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
- package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/AnimationsProvider/AnimationsProvider/package.json +1 -1
- package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/SSRSafeIds/SSRSafeIds/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useSSRSafeId/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/dynamic-modules.json +0 -2
- package/dist/esm/components/Compass/CompassContent.d.ts +1 -1
- package/dist/esm/components/Compass/CompassContent.d.ts.map +1 -1
- package/dist/esm/components/Compass/CompassMainHeader.d.ts +5 -5
- package/dist/esm/components/Compass/CompassMainHeader.d.ts.map +1 -1
- package/dist/esm/components/Compass/CompassMainHeader.js +2 -2
- package/dist/esm/components/Compass/CompassMainHeader.js.map +1 -1
- package/dist/esm/components/Compass/CompassMainHeaderContent.d.ts +1 -1
- package/dist/esm/components/Compass/index.d.ts +0 -1
- package/dist/esm/components/Compass/index.d.ts.map +1 -1
- package/dist/esm/components/Compass/index.js +0 -1
- package/dist/esm/components/Compass/index.js.map +1 -1
- package/dist/esm/components/Panel/Panel.d.ts +10 -0
- package/dist/esm/components/Panel/Panel.d.ts.map +1 -1
- package/dist/esm/components/Panel/Panel.js +2 -2
- package/dist/esm/components/Panel/Panel.js.map +1 -1
- package/dist/js/components/Compass/CompassContent.d.ts +1 -1
- package/dist/js/components/Compass/CompassContent.d.ts.map +1 -1
- package/dist/js/components/Compass/CompassMainHeader.d.ts +5 -5
- package/dist/js/components/Compass/CompassMainHeader.d.ts.map +1 -1
- package/dist/js/components/Compass/CompassMainHeader.js +2 -2
- package/dist/js/components/Compass/CompassMainHeader.js.map +1 -1
- package/dist/js/components/Compass/CompassMainHeaderContent.d.ts +1 -1
- package/dist/js/components/Compass/index.d.ts +0 -1
- package/dist/js/components/Compass/index.d.ts.map +1 -1
- package/dist/js/components/Compass/index.js +0 -1
- package/dist/js/components/Compass/index.js.map +1 -1
- package/dist/js/components/Panel/Panel.d.ts +10 -0
- package/dist/js/components/Panel/Panel.d.ts.map +1 -1
- package/dist/js/components/Panel/Panel.js +2 -2
- package/dist/js/components/Panel/Panel.js.map +1 -1
- package/dist/umd/assets/{output-DGLCZ_Kh.css → output-Bdv1bhxb.css} +17117 -17157
- package/dist/umd/react-core.min.js +1 -1
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +5 -5
- package/src/components/Compass/CompassContent.tsx +1 -1
- package/src/components/Compass/CompassMainHeader.tsx +15 -11
- package/src/components/Compass/CompassMainHeaderContent.tsx +1 -1
- package/src/components/Compass/__tests__/CompassMainHeader.test.tsx +9 -8
- package/src/components/Compass/__tests__/__snapshots__/CompassMainHeader.test.tsx.snap +20 -12
- package/src/components/Compass/examples/Compass.md +10 -7
- package/src/components/Compass/examples/CompassBasic.tsx +12 -6
- package/src/components/Compass/examples/CompassDockLayout.tsx +12 -6
- package/src/components/Compass/index.ts +0 -1
- package/src/components/Panel/Panel.tsx +20 -0
- package/src/components/Panel/__tests__/Panel.test.tsx +121 -0
- package/src/components/Panel/__tests__/__snapshots__/Panel.test.tsx.snap +90 -0
- package/src/components/Panel/examples/Panel.md +10 -1
- package/src/components/Panel/examples/PanelPill.tsx +9 -0
- package/src/components/Panel/examples/PanelScrollableWithAutoHeight.tsx +37 -0
- package/src/demos/Compass/examples/CompassDemo.tsx +111 -91
- package/src/demos/Compass/examples/CompassDockDemo.tsx +8 -2
- package/dist/esm/components/Compass/CompassPanel.d.ts +0 -21
- package/dist/esm/components/Compass/CompassPanel.d.ts.map +0 -1
- package/dist/esm/components/Compass/CompassPanel.js +0 -10
- package/dist/esm/components/Compass/CompassPanel.js.map +0 -1
- package/dist/js/components/Compass/CompassPanel.d.ts +0 -21
- package/dist/js/components/Compass/CompassPanel.d.ts.map +0 -1
- package/dist/js/components/Compass/CompassPanel.js +0 -14
- package/dist/js/components/Compass/CompassPanel.js.map +0 -1
- package/src/components/Compass/CompassPanel.tsx +0 -51
- package/src/components/Compass/__tests__/CompassPanel.test.tsx +0 -86
- package/src/components/Compass/__tests__/__snapshots__/CompassPanel.test.tsx.snap +0 -25
package/helpers/package.json
CHANGED
|
@@ -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.
|
|
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}
|
package/layouts/package.json
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
51
|
-
"@patternfly/react-tokens": "^6.5.0-prerelease.
|
|
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.
|
|
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": "
|
|
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
|
|
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
|
|
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
|
|
22
|
-
* children prop, you should pass your own
|
|
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<
|
|
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
|
-
<
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
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
|
|
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(
|
|
82
|
+
expect(panel).toHaveClass(panelStyles.panel);
|
|
82
83
|
});
|
|
83
84
|
|
|
84
|
-
test('Renders
|
|
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(
|
|
89
|
+
expect(panel).toHaveClass(panelStyles.panel);
|
|
89
90
|
});
|
|
90
91
|
|
|
91
|
-
test('Does not render
|
|
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(
|
|
100
|
+
expect(content).not.toHaveClass(panelStyles.panel);
|
|
100
101
|
});
|
|
101
102
|
|
|
102
|
-
test('Passes props to
|
|
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
|
|
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-
|
|
9
|
+
class="pf-v6-c-panel"
|
|
10
10
|
>
|
|
11
11
|
<div
|
|
12
|
-
class="pf-v6-c-
|
|
12
|
+
class="pf-v6-c-panel__main"
|
|
13
13
|
>
|
|
14
14
|
<div
|
|
15
|
-
class="pf-v6-c-
|
|
15
|
+
class="pf-v6-c-panel__main-body"
|
|
16
16
|
>
|
|
17
|
-
<div
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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 `<
|
|
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
|
-
<
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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
|
-
<
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
<
|
|
16
|
-
<
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
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,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
|
+
```
|