@patternfly/react-core 5.0.0-alpha.53 → 5.0.0-alpha.54
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/dist/esm/components/Page/Page.d.ts +2 -2
- package/dist/esm/components/Page/Page.d.ts.map +1 -1
- package/dist/esm/components/Page/index.d.ts +0 -4
- package/dist/esm/components/Page/index.d.ts.map +1 -1
- package/dist/esm/components/Page/index.js +0 -4
- package/dist/esm/components/Page/index.js.map +1 -1
- package/dist/esm/deprecated/components/PageHeader/PageHeader.d.ts.map +1 -0
- package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeader.js +2 -2
- package/dist/esm/deprecated/components/PageHeader/PageHeader.js.map +1 -0
- package/dist/esm/deprecated/components/PageHeader/PageHeaderTools.d.ts.map +1 -0
- package/dist/esm/deprecated/components/PageHeader/PageHeaderTools.js.map +1 -0
- package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsGroup.d.ts.map +1 -0
- package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsGroup.js +2 -2
- package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsGroup.js.map +1 -0
- package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsItem.d.ts.map +1 -0
- package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsItem.js +2 -2
- package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsItem.js.map +1 -0
- package/dist/esm/deprecated/components/PageHeader/index.d.ts +5 -0
- package/dist/esm/deprecated/components/PageHeader/index.d.ts.map +1 -0
- package/dist/esm/deprecated/components/PageHeader/index.js +5 -0
- package/dist/esm/deprecated/components/PageHeader/index.js.map +1 -0
- package/dist/esm/deprecated/components/index.d.ts +1 -0
- package/dist/esm/deprecated/components/index.d.ts.map +1 -1
- package/dist/esm/deprecated/components/index.js +1 -0
- package/dist/esm/deprecated/components/index.js.map +1 -1
- package/dist/js/components/Page/Page.d.ts +2 -2
- package/dist/js/components/Page/Page.d.ts.map +1 -1
- package/dist/js/components/Page/index.d.ts +0 -4
- package/dist/js/components/Page/index.d.ts.map +1 -1
- package/dist/js/components/Page/index.js +0 -4
- package/dist/js/components/Page/index.js.map +1 -1
- package/dist/js/deprecated/components/PageHeader/PageHeader.d.ts.map +1 -0
- package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeader.js +2 -2
- package/dist/js/deprecated/components/PageHeader/PageHeader.js.map +1 -0
- package/dist/js/deprecated/components/PageHeader/PageHeaderTools.d.ts.map +1 -0
- package/dist/js/deprecated/components/PageHeader/PageHeaderTools.js.map +1 -0
- package/dist/js/deprecated/components/PageHeader/PageHeaderToolsGroup.d.ts.map +1 -0
- package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsGroup.js +2 -2
- package/dist/js/deprecated/components/PageHeader/PageHeaderToolsGroup.js.map +1 -0
- package/dist/js/deprecated/components/PageHeader/PageHeaderToolsItem.d.ts.map +1 -0
- package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsItem.js +2 -2
- package/dist/js/deprecated/components/PageHeader/PageHeaderToolsItem.js.map +1 -0
- package/dist/js/deprecated/components/PageHeader/index.d.ts +5 -0
- package/dist/js/deprecated/components/PageHeader/index.d.ts.map +1 -0
- package/dist/js/deprecated/components/PageHeader/index.js +8 -0
- package/dist/js/deprecated/components/PageHeader/index.js.map +1 -0
- package/dist/js/deprecated/components/index.d.ts +1 -0
- package/dist/js/deprecated/components/index.d.ts.map +1 -1
- package/dist/js/deprecated/components/index.js +1 -0
- package/dist/js/deprecated/components/index.js.map +1 -1
- package/dist/umd/react-core.min.js +1 -1
- package/package.json +2 -2
- package/src/components/Nav/examples/Nav.md +0 -5
- package/src/components/Page/Page.tsx +2 -2
- package/src/components/Page/__tests__/Page.test.tsx +1 -1
- package/src/components/Page/examples/Page.md +6 -13
- package/src/components/Page/index.ts +0 -4
- package/src/demos/Nav.md +37 -30
- package/src/demos/Page.md +0 -8
- package/src/demos/examples/Page/PageStickySectionGroupUsingPageHeader.tsx +0 -267
- package/src/{components/Page → deprecated/components/PageHeader}/PageHeader.tsx +2 -2
- package/src/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsGroup.tsx +2 -2
- package/src/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsItem.tsx +2 -2
- package/src/deprecated/components/PageHeader/examples/PageHeader.md +15 -0
- package/src/{components/Page → deprecated/components/PageHeader}/examples/PageVerticalNavUsingPageHeaderComponent.tsx +4 -2
- package/src/deprecated/components/PageHeader/index.ts +4 -0
- package/src/{components/Page/__tests__ → deprecated/components/PageHeader/tests}/PageHeader.test.tsx +0 -2
- package/src/{components/Page/__tests__/Generated → deprecated/components/PageHeader/tests}/PageHeaderTools.test.tsx +2 -2
- package/src/{components/Page/__tests__/Generated → deprecated/components/PageHeader/tests}/PageHeaderToolsGroup.test.tsx +2 -2
- package/src/{components/Page/__tests__/Generated → deprecated/components/PageHeader/tests}/PageHeaderToolsItem.test.tsx +2 -2
- package/src/{components/Page/__tests__/Generated → deprecated/components/PageHeader/tests}/__snapshots__/PageHeaderToolsItem.test.tsx.snap +1 -0
- package/src/deprecated/components/index.ts +1 -0
- package/dist/esm/components/Page/PageHeader.d.ts.map +0 -1
- package/dist/esm/components/Page/PageHeader.js.map +0 -1
- package/dist/esm/components/Page/PageHeaderTools.d.ts.map +0 -1
- package/dist/esm/components/Page/PageHeaderTools.js.map +0 -1
- package/dist/esm/components/Page/PageHeaderToolsGroup.d.ts.map +0 -1
- package/dist/esm/components/Page/PageHeaderToolsGroup.js.map +0 -1
- package/dist/esm/components/Page/PageHeaderToolsItem.d.ts.map +0 -1
- package/dist/esm/components/Page/PageHeaderToolsItem.js.map +0 -1
- package/dist/js/components/Page/PageHeader.d.ts.map +0 -1
- package/dist/js/components/Page/PageHeader.js.map +0 -1
- package/dist/js/components/Page/PageHeaderTools.d.ts.map +0 -1
- package/dist/js/components/Page/PageHeaderTools.js.map +0 -1
- package/dist/js/components/Page/PageHeaderToolsGroup.d.ts.map +0 -1
- package/dist/js/components/Page/PageHeaderToolsGroup.js.map +0 -1
- package/dist/js/components/Page/PageHeaderToolsItem.d.ts.map +0 -1
- package/dist/js/components/Page/PageHeaderToolsItem.js.map +0 -1
- package/src/components/Nav/examples/NavHorizontalPageHeader.tsx +0 -34
- /package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeader.d.ts +0 -0
- /package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeaderTools.d.ts +0 -0
- /package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeaderTools.js +0 -0
- /package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsGroup.d.ts +0 -0
- /package/dist/esm/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsItem.d.ts +0 -0
- /package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeader.d.ts +0 -0
- /package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeaderTools.d.ts +0 -0
- /package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeaderTools.js +0 -0
- /package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsGroup.d.ts +0 -0
- /package/dist/js/{components/Page → deprecated/components/PageHeader}/PageHeaderToolsItem.d.ts +0 -0
- /package/src/{components/Page → deprecated/components/PageHeader}/PageHeaderTools.tsx +0 -0
- /package/src/{components/Page/__tests__ → deprecated/components/PageHeader/tests}/__snapshots__/PageHeader.test.tsx.snap +0 -0
- /package/src/{components/Page/__tests__/Generated → deprecated/components/PageHeader/tests}/__snapshots__/PageHeaderTools.test.tsx.snap +0 -0
- /package/src/{components/Page/__tests__/Generated → deprecated/components/PageHeader/tests}/__snapshots__/PageHeaderToolsGroup.test.tsx.snap +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.54",
|
|
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",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"react": "^17 || ^18",
|
|
71
71
|
"react-dom": "^17 || ^18"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "1032b93276f93eb89b6e02893a14223e2fdfe25d"
|
|
74
74
|
}
|
|
@@ -37,11 +37,6 @@ The following example shows two navigation groups, each with a `title` prop pass
|
|
|
37
37
|
```ts file="./NavMixed.tsx"
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
### Horizontal (only in PageHeader)
|
|
41
|
-
|
|
42
|
-
```ts file="./NavHorizontalPageHeader.tsx"
|
|
43
|
-
```
|
|
44
|
-
|
|
45
40
|
### Horizontal subnav
|
|
46
41
|
|
|
47
42
|
```ts file="./NavHorizontalSubNav.tsx"
|
|
@@ -19,7 +19,7 @@ export interface PageProps extends React.HTMLProps<HTMLDivElement> {
|
|
|
19
19
|
children?: React.ReactNode;
|
|
20
20
|
/** Additional classes added to the page layout */
|
|
21
21
|
className?: string;
|
|
22
|
-
/** Header component (e.g. <
|
|
22
|
+
/** Header component (e.g. <Masthead />) */
|
|
23
23
|
header?: React.ReactNode;
|
|
24
24
|
/** Sidebar component for a side nav (e.g. <PageSidebar />) */
|
|
25
25
|
sidebar?: React.ReactNode;
|
|
@@ -41,7 +41,7 @@ export interface PageProps extends React.HTMLProps<HTMLDivElement> {
|
|
|
41
41
|
mainTabIndex?: number | null;
|
|
42
42
|
/**
|
|
43
43
|
* If true, manages the sidebar open/close state and there is no need to pass the isNavOpen boolean into
|
|
44
|
-
* the sidebar component or add a callback onNavToggle function into the
|
|
44
|
+
* the sidebar component or add a callback onNavToggle function into the Masthead component
|
|
45
45
|
*/
|
|
46
46
|
isManagedSidebar?: boolean;
|
|
47
47
|
/** Flag indicating if tertiary nav width should be limited */
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { render, screen } from '@testing-library/react';
|
|
4
4
|
|
|
5
5
|
import { Page } from '../Page';
|
|
6
|
-
import { PageHeader } from '
|
|
6
|
+
import { PageHeader } from '../../../deprecated/components/PageHeader';
|
|
7
7
|
import { PageSidebar } from '../PageSidebar';
|
|
8
8
|
import { PageSection } from '../PageSection';
|
|
9
9
|
import { Breadcrumb, BreadcrumbItem } from '../../Breadcrumb';
|
|
@@ -5,20 +5,20 @@ cssPrefix: pf-c-page
|
|
|
5
5
|
propComponents:
|
|
6
6
|
[
|
|
7
7
|
'Page',
|
|
8
|
-
'PageHeader',
|
|
9
|
-
'PageHeaderTools',
|
|
10
|
-
'PageHeaderToolsGroup',
|
|
11
|
-
'PageHeaderToolsItem',
|
|
12
8
|
'PageSidebar',
|
|
13
9
|
'PageSection',
|
|
14
10
|
'PageGroup',
|
|
15
11
|
'PageBreadcrumb',
|
|
16
12
|
'PageNavigation',
|
|
17
|
-
'PageToggleButton'
|
|
13
|
+
'PageToggleButton'
|
|
18
14
|
]
|
|
19
15
|
---
|
|
20
16
|
|
|
21
17
|
import BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';
|
|
18
|
+
import {
|
|
19
|
+
PageHeader,
|
|
20
|
+
PageHeaderTools
|
|
21
|
+
} from '@patternfly/react-core/deprecated';
|
|
22
22
|
import './page.css';
|
|
23
23
|
|
|
24
24
|
## Examples
|
|
@@ -41,13 +41,6 @@ The `isNavOpen` property helps facilitate the opening and closing of the sidebar
|
|
|
41
41
|
```ts file="./PageVerticalNav.tsx"
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
### Legacy page header
|
|
45
|
-
|
|
46
|
-
This example shows the legacy implementation of a page's vertical navigation. Our updated recommendation advises you to use a masthead and toolbar to make headers, rather than `<PageHeader>` and `<PageHeaderTools>` as shown in the following example.
|
|
47
|
-
|
|
48
|
-
```ts file="./PageVerticalNavUsingPageHeaderComponent.tsx"
|
|
49
|
-
```
|
|
50
|
-
|
|
51
44
|
### Horizontal navigation
|
|
52
45
|
|
|
53
46
|
To add horizontal navigation to the top of a `<Page>`, add the navigation inside of a `<ToolbarItem>` in the `<Toolbar>` that is passed to the `<MastheadContent>` of the `<Masthead>`.
|
|
@@ -66,7 +59,7 @@ Tertiary navigation allows you to add an additional navigation menu alongside ve
|
|
|
66
59
|
|
|
67
60
|
### Uncontrolled navigation
|
|
68
61
|
|
|
69
|
-
When the `isManagedSidebar` property is true, it manages the sidebar open/close state, removing the need to pass both `isNavOpen` into the `<PageSidebar>` and `onNavToggle` into the `<
|
|
62
|
+
When the `isManagedSidebar` property is true, it manages the sidebar open/close state, removing the need to pass both `isNavOpen` into the `<PageSidebar>` and `onNavToggle` into the `<PageToggleButton>`.
|
|
70
63
|
|
|
71
64
|
```ts file="./PageUncontrolledNav.tsx"
|
|
72
65
|
```
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
export * from './Page';
|
|
2
2
|
export * from './PageBreadcrumb';
|
|
3
3
|
export * from './PageGroup';
|
|
4
|
-
export * from './PageHeader';
|
|
5
4
|
export * from './PageSidebar';
|
|
6
5
|
export * from './PageSection';
|
|
7
|
-
export * from './PageHeaderTools';
|
|
8
|
-
export * from './PageHeaderToolsGroup';
|
|
9
|
-
export * from './PageHeaderToolsItem';
|
|
10
6
|
export * from './PageNavigation';
|
|
11
7
|
export * from './PageToggleButton';
|
|
12
8
|
export * from './PageContext';
|
package/src/demos/Nav.md
CHANGED
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
id: Navigation
|
|
3
3
|
section: components
|
|
4
4
|
---
|
|
5
|
-
|
|
6
5
|
import {
|
|
7
|
-
Dropdown as DropdownDeprecated,
|
|
8
|
-
DropdownGroup as DropdownGroupDeprecated,
|
|
9
|
-
DropdownToggle,
|
|
10
|
-
DropdownItem as DropdownItemDeprecated,
|
|
11
|
-
KebabToggle
|
|
6
|
+
Dropdown as DropdownDeprecated,
|
|
7
|
+
DropdownGroup as DropdownGroupDeprecated,
|
|
8
|
+
DropdownToggle,
|
|
9
|
+
DropdownItem as DropdownItemDeprecated,
|
|
10
|
+
KebabToggle,
|
|
11
|
+
PageHeader,
|
|
12
|
+
PageHeaderTools,
|
|
13
|
+
PageHeaderToolsGroup,
|
|
14
|
+
PageHeaderToolsItem
|
|
12
15
|
} from '@patternfly/react-core/deprecated';
|
|
16
|
+
|
|
13
17
|
import { DashboardBreadcrumb } from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
|
|
14
18
|
import DashboardHeader from '@patternfly/react-core/src/demos/examples/DashboardHeader';
|
|
15
19
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
@@ -372,17 +376,18 @@ import {
|
|
|
372
376
|
NavItem,
|
|
373
377
|
NavList,
|
|
374
378
|
Page,
|
|
375
|
-
PageHeader,
|
|
376
379
|
PageSection,
|
|
377
380
|
PageSectionVariants,
|
|
378
381
|
SkipToContent,
|
|
379
382
|
TextContent,
|
|
380
|
-
Text
|
|
381
|
-
PageHeaderTools,
|
|
382
|
-
PageHeaderToolsGroup,
|
|
383
|
-
PageHeaderToolsItem
|
|
383
|
+
Text
|
|
384
384
|
} from '@patternfly/react-core';
|
|
385
|
+
|
|
385
386
|
import {
|
|
387
|
+
PageHeader,
|
|
388
|
+
PageHeaderTools,
|
|
389
|
+
PageHeaderToolsGroup,
|
|
390
|
+
PageHeaderToolsItem,
|
|
386
391
|
Dropdown as DropdownDeprecated,
|
|
387
392
|
DropdownGroup as DropdownGroupDeprecated,
|
|
388
393
|
DropdownToggle,
|
|
@@ -730,23 +735,23 @@ import {
|
|
|
730
735
|
NavItem,
|
|
731
736
|
NavList,
|
|
732
737
|
Page,
|
|
733
|
-
PageHeader,
|
|
734
738
|
PageSection,
|
|
735
739
|
PageSectionVariants,
|
|
736
740
|
PageSectionTypes,
|
|
737
741
|
SkipToContent,
|
|
738
742
|
TextContent,
|
|
739
|
-
Text
|
|
740
|
-
PageHeaderTools,
|
|
741
|
-
PageHeaderToolsGroup,
|
|
742
|
-
PageHeaderToolsItem
|
|
743
|
+
Text
|
|
743
744
|
} from '@patternfly/react-core';
|
|
744
745
|
import {
|
|
745
746
|
Dropdown as DropdownDeprecated,
|
|
746
747
|
DropdownGroup as DropdownGroupDeprecated,
|
|
747
748
|
DropdownToggle,
|
|
748
749
|
DropdownItem as DropdownItemDeprecated,
|
|
749
|
-
KebabToggle
|
|
750
|
+
KebabToggle,
|
|
751
|
+
PageHeader,
|
|
752
|
+
PageHeaderTools,
|
|
753
|
+
PageHeaderToolsItem,
|
|
754
|
+
PageHeaderToolsGroup
|
|
750
755
|
} from '@patternfly/react-core/deprecated';
|
|
751
756
|
import { DashboardBreadcrumb } from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
|
|
752
757
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
@@ -1196,23 +1201,23 @@ import {
|
|
|
1196
1201
|
NavItem,
|
|
1197
1202
|
NavList,
|
|
1198
1203
|
Page,
|
|
1199
|
-
PageHeader,
|
|
1200
1204
|
PageSection,
|
|
1201
1205
|
PageSectionVariants,
|
|
1202
1206
|
PageSidebar,
|
|
1203
1207
|
SkipToContent,
|
|
1204
1208
|
TextContent,
|
|
1205
|
-
Text
|
|
1206
|
-
PageHeaderTools,
|
|
1207
|
-
PageHeaderToolsGroup,
|
|
1208
|
-
PageHeaderToolsItem
|
|
1209
|
+
Text
|
|
1209
1210
|
} from '@patternfly/react-core';
|
|
1210
1211
|
import {
|
|
1211
1212
|
Dropdown as DropdownDeprecated,
|
|
1212
1213
|
DropdownGroup as DropdownGroupDeprecated,
|
|
1213
1214
|
DropdownToggle,
|
|
1214
1215
|
DropdownItem as DropdownItemDeprecated,
|
|
1215
|
-
KebabToggle
|
|
1216
|
+
KebabToggle,
|
|
1217
|
+
PageHeader,
|
|
1218
|
+
PageHeaderTools,
|
|
1219
|
+
PageHeaderToolsItem,
|
|
1220
|
+
PageHeaderToolsGroup
|
|
1216
1221
|
} from '@patternfly/react-core/deprecated';
|
|
1217
1222
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
1218
1223
|
import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
|
|
@@ -1433,8 +1438,6 @@ import {
|
|
|
1433
1438
|
Nav,
|
|
1434
1439
|
NavList,
|
|
1435
1440
|
NavItem,
|
|
1436
|
-
PageHeader,
|
|
1437
|
-
PageHeaderTools,
|
|
1438
1441
|
PageSidebar,
|
|
1439
1442
|
PageSection,
|
|
1440
1443
|
PageSectionVariants,
|
|
@@ -1443,6 +1446,10 @@ import {
|
|
|
1443
1446
|
MenuList,
|
|
1444
1447
|
MenuItem
|
|
1445
1448
|
} from '@patternfly/react-core';
|
|
1449
|
+
import {
|
|
1450
|
+
PageHeader,
|
|
1451
|
+
PageHeaderTools,
|
|
1452
|
+
}from '@patternfly/react-core';
|
|
1446
1453
|
import DashboardHeader from '@patternfly/react-core/src/demos/examples/DashboardHeader';
|
|
1447
1454
|
|
|
1448
1455
|
class VerticalPage extends React.Component {
|
|
@@ -1452,7 +1459,7 @@ class VerticalPage extends React.Component {
|
|
|
1452
1459
|
isNavOpen: true,
|
|
1453
1460
|
activeItem: 0
|
|
1454
1461
|
};
|
|
1455
|
-
this.onNavSelect = (result) => {
|
|
1462
|
+
this.onNavSelect = (e, result) => {
|
|
1456
1463
|
this.setState({
|
|
1457
1464
|
activeItem: result.itemId
|
|
1458
1465
|
});
|
|
@@ -1493,17 +1500,17 @@ class VerticalPage extends React.Component {
|
|
|
1493
1500
|
const { activeItem } = this.state;
|
|
1494
1501
|
|
|
1495
1502
|
const Sidebar = (
|
|
1496
|
-
<PageSidebar
|
|
1503
|
+
<PageSidebar style={{"overflow": "visible"}}
|
|
1497
1504
|
nav={
|
|
1498
1505
|
<Nav onSelect={this.onNavSelect}>
|
|
1499
1506
|
<NavList>
|
|
1500
|
-
<NavItem id="flyout-link1" to="#flyout-link1" itemId={0} isActive={activeItem === 0}>
|
|
1507
|
+
<NavItem preventDefault id="flyout-link1" to="#flyout-link1" itemId={0} isActive={activeItem === 0}>
|
|
1501
1508
|
System Panel
|
|
1502
1509
|
</NavItem>
|
|
1503
|
-
<NavItem flyout={curFlyout} id="flyout-link2"
|
|
1510
|
+
<NavItem preventDefault flyout={curFlyout} id="flyout-link2" itemId={1} isActive={activeItem === 1}>
|
|
1504
1511
|
Settings
|
|
1505
1512
|
</NavItem>
|
|
1506
|
-
<NavItem id="flyout-link3" to="#flyout-link3" itemId={2} isActive={activeItem === 2}>
|
|
1513
|
+
<NavItem preventDefault id="flyout-link3" to="#flyout-link3" itemId={2} isActive={activeItem === 2}>
|
|
1507
1514
|
Authentication
|
|
1508
1515
|
</NavItem>
|
|
1509
1516
|
</NavList>
|
package/src/demos/Page.md
CHANGED
|
@@ -43,14 +43,6 @@ This demonstrates a variety of navigation patterns in the context of a full page
|
|
|
43
43
|
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
### Sticky section group (using PageHeader)
|
|
47
|
-
|
|
48
|
-
This demo is provided becuase PageHeader and PageHeaderTools are still in use; however, going forward Masthead and Toolbar should be used to make headers rather than PageHeader and PageHeaderTools.
|
|
49
|
-
|
|
50
|
-
```ts file='./examples/Page/PageStickySectionGroupUsingPageHeader.tsx' isFullscreen
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
|
|
54
46
|
### Sticky section breadcrumb (with breakpoints)
|
|
55
47
|
|
|
56
48
|
```ts file='./examples/Page/PageStickySectionBreadcrumb.tsx' isFullscreen
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
Avatar,
|
|
4
|
-
Brand,
|
|
5
|
-
Breadcrumb,
|
|
6
|
-
BreadcrumbItem,
|
|
7
|
-
Button,
|
|
8
|
-
ButtonVariant,
|
|
9
|
-
Card,
|
|
10
|
-
CardBody,
|
|
11
|
-
Divider,
|
|
12
|
-
Gallery,
|
|
13
|
-
GalleryItem,
|
|
14
|
-
Nav,
|
|
15
|
-
NavItem,
|
|
16
|
-
NavList,
|
|
17
|
-
Page,
|
|
18
|
-
PageHeader,
|
|
19
|
-
PageHeaderTools,
|
|
20
|
-
PageHeaderToolsGroup,
|
|
21
|
-
PageHeaderToolsItem,
|
|
22
|
-
PageSection,
|
|
23
|
-
PageSectionVariants,
|
|
24
|
-
PageSidebar,
|
|
25
|
-
SkipToContent,
|
|
26
|
-
Text,
|
|
27
|
-
TextContent
|
|
28
|
-
} from '@patternfly/react-core';
|
|
29
|
-
import {
|
|
30
|
-
Dropdown as DropdownDeprecated,
|
|
31
|
-
DropdownGroup as DropdownGroupDeprecated,
|
|
32
|
-
DropdownItem as DropdownItemDeprecated,
|
|
33
|
-
DropdownToggle,
|
|
34
|
-
KebabToggle
|
|
35
|
-
} from '@patternfly/react-core/deprecated';
|
|
36
|
-
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
37
|
-
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
38
|
-
import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
|
|
39
|
-
import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
|
|
40
|
-
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
|
|
41
|
-
|
|
42
|
-
interface NavOnSelectProps {
|
|
43
|
-
groupId: number | string;
|
|
44
|
-
itemId: number | string;
|
|
45
|
-
to: string;
|
|
46
|
-
event: React.FormEvent<HTMLInputElement>;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const PageStickySectionGroupUsingPageHeader: React.FunctionComponent = () => {
|
|
50
|
-
const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);
|
|
51
|
-
const [isKebabDropdownOpen, setIsKebabDropdownOpen] = React.useState(false);
|
|
52
|
-
const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = React.useState(false);
|
|
53
|
-
const [activeItem, setActiveItem] = React.useState(1);
|
|
54
|
-
|
|
55
|
-
const onNavSelect = (selectedItem: NavOnSelectProps) => {
|
|
56
|
-
typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
const onDropdownToggle = (_event: any, isOpen: boolean) => {
|
|
60
|
-
setIsDropdownOpen(isOpen);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const onDropdownSelect = () => {
|
|
64
|
-
setIsDropdownOpen(!isDropdownOpen);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
const onKebabDropdownToggle = (_event: any, isOpen: boolean) => {
|
|
68
|
-
setIsKebabDropdownOpen(isOpen);
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
const onKebabDropdownSelect = () => {
|
|
72
|
-
setIsKebabDropdownOpen(!isKebabDropdownOpen);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const onFullKebabDropdownToggle = (_event: any, isOpen: boolean) => {
|
|
76
|
-
setIsFullKebabDropdownOpen(isOpen);
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const onFullKebabDropdownSelect = () => {
|
|
80
|
-
setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
const dashboardBreadcrumb = (
|
|
84
|
-
<Breadcrumb>
|
|
85
|
-
<BreadcrumbItem>Section home</BreadcrumbItem>
|
|
86
|
-
<BreadcrumbItem to="#">Section title</BreadcrumbItem>
|
|
87
|
-
<BreadcrumbItem to="#">Section title</BreadcrumbItem>
|
|
88
|
-
<BreadcrumbItem to="#" isActive>
|
|
89
|
-
Section landing
|
|
90
|
-
</BreadcrumbItem>
|
|
91
|
-
</Breadcrumb>
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
const kebabDropdownItems = [
|
|
95
|
-
<DropdownItemDeprecated key="settings">
|
|
96
|
-
<CogIcon /> Settings
|
|
97
|
-
</DropdownItemDeprecated>,
|
|
98
|
-
<DropdownItemDeprecated key="help">
|
|
99
|
-
<HelpIcon /> Help
|
|
100
|
-
</DropdownItemDeprecated>
|
|
101
|
-
];
|
|
102
|
-
|
|
103
|
-
const fullKebabDropdownItems = [
|
|
104
|
-
<DropdownGroupDeprecated key="group 2">
|
|
105
|
-
<DropdownItemDeprecated key="group 2 profile">My profile</DropdownItemDeprecated>
|
|
106
|
-
<DropdownItemDeprecated key="group 2 user" component="button">
|
|
107
|
-
User management
|
|
108
|
-
</DropdownItemDeprecated>
|
|
109
|
-
<DropdownItemDeprecated key="group 2 logout">Logout</DropdownItemDeprecated>
|
|
110
|
-
</DropdownGroupDeprecated>,
|
|
111
|
-
<Divider key="divider" />,
|
|
112
|
-
<DropdownItemDeprecated key="settings">
|
|
113
|
-
<CogIcon /> Settings
|
|
114
|
-
</DropdownItemDeprecated>,
|
|
115
|
-
<DropdownItemDeprecated key="help">
|
|
116
|
-
<HelpIcon /> Help
|
|
117
|
-
</DropdownItemDeprecated>
|
|
118
|
-
];
|
|
119
|
-
|
|
120
|
-
const userDropdownItems = [
|
|
121
|
-
<DropdownGroupDeprecated key="group 2">
|
|
122
|
-
<DropdownItemDeprecated key="group 2 profile">My profile</DropdownItemDeprecated>
|
|
123
|
-
<DropdownItemDeprecated key="group 2 user" component="button">
|
|
124
|
-
User management
|
|
125
|
-
</DropdownItemDeprecated>
|
|
126
|
-
<DropdownItemDeprecated key="group 2 logout">Logout</DropdownItemDeprecated>
|
|
127
|
-
</DropdownGroupDeprecated>
|
|
128
|
-
];
|
|
129
|
-
|
|
130
|
-
const pageNav = (
|
|
131
|
-
<Nav onSelect={onNavSelect}>
|
|
132
|
-
<NavList>
|
|
133
|
-
<NavItem itemId={0} isActive={activeItem === 0} to="#system-panel">
|
|
134
|
-
System panel
|
|
135
|
-
</NavItem>
|
|
136
|
-
<NavItem itemId={1} isActive={activeItem === 1} to="#policy">
|
|
137
|
-
Policy
|
|
138
|
-
</NavItem>
|
|
139
|
-
<NavItem itemId={2} isActive={activeItem === 2} to="#auth">
|
|
140
|
-
Authentication
|
|
141
|
-
</NavItem>
|
|
142
|
-
<NavItem itemId={3} isActive={activeItem === 3} to="#network">
|
|
143
|
-
Network services
|
|
144
|
-
</NavItem>
|
|
145
|
-
<NavItem itemId={4} isActive={activeItem === 4} to="#server">
|
|
146
|
-
Server
|
|
147
|
-
</NavItem>
|
|
148
|
-
</NavList>
|
|
149
|
-
</Nav>
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
const sidebar = <PageSidebar nav={pageNav} />;
|
|
153
|
-
|
|
154
|
-
const mainContainerId = 'main-content';
|
|
155
|
-
|
|
156
|
-
const pageSkipToContent = <SkipToContent href={`#${mainContainerId}`}>Skip to content</SkipToContent>;
|
|
157
|
-
|
|
158
|
-
const headerTools = (
|
|
159
|
-
<PageHeaderTools>
|
|
160
|
-
<PageHeaderToolsGroup>
|
|
161
|
-
<PageHeaderToolsItem>
|
|
162
|
-
<Button aria-label="Notifications" variant={ButtonVariant.plain} icon={<BellIcon />} />
|
|
163
|
-
</PageHeaderToolsItem>
|
|
164
|
-
<PageHeaderToolsGroup visibility={{ default: 'hidden', lg: 'visible' }}>
|
|
165
|
-
<PageHeaderToolsItem>
|
|
166
|
-
<Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
|
|
167
|
-
</PageHeaderToolsItem>
|
|
168
|
-
<PageHeaderToolsItem>
|
|
169
|
-
<Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
|
|
170
|
-
</PageHeaderToolsItem>
|
|
171
|
-
</PageHeaderToolsGroup>
|
|
172
|
-
<PageHeaderToolsItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
|
|
173
|
-
<DropdownDeprecated
|
|
174
|
-
isPlain
|
|
175
|
-
position="right"
|
|
176
|
-
onSelect={onKebabDropdownSelect}
|
|
177
|
-
toggle={<KebabToggle onToggle={onKebabDropdownToggle} />}
|
|
178
|
-
isOpen={isKebabDropdownOpen}
|
|
179
|
-
dropdownItems={kebabDropdownItems}
|
|
180
|
-
/>
|
|
181
|
-
</PageHeaderToolsItem>
|
|
182
|
-
<PageHeaderToolsItem visibility={{ md: 'hidden' }}>
|
|
183
|
-
<DropdownDeprecated
|
|
184
|
-
isPlain
|
|
185
|
-
position="right"
|
|
186
|
-
onSelect={onFullKebabDropdownSelect}
|
|
187
|
-
toggle={<KebabToggle onToggle={onFullKebabDropdownToggle} />}
|
|
188
|
-
isOpen={isFullKebabDropdownOpen}
|
|
189
|
-
dropdownItems={fullKebabDropdownItems}
|
|
190
|
-
/>
|
|
191
|
-
</PageHeaderToolsItem>
|
|
192
|
-
</PageHeaderToolsGroup>
|
|
193
|
-
<PageHeaderToolsItem
|
|
194
|
-
visibility={{ default: 'hidden', md: 'visible' }} /** this user dropdown is hidden on mobile sizes */
|
|
195
|
-
>
|
|
196
|
-
<Avatar src={imgAvatar} alt="Avatar" />
|
|
197
|
-
</PageHeaderToolsItem>
|
|
198
|
-
<PageHeaderToolsItem
|
|
199
|
-
visibility={{ default: 'hidden', md: 'visible' }} /** this user dropdown is hidden on mobile sizes */
|
|
200
|
-
>
|
|
201
|
-
<DropdownDeprecated
|
|
202
|
-
isPlain
|
|
203
|
-
position="right"
|
|
204
|
-
onSelect={onDropdownSelect}
|
|
205
|
-
isOpen={isDropdownOpen}
|
|
206
|
-
toggle={<DropdownToggle onToggle={onDropdownToggle}>Ned Username</DropdownToggle>}
|
|
207
|
-
dropdownItems={userDropdownItems}
|
|
208
|
-
/>
|
|
209
|
-
</PageHeaderToolsItem>
|
|
210
|
-
</PageHeaderTools>
|
|
211
|
-
);
|
|
212
|
-
|
|
213
|
-
const pageHeader = (
|
|
214
|
-
<PageHeader
|
|
215
|
-
logo={
|
|
216
|
-
<Brand
|
|
217
|
-
widths={{ default: '180px', md: '180px', '2xl': '220px' }}
|
|
218
|
-
src="/assets/images/logo__pf--reverse--base.png"
|
|
219
|
-
alt="Fallback patternFly default logo"
|
|
220
|
-
>
|
|
221
|
-
<source media="(min-width: 768px)" srcSet="/assets/images/logo__pf--reverse-on-md.svg" />
|
|
222
|
-
<source srcSet="/assets/images/logo__pf--reverse--base.svg" />
|
|
223
|
-
</Brand>
|
|
224
|
-
}
|
|
225
|
-
headerTools={headerTools}
|
|
226
|
-
showNavToggle
|
|
227
|
-
/>
|
|
228
|
-
);
|
|
229
|
-
|
|
230
|
-
return (
|
|
231
|
-
<Page
|
|
232
|
-
header={pageHeader}
|
|
233
|
-
sidebar={sidebar}
|
|
234
|
-
isManagedSidebar
|
|
235
|
-
skipToContent={pageSkipToContent}
|
|
236
|
-
breadcrumb={dashboardBreadcrumb}
|
|
237
|
-
mainContainerId={mainContainerId}
|
|
238
|
-
isBreadcrumbWidthLimited
|
|
239
|
-
isBreadcrumbGrouped
|
|
240
|
-
additionalGroupedContent={
|
|
241
|
-
<PageSection variant={PageSectionVariants.light} isWidthLimited>
|
|
242
|
-
<TextContent>
|
|
243
|
-
<Text component="h1">Main title</Text>
|
|
244
|
-
<Text component="p">This is a full page demo.</Text>
|
|
245
|
-
</TextContent>
|
|
246
|
-
</PageSection>
|
|
247
|
-
}
|
|
248
|
-
groupProps={{
|
|
249
|
-
stickyOnBreakpoint: {
|
|
250
|
-
default: 'top'
|
|
251
|
-
}
|
|
252
|
-
}}
|
|
253
|
-
>
|
|
254
|
-
<PageSection>
|
|
255
|
-
<Gallery hasGutter>
|
|
256
|
-
{Array.apply(0, Array(50)).map((x, i) => (
|
|
257
|
-
<GalleryItem key={i}>
|
|
258
|
-
<Card>
|
|
259
|
-
<CardBody>This is a card</CardBody>
|
|
260
|
-
</Card>
|
|
261
|
-
</GalleryItem>
|
|
262
|
-
))}
|
|
263
|
-
</Gallery>
|
|
264
|
-
</PageSection>
|
|
265
|
-
</Page>
|
|
266
|
-
);
|
|
267
|
-
};
|
|
@@ -3,8 +3,8 @@ import * as React from 'react';
|
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/Page/page';
|
|
4
4
|
import { css } from '@patternfly/react-styles';
|
|
5
5
|
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
6
|
-
import { Button, ButtonVariant } from '
|
|
7
|
-
import { PageContextConsumer, PageContextProps } from '
|
|
6
|
+
import { Button, ButtonVariant } from '../../../components/Button';
|
|
7
|
+
import { PageContextConsumer, PageContextProps } from '../../../components/Page/PageContext';
|
|
8
8
|
|
|
9
9
|
export interface PageHeaderProps extends React.HTMLProps<HTMLDivElement> {
|
|
10
10
|
/** Additional classes added to the page header */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/Page/page';
|
|
3
3
|
import { css } from '@patternfly/react-styles';
|
|
4
|
-
import { formatBreakpointMods } from '
|
|
5
|
-
import { PageContext } from '
|
|
4
|
+
import { formatBreakpointMods } from '../../../helpers/util';
|
|
5
|
+
import { PageContext } from '../../../components/Page/PageContext';
|
|
6
6
|
|
|
7
7
|
export interface PageHeaderToolsGroupProps extends React.HTMLProps<HTMLDivElement> {
|
|
8
8
|
/** Content rendered in the page header tools group */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/Page/page';
|
|
3
3
|
import { css } from '@patternfly/react-styles';
|
|
4
|
-
import { formatBreakpointMods } from '
|
|
5
|
-
import { PageContext } from '
|
|
4
|
+
import { formatBreakpointMods } from '../../../helpers/util';
|
|
5
|
+
import { PageContext } from '../../../components/Page/PageContext';
|
|
6
6
|
|
|
7
7
|
export interface PageHeaderToolsItemProps extends React.HTMLProps<HTMLDivElement> {
|
|
8
8
|
/** Content rendered in page header tools item. */
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: Page
|
|
3
|
+
section: components
|
|
4
|
+
cssPrefix: pf-c-page
|
|
5
|
+
propComponents: ['PageHeader','PageHeaderTools','PageHeaderToolsGroup','PageHeaderToolsItem']
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Page header examples
|
|
9
|
+
|
|
10
|
+
### Vertical navigation
|
|
11
|
+
|
|
12
|
+
This example shows the deprecated implementation of a page's vertical navigation. Our updated recommendation advises you to use a masthead and toolbar to make headers, rather than `<PageHeader>` and `<PageHeaderTools>` as shown in the following example.
|
|
13
|
+
|
|
14
|
+
```ts file="./PageVerticalNavUsingPageHeaderComponent.tsx"
|
|
15
|
+
```
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import {
|
|
3
3
|
Page,
|
|
4
|
-
PageHeader,
|
|
5
|
-
PageHeaderTools,
|
|
6
4
|
PageSidebar,
|
|
7
5
|
PageSection,
|
|
8
6
|
PageSectionVariants
|
|
9
7
|
} from '@patternfly/react-core';
|
|
8
|
+
import {
|
|
9
|
+
PageHeader,
|
|
10
|
+
PageHeaderTools
|
|
11
|
+
} from '@patternfly/react-core/deprecated';
|
|
10
12
|
|
|
11
13
|
export const PageVerticalNavUsingPageHeaderComponent: React.FunctionComponent = () => {
|
|
12
14
|
const [isNavOpen, setIsNavOpen] = React.useState(true);
|
package/src/{components/Page/__tests__ → deprecated/components/PageHeader/tests}/PageHeader.test.tsx
RENAMED
|
@@ -2,8 +2,6 @@ import * as React from 'react';
|
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { PageHeader } from '../PageHeader';
|
|
4
4
|
|
|
5
|
-
jest.mock('../Page');
|
|
6
|
-
|
|
7
5
|
test('Check page vertical layout example against snapshot', () => {
|
|
8
6
|
const Header = <PageHeader logo="Logo" headerTools="PageHeaderTools | Avatar" onNavToggle={() => undefined} />;
|
|
9
7
|
const { asFragment } = render(Header);
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { render } from '@testing-library/react';
|
|
6
|
-
import { PageHeaderTools } from '
|
|
6
|
+
import { PageHeaderTools } from '../PageHeaderTools';
|
|
7
7
|
// any missing imports can usually be resolved by adding them here
|
|
8
8
|
import {} from '../..';
|
|
9
9
|
|
|
10
10
|
it('PageHeaderTools should match snapshot (auto-generated)', () => {
|
|
11
|
-
const { asFragment } = render(<PageHeaderTools
|
|
11
|
+
const { asFragment } = render(<PageHeaderTools className={'string'}><div>ReactNode</div></PageHeaderTools>);
|
|
12
12
|
expect(asFragment()).toMatchSnapshot();
|
|
13
13
|
});
|