@patternfly/react-core 6.6.1-prerelease.6 → 6.6.1-prerelease.8
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 +10 -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/inert/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 +2 -0
- package/dist/esm/components/Page/Page.d.ts +4 -0
- package/dist/esm/components/Page/Page.d.ts.map +1 -1
- package/dist/esm/components/Page/Page.js +4 -3
- package/dist/esm/components/Page/Page.js.map +1 -1
- package/dist/esm/components/Page/PageFooter.d.ts +11 -0
- package/dist/esm/components/Page/PageFooter.d.ts.map +1 -0
- package/dist/esm/components/Page/PageFooter.js +11 -0
- package/dist/esm/components/Page/PageFooter.js.map +1 -0
- package/dist/esm/components/Page/index.d.ts +1 -0
- package/dist/esm/components/Page/index.d.ts.map +1 -1
- package/dist/esm/components/Page/index.js +1 -0
- package/dist/esm/components/Page/index.js.map +1 -1
- package/dist/js/components/Page/Page.d.ts +4 -0
- package/dist/js/components/Page/Page.d.ts.map +1 -1
- package/dist/js/components/Page/Page.js +4 -3
- package/dist/js/components/Page/Page.js.map +1 -1
- package/dist/js/components/Page/PageFooter.d.ts +11 -0
- package/dist/js/components/Page/PageFooter.d.ts.map +1 -0
- package/dist/js/components/Page/PageFooter.js +15 -0
- package/dist/js/components/Page/PageFooter.js.map +1 -0
- package/dist/js/components/Page/index.d.ts +1 -0
- package/dist/js/components/Page/index.d.ts.map +1 -1
- package/dist/js/components/Page/index.js +1 -0
- package/dist/js/components/Page/index.js.map +1 -1
- package/dist/umd/assets/{output-C3dFbrt3.css → output-DfsTC8Iz.css} +21942 -21896
- 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 +6 -6
- package/src/components/Page/Page.tsx +10 -1
- package/src/components/Page/PageFooter.tsx +28 -0
- package/src/components/Page/__tests__/Page.test.tsx +46 -0
- package/src/components/Page/__tests__/PageFooter.test.tsx +38 -0
- package/src/components/Page/examples/Page.md +6 -2
- package/src/components/Page/examples/{PageHeaderContent.tsx → PageHeaderAndFooterContent.tsx} +4 -3
- package/src/components/Page/index.ts +1 -0
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.6.1-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.6.1-prerelease.7","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.6.1-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.6.1-prerelease.7","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.6.1-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.6.1-prerelease.7","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "6.6.1-prerelease.
|
|
3
|
+
"version": "6.6.1-prerelease.8",
|
|
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.6.1-prerelease.
|
|
50
|
-
"@patternfly/react-styles": "^6.6.1-prerelease.
|
|
51
|
-
"@patternfly/react-tokens": "^6.6.1-prerelease.
|
|
49
|
+
"@patternfly/react-icons": "^6.6.1-prerelease.3",
|
|
50
|
+
"@patternfly/react-styles": "^6.6.1-prerelease.2",
|
|
51
|
+
"@patternfly/react-tokens": "^6.6.1-prerelease.2",
|
|
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.6.0-prerelease.
|
|
57
|
+
"@patternfly/patternfly": "6.6.0-prerelease.40",
|
|
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": "008744f97e0d226d41c0bec0b78ec938943392e3"
|
|
67
67
|
}
|
|
@@ -118,6 +118,10 @@ export interface PageProps extends React.HTMLProps<HTMLDivElement> {
|
|
|
118
118
|
breadcrumbProps?: PageBreadcrumbProps;
|
|
119
119
|
/** Enables children to fill the available vertical space. Child page sections or groups that should fill should be passed the isFilled property. */
|
|
120
120
|
isContentFilled?: boolean;
|
|
121
|
+
/** Flag indicating the page should render without the content area background and overflow scroll. */
|
|
122
|
+
isPlain?: boolean;
|
|
123
|
+
/** Content rendered inside the page footer */
|
|
124
|
+
footer?: React.ReactNode;
|
|
121
125
|
}
|
|
122
126
|
|
|
123
127
|
export interface PageState {
|
|
@@ -141,7 +145,8 @@ class Page extends Component<PageProps, PageState> {
|
|
|
141
145
|
mainComponent: 'main',
|
|
142
146
|
getBreakpoint,
|
|
143
147
|
getVerticalBreakpoint,
|
|
144
|
-
mainRef: undefined
|
|
148
|
+
mainRef: undefined,
|
|
149
|
+
isPlain: false
|
|
145
150
|
};
|
|
146
151
|
mainRef = this.props?.mainRef ? this.props.mainRef : createRef<HTMLDivElement>();
|
|
147
152
|
pageRef = createRef<HTMLDivElement>();
|
|
@@ -284,6 +289,8 @@ class Page extends Component<PageProps, PageState> {
|
|
|
284
289
|
isContentFilled,
|
|
285
290
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
286
291
|
mainRef,
|
|
292
|
+
isPlain,
|
|
293
|
+
footer,
|
|
287
294
|
...rest
|
|
288
295
|
} = this.props;
|
|
289
296
|
const { mobileView, mobileIsSidebarOpen, desktopIsSidebarOpen, width, height } = this.state;
|
|
@@ -367,6 +374,7 @@ class Page extends Component<PageProps, PageState> {
|
|
|
367
374
|
width !== null && `pf-m-breakpoint-${getBreakpoint(width)}`,
|
|
368
375
|
height !== null && `pf-m-height-breakpoint-${getVerticalBreakpoint(height)}`,
|
|
369
376
|
sidebar === null && styles.modifiers.noSidebar,
|
|
377
|
+
isPlain && styles.modifiers.plain,
|
|
370
378
|
className
|
|
371
379
|
)}
|
|
372
380
|
>
|
|
@@ -397,6 +405,7 @@ class Page extends Component<PageProps, PageState> {
|
|
|
397
405
|
</div>
|
|
398
406
|
)}
|
|
399
407
|
{!notificationDrawer && main}
|
|
408
|
+
{footer && footer}
|
|
400
409
|
</div>
|
|
401
410
|
</PageContextProvider>
|
|
402
411
|
);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import styles from '@patternfly/react-styles/css/components/Page/page';
|
|
2
|
+
import { css } from '@patternfly/react-styles';
|
|
3
|
+
|
|
4
|
+
export interface PageFooterProps extends React.HTMLProps<HTMLElement> {
|
|
5
|
+
/** Content rendered inside the footer */
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
/** Additional classes added to the footer */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Sets the base component to render. Defaults to footer */
|
|
10
|
+
component?: keyof React.JSX.IntrinsicElements;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const PageFooter: React.FunctionComponent<PageFooterProps> = ({
|
|
14
|
+
className,
|
|
15
|
+
children,
|
|
16
|
+
component = 'footer',
|
|
17
|
+
...props
|
|
18
|
+
}: PageFooterProps) => {
|
|
19
|
+
const Component = component as any;
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<Component {...props} className={css(styles.pageFooter, className)}>
|
|
23
|
+
{children}
|
|
24
|
+
</Component>
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
PageFooter.displayName = 'PageFooter';
|
|
@@ -13,6 +13,7 @@ import { PageHeader } from '../PageHeader';
|
|
|
13
13
|
import { Masthead } from '../../Masthead';
|
|
14
14
|
|
|
15
15
|
import styles from '@patternfly/react-styles/css/components/Page/page';
|
|
16
|
+
import { PageFooter } from '../PageFooter';
|
|
16
17
|
|
|
17
18
|
const props = {
|
|
18
19
|
'aria-label': 'Page layout',
|
|
@@ -520,4 +521,49 @@ describe('Page docked variant', () => {
|
|
|
520
521
|
expect(header).toHaveClass(styles.pageHeader);
|
|
521
522
|
expect(header.parentElement).toHaveClass(styles.page);
|
|
522
523
|
});
|
|
524
|
+
|
|
525
|
+
test('Renders PageFooter when passed to the footer prop', () => {
|
|
526
|
+
render(
|
|
527
|
+
<Page {...props} footer={<PageFooter>Custom footer</PageFooter>}>
|
|
528
|
+
<PageSection>Custom content</PageSection>
|
|
529
|
+
</Page>
|
|
530
|
+
);
|
|
531
|
+
|
|
532
|
+
const footer = screen.getByRole('contentinfo');
|
|
533
|
+
expect(footer).toHaveClass(styles.pageFooter);
|
|
534
|
+
expect(footer.parentElement).toHaveClass(styles.page);
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
test(`Renders with ${styles.modifiers.plain} when isPlain is true`, () => {
|
|
538
|
+
render(
|
|
539
|
+
<Page {...props} isPlain data-testid="page">
|
|
540
|
+
<PageSection>Custom content</PageSection>
|
|
541
|
+
</Page>
|
|
542
|
+
);
|
|
543
|
+
|
|
544
|
+
const page = screen.getByTestId('page');
|
|
545
|
+
expect(page).toHaveClass(styles.modifiers.plain);
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
test(`Does not render with ${styles.modifiers.plain} when isPlain is false`, () => {
|
|
549
|
+
render(
|
|
550
|
+
<Page {...props} isPlain={false} data-testid="page">
|
|
551
|
+
<PageSection>Custom content</PageSection>
|
|
552
|
+
</Page>
|
|
553
|
+
);
|
|
554
|
+
|
|
555
|
+
const page = screen.getByTestId('page');
|
|
556
|
+
expect(page).not.toHaveClass(styles.modifiers.plain);
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
test(`Does not render with ${styles.modifiers.plain} when isPlain is not passed`, () => {
|
|
560
|
+
render(
|
|
561
|
+
<Page {...props} data-testid="page">
|
|
562
|
+
<PageSection>Custom content</PageSection>
|
|
563
|
+
</Page>
|
|
564
|
+
);
|
|
565
|
+
|
|
566
|
+
const page = screen.getByTestId('page');
|
|
567
|
+
expect(page).not.toHaveClass(styles.modifiers.plain);
|
|
568
|
+
});
|
|
523
569
|
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import styles from '@patternfly/react-styles/css/components/Page/page';
|
|
3
|
+
import { PageFooter } from '../PageFooter';
|
|
4
|
+
|
|
5
|
+
test('Renders children', () => {
|
|
6
|
+
render(<PageFooter>Footer content</PageFooter>);
|
|
7
|
+
expect(screen.getByRole('contentinfo')).toBeVisible();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test('Renders without children', () => {
|
|
11
|
+
render(<PageFooter data-testid="footer" />);
|
|
12
|
+
expect(screen.getByTestId('footer')).toBeVisible();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test(`Renders with class ${styles.pageFooter} by default`, () => {
|
|
16
|
+
render(<PageFooter>Footer content</PageFooter>);
|
|
17
|
+
expect(screen.getByRole('contentinfo')).toHaveClass(styles.pageFooter, { exact: true });
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('Renders as a footer by default', () => {
|
|
21
|
+
render(<PageFooter>Footer content</PageFooter>);
|
|
22
|
+
expect(screen.getByRole('contentinfo').tagName).toBe('FOOTER');
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('Renders as a custom component when component is passed', () => {
|
|
26
|
+
render(<PageFooter component="div">Footer content</PageFooter>);
|
|
27
|
+
expect(screen.getByText('Footer content').tagName).toBe('DIV');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('Renders with custom classes when className is passed', () => {
|
|
31
|
+
render(<PageFooter className="custom-class">Footer content</PageFooter>);
|
|
32
|
+
expect(screen.getByRole('contentinfo')).toHaveClass('custom-class');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('Renders with spread props', () => {
|
|
36
|
+
render(<PageFooter id="custom-id">Footer content</PageFooter>);
|
|
37
|
+
expect(screen.getByRole('contentinfo')).toHaveAttribute('id', 'custom-id');
|
|
38
|
+
});
|
|
@@ -33,11 +33,15 @@ The `<MastheadMain>` component includes the smaller area that typically contains
|
|
|
33
33
|
- 1 or more `<PageSidebarBody>` components inside `<PageSidebar>` for vertical navigation or other sidebar content
|
|
34
34
|
- 1 or more `<PageSection>` components
|
|
35
35
|
|
|
36
|
-
### Page header
|
|
36
|
+
### Page header and footer
|
|
37
37
|
|
|
38
38
|
To use a page header instead of passing a [masthead](/components/masthead) directly, pass a `<PageHeader>` to the `masthead` property. `<PageHeader>` should only be used to wrap custom header content.
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
`<PageFooter>` can be passed to the `footer` property, and should be used to wrap custom footer content.
|
|
41
|
+
|
|
42
|
+
When using a custom `<PageHeader>` and `<PageFooter>`, the `isPlain` flag should be passed to `<Page>`. This will remove styling on the main container, the height constraints on the page wrapper (so it can grow beyond the viewport), and remove the scroll management from the content section so the window will be what scrolls.
|
|
43
|
+
|
|
44
|
+
```ts file="./PageHeaderAndFooterContent.tsx"
|
|
41
45
|
|
|
42
46
|
```
|
|
43
47
|
|
package/src/components/Page/examples/{PageHeaderContent.tsx → PageHeaderAndFooterContent.tsx}
RENAMED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Page, PageHeader, PageSection } from '@patternfly/react-core';
|
|
1
|
+
import { Page, PageHeader, PageFooter, PageSection } from '@patternfly/react-core';
|
|
2
2
|
|
|
3
|
-
export const
|
|
3
|
+
export const PageHeaderAndFooterContent: React.FunctionComponent = () => {
|
|
4
4
|
const pageHeader = <PageHeader>Page header</PageHeader>;
|
|
5
|
+
const pageFooter = <PageFooter>Page footer</PageFooter>;
|
|
5
6
|
|
|
6
7
|
return (
|
|
7
|
-
<Page masthead={pageHeader}>
|
|
8
|
+
<Page isPlain masthead={pageHeader} footer={pageFooter}>
|
|
8
9
|
<PageSection aria-labelledby="header-example-section-1">
|
|
9
10
|
<h2 id="header-example-section-1">Page header example section 1</h2>
|
|
10
11
|
</PageSection>
|