@patternfly/react-docs 5.22.3 → 5.22.7
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 +32 -0
- package/package.json +11 -11
- package/src/generated/components/back-to-top/react-demos/using-name-selector.png +0 -0
- package/src/generated/components/backdrop/react/basic.png +0 -0
- package/src/generated/components/backdrop/react/with-spinner.png +0 -0
- package/src/generated/components/background-image/react/basic.png +0 -0
- package/src/generated/components/banner/react-demos/basic-sticky-banner.png +0 -0
- package/src/generated/components/banner/react-demos/top-and-bottom-banner.png +0 -0
- package/src/generated/components/card/react-demos.js +46 -1
- package/src/generated/components/drawer/react.js +0 -2
- package/src/generated/components/jump-links/react-demos/scrollspy-with-subsections.png +0 -0
- package/src/generated/components/login-page/react/basic.png +0 -0
- package/src/generated/components/login-page/react/showhide-password.png +0 -0
- package/src/generated/components/navigation/react-demos/default-nav.png +0 -0
- package/src/generated/components/navigation/react-demos/expandable-nav.png +0 -0
- package/src/generated/components/navigation/react-demos/grouped-nav.png +0 -0
- package/src/generated/components/navigation/react-demos/horizontal-nav-with-horizontal-subnav.png +0 -0
- package/src/generated/components/navigation/react-demos/horizontal-nav.png +0 -0
- package/src/generated/components/navigation/react-demos/horizontal-subnav.png +0 -0
- package/src/generated/components/navigation/react-demos/legacy-tertiary-nav.png +0 -0
- package/src/generated/components/navigation/react-demos/legacylight-nav.png +0 -0
- package/src/generated/components/navigation/react-demos/manual-nav.png +0 -0
- package/src/generated/components/notification-drawer/react-demos/basic.png +0 -0
- package/src/generated/components/notification-drawer/react-demos/grouped.png +0 -0
- package/src/generated/components/page/react-demos/sticky-section-group-alternate-syntax-and-using-pageheader.png +0 -0
- package/src/generated/components/page/react-demos/sticky-section-group-using-pageheader.png +0 -0
- package/src/generated/components/page/react-demos/sticky-section-group.png +0 -0
- package/src/generated/components/page/react-demos.js +27 -7
- package/src/generated/components/page/react.js +21 -9
- package/src/generated/components/pagination/react/sticky.png +0 -0
- package/src/generated/components/select/react.js +6 -0
- package/src/generated/components/skip-to-content/react/basic.png +0 -0
- package/src/generated/components/table/react-demos/sticky-header.png +0 -0
- package/src/generated/components/tabs/react.js +43 -0
- package/src/generated/components/toolbar/react-demos/console-log-viewer-toolbar-demo.png +0 -0
- package/src/generated/components/wizard/react-demos/in-modal.png +0 -0
- package/src/generated/components/wizard/react-demos/in-page.png +0 -0
- package/src/generated/demos/card-view/react-demos/card-view.png +0 -0
- package/src/generated/demos/composable-menu/react-demos.js +15 -9
- package/src/generated/demos/primary-detail/react-demos/primary-detail-card-view.png +0 -0
- package/src/generated/demos/primary-detail/react-demos/primary-detail-content-padding.png +0 -0
- package/src/generated/demos/primary-detail/react-demos/primary-detail-data-list-in-card.png +0 -0
- package/src/generated/demos/primary-detail/react-demos/primary-detail-full-page.png +0 -0
- package/src/generated/demos/primary-detail/react-demos/primary-detail-inline-modifier.png +0 -0
- package/src/generated/demos/primary-detail/react-demos/primary-detail-simple-list-in-card.png +0 -0
- package/src/generated/index.js +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,38 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [5.22.7](https://github.com/patternfly/patternfly-react/compare/@patternfly/react-docs@5.22.6...@patternfly/react-docs@5.22.7) (2021-10-05)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @patternfly/react-docs
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [5.22.6](https://github.com/patternfly/patternfly-react/compare/@patternfly/react-docs@5.22.5...@patternfly/react-docs@5.22.6) (2021-10-05)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @patternfly/react-docs
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [5.22.5](https://github.com/patternfly/patternfly-react/compare/@patternfly/react-docs@5.22.4...@patternfly/react-docs@5.22.5) (2021-10-04)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @patternfly/react-docs
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [5.22.4](https://github.com/patternfly/patternfly-react/compare/@patternfly/react-docs@5.22.3...@patternfly/react-docs@5.22.4) (2021-10-01)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @patternfly/react-docs
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
6
38
|
## [5.22.3](https://github.com/patternfly/patternfly-react/compare/@patternfly/react-docs@5.22.2...@patternfly/react-docs@5.22.3) (2021-10-01)
|
|
7
39
|
|
|
8
40
|
**Note:** Version bump only for package @patternfly/react-docs
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-docs",
|
|
3
3
|
"description": "PatternFly React Docs",
|
|
4
|
-
"version": "5.22.
|
|
4
|
+
"version": "5.22.7",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
7
7
|
"tag": "prerelease-v4"
|
|
@@ -23,18 +23,18 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@patternfly/patternfly": "4.139.2",
|
|
26
|
-
"@patternfly/react-catalog-view-extension": "^4.13.
|
|
26
|
+
"@patternfly/react-catalog-view-extension": "^4.13.5",
|
|
27
27
|
"@patternfly/react-charts": "^6.15.26",
|
|
28
|
-
"@patternfly/react-code-editor": "^4.3.
|
|
29
|
-
"@patternfly/react-core": "^4.
|
|
28
|
+
"@patternfly/react-code-editor": "^4.3.72",
|
|
29
|
+
"@patternfly/react-core": "^4.159.0",
|
|
30
30
|
"@patternfly/react-icons": "^4.12.1",
|
|
31
|
-
"@patternfly/react-inline-edit-extension": "^4.7.
|
|
32
|
-
"@patternfly/react-log-viewer": "^4.7.
|
|
31
|
+
"@patternfly/react-inline-edit-extension": "^4.7.96",
|
|
32
|
+
"@patternfly/react-log-viewer": "^4.7.8",
|
|
33
33
|
"@patternfly/react-styles": "^4.12.1",
|
|
34
|
-
"@patternfly/react-table": "^4.30.
|
|
34
|
+
"@patternfly/react-table": "^4.30.15",
|
|
35
35
|
"@patternfly/react-tokens": "^4.13.1",
|
|
36
|
-
"@patternfly/react-topology": "^4.9.
|
|
37
|
-
"@patternfly/react-virtualized-extension": "^4.9.
|
|
36
|
+
"@patternfly/react-topology": "^4.9.91",
|
|
37
|
+
"@patternfly/react-virtualized-extension": "^4.9.61"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@patternfly/patternfly-a11y": "4.2.1",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"react-dom": "^17.0.0",
|
|
45
45
|
"rimraf": "^2.6.3",
|
|
46
46
|
"shx": "^0.3.2",
|
|
47
|
-
"theme-patternfly-org": "0.7.
|
|
47
|
+
"theme-patternfly-org": "0.7.7"
|
|
48
48
|
},
|
|
49
49
|
"keywords": [
|
|
50
50
|
"gatsby"
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"last 2 versions",
|
|
54
54
|
"not ie <= 11"
|
|
55
55
|
],
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "86e7ecb47f3d2197cb664ce7237d3a25e18f8a48"
|
|
57
57
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -5,6 +5,11 @@ import ArrowRightIcon from '@patternfly/react-icons/dist/js/icons/arrow-right-ic
|
|
|
5
5
|
import ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
|
|
6
6
|
import { CheckCircleIcon, ExclamationCircleIcon, ExclamationTriangleIcon, TimesCircleIcon, BellIcon } from '@patternfly/react-icons';
|
|
7
7
|
import { TableComposable, Thead, Tbody, Tr, Th, Td, ExpandableRowContent } from '@patternfly/react-table';
|
|
8
|
+
import { Chart, ChartAxis, ChartGroup, ChartVoronoiContainer, ChartStack, ChartBar, ChartTooltip, ChartDonutThreshold, ChartDonutUtilization, ChartArea, ChartContainer, ChartLabel } from '@patternfly/react-charts';
|
|
9
|
+
import chart_color_gold_100 from '@patternfly/react-tokens/dist/esm/chart_color_gold_100';
|
|
10
|
+
import chart_color_gold_300 from '@patternfly/react-tokens/dist/esm/chart_color_gold_300';
|
|
11
|
+
import chart_color_orange_300 from '@patternfly/react-tokens/dist/esm/chart_color_orange_300';
|
|
12
|
+
import chart_color_red_100 from '@patternfly/react-tokens/dist/esm/chart_color_red_100';
|
|
8
13
|
import srcImportcardview from './react-demos/card-view.png';
|
|
9
14
|
const pageData = {
|
|
10
15
|
"id": "Card",
|
|
@@ -19,6 +24,10 @@ const pageData = {
|
|
|
19
24
|
"Aggregate status card",
|
|
20
25
|
"Status",
|
|
21
26
|
"Status Tabbed",
|
|
27
|
+
"Utilization card 1",
|
|
28
|
+
"Utilization card 2",
|
|
29
|
+
"Utilization card 3",
|
|
30
|
+
"Utilization card 4",
|
|
22
31
|
"Log view",
|
|
23
32
|
"Event view"
|
|
24
33
|
]
|
|
@@ -38,7 +47,23 @@ pageData.liveContext = {
|
|
|
38
47
|
Tr,
|
|
39
48
|
Th,
|
|
40
49
|
Td,
|
|
41
|
-
ExpandableRowContent
|
|
50
|
+
ExpandableRowContent,
|
|
51
|
+
Chart,
|
|
52
|
+
ChartAxis,
|
|
53
|
+
ChartGroup,
|
|
54
|
+
ChartVoronoiContainer,
|
|
55
|
+
ChartStack,
|
|
56
|
+
ChartBar,
|
|
57
|
+
ChartTooltip,
|
|
58
|
+
ChartDonutThreshold,
|
|
59
|
+
ChartDonutUtilization,
|
|
60
|
+
ChartArea,
|
|
61
|
+
ChartContainer,
|
|
62
|
+
ChartLabel,
|
|
63
|
+
chart_color_gold_100,
|
|
64
|
+
chart_color_gold_300,
|
|
65
|
+
chart_color_orange_300,
|
|
66
|
+
chart_color_red_100
|
|
42
67
|
};
|
|
43
68
|
pageData.examples = {
|
|
44
69
|
'Horizontal card grid': props =>
|
|
@@ -64,6 +89,22 @@ pageData.examples = {
|
|
|
64
89
|
'Status Tabbed': props =>
|
|
65
90
|
<Example {...pageData} {...props} {...{"code":"import * as React from 'react';\nimport {\n Card,\n CardBody,\n CardHeader,\n DescriptionList,\n DescriptionListDescription,\n DescriptionListGroup,\n DescriptionListTerm,\n Flex,\n FlexItem,\n Grid,\n GridItem,\n Spinner,\n Tab,\n TabContent,\n Tabs,\n TabTitleText,\n Title\n} from '@patternfly/react-core';\nimport CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';\nimport ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';\n\nconst descriptionListData = [\n {\n status: 'Running',\n resourceName: 'Resource name that is long and can wrap',\n detail: '121 Systems',\n icon: <CheckCircleIcon />\n },\n {\n status: 'Ready',\n resourceName: 'Resource name that is long and can wrap',\n detail: '123 Systems',\n icon: <ExclamationCircleIcon />\n },\n {\n status: 'Running',\n resourceName: 'Resource name that is long and can wrap',\n detail: '122 Systems',\n icon: <CheckCircleIcon />\n },\n {\n status: 'Ready',\n resourceName: 'Resource name that is long and can wrap',\n detail: '124 Systems',\n icon: <ExclamationCircleIcon />\n }\n];\n\nconst Status: React.FunctionComponent = () => {\n const [activeTabKey, setActiveTabKey] = React.useState(0);\n const handleTabClick = (event: React.MouseEvent, tabIndex: number) => {\n setActiveTabKey(tabIndex);\n };\n\n const tabContent = (\n <DescriptionList isHorizontal columnModifier={{ lg: '2Col' }}>\n {descriptionListData.map(({ status, resourceName, detail, icon }, index) => (\n <DescriptionListGroup key={index}>\n <DescriptionListTerm>\n <Flex>\n <FlexItem>{icon}</FlexItem>\n <FlexItem>\n <Title headingLevel=\"h3\" size=\"md\">\n {status}\n </Title>\n </FlexItem>\n </Flex>\n </DescriptionListTerm>\n <DescriptionListDescription>\n <a href=\"#\">{resourceName}</a>\n <div>{detail}</div>\n </DescriptionListDescription>\n </DescriptionListGroup>\n ))}\n </DescriptionList>\n );\n\n return (\n <>\n <Card>\n <CardHeader>\n <Title headingLevel=\"h2\" size=\"lg\">\n Status\n </Title>\n </CardHeader>\n <CardBody>\n <Tabs isFilled id=\"status-tabs\" activeKey={activeTabKey} onSelect={handleTabClick}>\n {[1, 2, 3].map((tab, tabIndex) => (\n <Tab\n key={tabIndex}\n eventKey={tabIndex}\n title={<TabTitleText>{`Object ${tabIndex + 1}`}</TabTitleText>}\n tabContentId={`tabContent${tabIndex}`}\n />\n ))}\n </Tabs>\n </CardBody>\n <CardBody>\n {[1, 2, 3].map((tab, tabIndex) => (\n <TabContent\n key={tabIndex}\n eventKey={tabIndex}\n id={`tabContent${tabIndex}`}\n activeKey={activeTabKey}\n hidden={tabIndex !== activeTabKey}\n >\n {tabContent}\n </TabContent>\n ))}\n </CardBody>\n </Card>\n </>\n );\n};","title":"Status Tabbed","lang":"ts"}}>
|
|
66
91
|
|
|
92
|
+
</Example>,
|
|
93
|
+
'Utilization card 1': props =>
|
|
94
|
+
<Example {...pageData} {...props} {...{"code":"import React from 'react';\nimport {\n Card,\n CardTitle,\n CardBody,\n CardFooter,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem,\n Stack,\n StackItem,\n Divider\n} from '@patternfly/react-core';\nimport { ChartArea, ChartContainer, ChartGroup, ChartLabel, ChartVoronoiContainer } from '@patternfly/react-charts';\n\nconst UtilizationCard1 = () => (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-1\" component=\"div\">\n <CardTitle>\n <Title headingLevel=\"h2\" size=\"lg\">\n Top Utilized Clusters\n </Title>\n </CardTitle>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <b>Cluster-1204</b>\n <span>27.3 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n <FlexItem>\n <a href=\"#\">View details</a>\n </FlexItem>\n </Flex>\n </CardBody>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <b>Abcdef-1204</b>\n <span>50.6 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n <FlexItem>\n <a href=\"#\">View details</a>\n </FlexItem>\n </Flex>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View all clusters</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n)","title":"Utilization card 1","lang":"ts"}}>
|
|
95
|
+
|
|
96
|
+
</Example>,
|
|
97
|
+
'Utilization card 2': props =>
|
|
98
|
+
<Example {...pageData} {...props} {...{"code":"import React from 'react';\nimport {\n Card,\n CardTitle,\n CardBody,\n CardFooter,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem,\n Stack,\n StackItem,\n Divider\n} from '@patternfly/react-core';\nimport { ChartArea, ChartContainer, ChartGroup, ChartLabel, ChartVoronoiContainer } from '@patternfly/react-charts';\n\nconst UtilizationCard2 = () => (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-2\" component=\"div\">\n <CardTitle>\n <Title headingLevel=\"h2\" size=\"lg\">\n Top Utilized Clusters\n </Title>\n </CardTitle>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <a href=\"#\">Cluster-1204</a>\n <span>27.3 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n </Flex>\n </CardBody>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <Stack>\n <a href=\"#\">Abcdef-1204</a>\n <span>50.6 cores available</span>\n </Stack>\n </FlexItem>\n <FlexItem>\n <ChartGroup\n ariaDesc=\"Mock average cluster utilization\"\n ariaTitle=\"Mock cluster sparkline chart\"\n containerComponent={\n <ChartVoronoiContainer labels={({ datum }) => `${datum.name}: ${datum.y}`} constrainToVisibleArea />\n }\n height={100}\n maxDomain={{ y: 9 }}\n padding={0}\n width={400}\n >\n <ChartArea\n data={[\n { name: 'Cluster', x: '2015', y: 7 },\n { name: 'Cluster', x: '2016', y: 6 },\n { name: 'Cluster', x: '2017', y: 8 },\n { name: 'Cluster', x: '2018', y: 3 },\n { name: 'Cluster', x: '2019', y: 4 },\n { name: 'Cluster', x: '2020', y: 1 },\n { name: 'Cluster', x: '2021', y: 0 }\n ]}\n />\n </ChartGroup>\n </FlexItem>\n </Flex>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View all clusters</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n)","title":"Utilization card 2","lang":"ts"}}>
|
|
99
|
+
|
|
100
|
+
</Example>,
|
|
101
|
+
'Utilization card 3': props =>
|
|
102
|
+
<Example {...pageData} {...props} {...{"code":"import React from 'react';\nimport {\n Card,\n CardTitle,\n CardHeader,\n CardActions,\n CardBody,\n CardFooter,\n Title,\n Gallery,\n GalleryItem,\n Flex,\n FlexItem,\n Stack,\n StackItem,\n Divider,\n Dropdown,\n DropdownItem,\n DropdownToggle,\n DropdownSeparator\n} from '@patternfly/react-core';\nimport ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';\nimport { Chart, ChartStack, ChartBar, ChartTooltip } from '@patternfly/react-charts';\nimport chart_color_gold_100 from '@patternfly/react-tokens/dist/esm/chart_color_gold_100';\nimport chart_color_gold_300 from '@patternfly/react-tokens/dist/esm/chart_color_gold_300';\nimport chart_color_orange_300 from '@patternfly/react-tokens/dist/esm/chart_color_orange_300';\nimport chart_color_red_100 from '@patternfly/react-tokens/dist/esm/chart_color_red_100';\n\nconst UtilizationCard3: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = React.useState(false);\n\n const dropdownItems = [\n <DropdownItem key=\"link\">Link</DropdownItem>,\n <DropdownItem key=\"action\" component=\"button\">\n Action\n </DropdownItem>,\n <DropdownItem key=\"disabled link\" isDisabled href=\"www.google.com\">\n Disabled link\n </DropdownItem>,\n <DropdownSeparator key=\"separator\" />,\n <DropdownItem key=\"separated link\">Separated link</DropdownItem>\n ];\n\n return (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-1\" component=\"div\">\n <CardHeader>\n <CardTitle>\n <Title headingLevel=\"h2\" size=\"lg\">\n Recommendations\n </Title>\n </CardTitle>\n <CardActions>\n <Dropdown\n onSelect={() => setIsOpen(!isOpen)}\n toggle={<DropdownToggle onToggle={() => setIsOpen(!isOpen)}>Filter</DropdownToggle>}\n isOpen={isOpen}\n dropdownItems={dropdownItems}\n position=\"right\"\n />\n </CardActions>\n </CardHeader>\n <CardBody>\n <Flex direction={{ default: 'column' }}>\n <FlexItem>\n <span>System</span>\n </FlexItem>\n <Flex>\n <ExclamationCircleIcon className=\"pf-u-danger-color-100\" aria-hidden />\n <a href=\"#\">25 incidents detected</a>\n </Flex>\n <FlexItem>\n <Chart\n ariaDesc=\"Mock incidents chart\"\n ariaTitle=\"Mock stack chart\"\n domainPadding={{ x: [30, 25] }}\n legendData={[\n { name: 'Low', symbol: { fill: chart_color_gold_100.value } },\n { name: 'Important', symbol: { fill: chart_color_gold_300.value } },\n { name: 'Moderate', symbol: { fill: chart_color_orange_300.value } },\n { name: 'Critical', symbol: { fill: chart_color_red_100.value } }\n ]}\n legendPosition=\"bottom-left\"\n height={50}\n padding={{\n bottom: 40,\n left: 0,\n right: 0,\n top: 0\n }}\n width={350}\n showAxis={false}\n >\n <ChartStack\n horizontal\n colorScale={[\n chart_color_gold_100.value,\n chart_color_gold_300.value,\n chart_color_orange_300.value,\n chart_color_red_100.value\n ]}\n >\n <ChartBar\n data={[\n {\n name: 'Low',\n x: 'Cluster A',\n y: 6,\n label: 'Low: 6'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n <ChartBar\n data={[\n {\n name: 'Important',\n x: 'Cluster A',\n y: 2,\n label: 'Important: 2'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n <ChartBar\n data={[\n {\n name: 'Moderate',\n x: 'Cluster A',\n y: 4,\n label: 'Moderate: 4'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n <ChartBar\n data={[\n {\n name: 'Critical',\n x: 'Cluster A',\n y: 2,\n label: 'Critical: 2'\n }\n ]}\n labelComponent={<ChartTooltip constrainToVisibleArea />}\n />\n </ChartStack>\n </Chart>\n </FlexItem>\n </Flex>\n </CardBody>\n <CardFooter>\n <a href=\"#\">See details</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n );\n};","title":"Utilization card 3","lang":"ts"}}>
|
|
103
|
+
|
|
104
|
+
</Example>,
|
|
105
|
+
'Utilization card 4': props =>
|
|
106
|
+
<Example {...pageData} {...props} {...{"code":"import React from 'react';\nimport { Card, CardTitle, CardBody, CardFooter, Title, Gallery, GalleryItem } from '@patternfly/react-core';\nimport { ChartDonutThreshold, ChartDonutUtilization } from '@patternfly/react-charts';\n\nconst UtilizationCard4 = () => (\n <Gallery hasGutter minWidths={{ default: '360px' }}>\n <GalleryItem>\n <Card id=\"utilization-card-1\" component=\"div\">\n <CardTitle>\n <Title headingLevel=\"h2\" size=\"lg\">\n CPU Usage\n </Title>\n </CardTitle>\n <CardBody>\n <ChartDonutThreshold\n ariaDesc=\"Mock storage capacity\"\n ariaTitle=\"Mock donut utilization chart\"\n constrainToVisibleArea={true}\n data={[\n { x: 'Warning at 60%', y: 60 },\n { x: 'Danger at 90%', y: 90 }\n ]}\n height={200}\n labels={({ datum }) => (datum.x ? datum.x : null)}\n padding={{\n bottom: 0,\n left: 10,\n right: 150,\n top: 0\n }}\n width={350}\n >\n <ChartDonutUtilization\n data={{ x: 'Storage capacity', y: 80 }}\n labels={({ datum }) => (datum.x ? `${datum.x}: ${datum.y}%` : null)}\n legendData={[{ name: `Capacity: 80%` }, { name: 'Warning at 60%' }, { name: 'Danger at 90%' }]}\n legendOrientation=\"vertical\"\n title=\"80%\"\n subTitle=\"of 100 GBps\"\n thresholds={[{ value: 60 }, { value: 90 }]}\n />\n </ChartDonutThreshold>{' '}\n </CardBody>\n <CardFooter>\n <a href=\"#\">See details</a>\n </CardFooter>\n </Card>\n </GalleryItem>\n </Gallery>\n)","title":"Utilization card 4","lang":"ts"}}>
|
|
107
|
+
|
|
67
108
|
</Example>,
|
|
68
109
|
'Log view': props =>
|
|
69
110
|
<Example {...pageData} {...props} {...{"code":"import React from 'react';\nimport {\n Card,\n CardHeader,\n CardActions,\n CardTitle,\n CardBody,\n CardFooter,\n Gallery,\n Title,\n DescriptionList,\n DescriptionListGroup,\n DescriptionListTerm,\n DescriptionListDescription,\n Dropdown,\n DropdownItem,\n DropdownToggle,\n Divider\n} from '@patternfly/react-core';\n\nCardLogViewDemo = () => {\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n\n const onActionSelect = event => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const onActionToggle = isOpen => {\n setIsDropdownOpen(isOpen);\n };\n\n const dropdownItems = [\n <DropdownItem key=\"action1\" component=\"a\">\n Link\n </DropdownItem>,\n <DropdownItem key=\"action2\" component=\"button\">\n Action\n </DropdownItem>,\n <DropdownItem key=\"disabled action3\" isDisabled component=\"a\">\n Disabled link\n </DropdownItem>,\n <DropdownItem key=\"action4\" component=\"button\">\n Disabled action\n </DropdownItem>,\n <DropdownItem key=\"action5\" component=\"a\">\n Separated link\n </DropdownItem>\n ];\n\n return (\n <Gallery hasGutter style={{ '--pf-l-gallery--GridTemplateColumns--min': '360px' }}>\n <Card id=\"card-log-view-example\">\n <CardHeader>\n <CardActions>\n <Dropdown\n onSelect={onActionSelect}\n toggle={<DropdownToggle onToggle={onActionToggle}>Most recent</DropdownToggle>}\n isOpen={isDropdownOpen}\n dropdownItems={dropdownItems}\n position=\"right\"\n />\n </CardActions>\n <CardTitle>\n <Title headingLevel=\"h2\" size=\"xl\">\n Activity\n </Title>\n </CardTitle>\n </CardHeader>\n <CardBody>\n <DescriptionList>\n <DescriptionListGroup>\n <DescriptionListTerm>Readiness probe failed</DescriptionListTerm>\n <DescriptionListDescription>\n Readiness probe failed: Get https://10.131.0.7:5000/healthz: dial tcp 10.131.0.7:5000: connect:\n connection refused\n </DescriptionListDescription>\n <DescriptionListDescription>\n <date className=\"pf-u-color-200 pf-u-font-size-sm\">Jun 17, 11:02 am</date>\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Successful assignment</DescriptionListTerm>\n <DescriptionListDescription>\n Successfully assigned default/example to ip-10-0-130-149.ec2.internal\n </DescriptionListDescription>\n <DescriptionListDescription>\n <date className=\"pf-u-color-200 pf-u-font-size-sm\">Jun 17, 11:13 am</date>\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Pulling image</DescriptionListTerm>\n <DescriptionListDescription>Pulling image \"openshift/hello-openshift\"</DescriptionListDescription>\n <DescriptionListDescription>\n <date className=\"pf-u-color-200 pf-u-font-size-sm\">Jun 17, 10:59 am</date>\n </DescriptionListDescription>\n </DescriptionListGroup>\n <DescriptionListGroup>\n <DescriptionListTerm>Created container</DescriptionListTerm>\n <DescriptionListDescription>Created container hello-openshift</DescriptionListDescription>\n <DescriptionListDescription>\n <date className=\"pf-u-color-200 pf-u-font-size-sm\">Jun 17, 10:45 am</date>\n </DescriptionListDescription>\n </DescriptionListGroup>\n </DescriptionList>\n </CardBody>\n <Divider />\n <CardFooter>\n <a href=\"#\">View all activity</a>\n </CardFooter>\n </Card>\n </Gallery>\n );\n};","title":"Log view","lang":"js"}}>
|
|
@@ -86,6 +127,10 @@ const Component = () => (
|
|
|
86
127
|
{React.createElement(pageData.examples["Aggregate status card"])}
|
|
87
128
|
{React.createElement(pageData.examples["Status"])}
|
|
88
129
|
{React.createElement(pageData.examples["Status Tabbed"])}
|
|
130
|
+
{React.createElement(pageData.examples["Utilization card 1"])}
|
|
131
|
+
{React.createElement(pageData.examples["Utilization card 2"])}
|
|
132
|
+
{React.createElement(pageData.examples["Utilization card 3"])}
|
|
133
|
+
{React.createElement(pageData.examples["Utilization card 4"])}
|
|
89
134
|
{React.createElement(pageData.examples["Log view"])}
|
|
90
135
|
{React.createElement(pageData.examples["Event view"])}
|
|
91
136
|
</React.Fragment>
|
|
@@ -313,7 +313,6 @@ const pageData = {
|
|
|
313
313
|
"Inline panel on right",
|
|
314
314
|
"Inline panel on left",
|
|
315
315
|
"Stacked content body elements",
|
|
316
|
-
"Stacked content body elements",
|
|
317
316
|
"Modified content padding",
|
|
318
317
|
"Modified panel padding",
|
|
319
318
|
"Additional section above drawer content",
|
|
@@ -441,7 +440,6 @@ const Component = () => (
|
|
|
441
440
|
{React.createElement(pageData.examples["Inline panel on right"])}
|
|
442
441
|
{React.createElement(pageData.examples["Inline panel on left"])}
|
|
443
442
|
{React.createElement(pageData.examples["Stacked content body elements"])}
|
|
444
|
-
{React.createElement(pageData.examples["Stacked content body elements"])}
|
|
445
443
|
{React.createElement(pageData.examples["Modified content padding"])}
|
|
446
444
|
{React.createElement(pageData.examples["Modified panel padding"])}
|
|
447
445
|
{React.createElement(pageData.examples["Additional section above drawer content"])}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/generated/components/navigation/react-demos/horizontal-nav-with-horizontal-subnav.png
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -4,15 +4,19 @@ import { css } from '@patternfly/react-styles';
|
|
|
4
4
|
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
5
5
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
6
6
|
import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
|
|
7
|
-
import imgBrand from '@patternfly/react-core/src/
|
|
7
|
+
import imgBrand from '@patternfly/react-core/src/demos/examples/pfColorLogo.svg';
|
|
8
8
|
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
|
|
9
|
+
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
10
|
+
import AttentionBellIcon from '@patternfly/react-icons/dist/esm/icons/attention-bell-icon';
|
|
9
11
|
import srcImportdefaultnav from './react-demos/default-nav.png';
|
|
10
12
|
import srcImportexpandablenav from './react-demos/expandable-nav.png';
|
|
11
13
|
import srcImportgroupednav from './react-demos/grouped-nav.png';
|
|
12
14
|
import srcImporthorizontalnav from './react-demos/horizontal-nav.png';
|
|
13
15
|
import srcImportlegacylightnav from './react-demos/legacylight-nav.png';
|
|
14
16
|
import srcImportmanualnav from './react-demos/manual-nav.png';
|
|
17
|
+
import srcImportstickysectiongroupalternatesyntaxandusingpageheader from './react-demos/sticky-section-group-alternate-syntax-and-using-pageheader.png';
|
|
15
18
|
import srcImportstickysectiongroupalternatesyntax from './react-demos/sticky-section-group-alternate-syntax.png';
|
|
19
|
+
import srcImportstickysectiongroupusingpageheader from './react-demos/sticky-section-group-using-pageheader.png';
|
|
16
20
|
import srcImportstickysectiongroup from './react-demos/sticky-section-group.png';
|
|
17
21
|
import srcImporttertiarynav from './react-demos/tertiary-nav.png';
|
|
18
22
|
const pageData = {
|
|
@@ -23,7 +27,8 @@ const pageData = {
|
|
|
23
27
|
"sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/demos/Page/Page.md",
|
|
24
28
|
"fullscreenExamples": [
|
|
25
29
|
"Sticky section group",
|
|
26
|
-
"Sticky section group (
|
|
30
|
+
"Sticky section group (using PageHeader)",
|
|
31
|
+
"Sticky section group (alternate syntax and using PageHeader)"
|
|
27
32
|
]
|
|
28
33
|
};
|
|
29
34
|
pageData.liveContext = {
|
|
@@ -32,16 +37,30 @@ pageData.liveContext = {
|
|
|
32
37
|
CogIcon,
|
|
33
38
|
HelpIcon,
|
|
34
39
|
imgBrand,
|
|
35
|
-
imgAvatar
|
|
40
|
+
imgAvatar,
|
|
41
|
+
BarsIcon,
|
|
42
|
+
AttentionBellIcon
|
|
36
43
|
};
|
|
37
44
|
pageData.examples = {
|
|
38
45
|
'Sticky section group': props =>
|
|
39
|
-
<Example {...pageData} {...props} thumbnail={srcImportstickysectiongroup} {...{"code":"import React from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Dropdown,\n DropdownGroup,\n DropdownToggle,\n DropdownItem,\n DropdownSeparator,\n Gallery,\n GalleryItem,\n KebabToggle,\n Nav,\n NavItem,\n NavList,\n Page,\n
|
|
46
|
+
<Example {...pageData} {...props} thumbnail={srcImportstickysectiongroup} {...{"code":"import React from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Divider,\n Dropdown,\n DropdownGroup,\n DropdownToggle,\n DropdownItem,\n DropdownSeparator,\n Gallery,\n GalleryItem,\n KebabToggle,\n Masthead,\n MastheadBrand,\n MastheadContent,\n MastheadMain,\n MastheadToggle,\n Nav,\n NavItem,\n NavList,\n Page,\n PageSection,\n PageSectionVariants,\n PageSidebar,\n PageToggleButton,\n SkipToContent,\n TextContent,\n Text,\n Toolbar,\n ToolbarContent,\n ToolbarGroup,\n ToolbarItem\n} from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';\nimport CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport AttentionBellIcon from '@patternfly/react-icons/dist/esm/icons/attention-bell-icon';\nimport BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';\nimport imgBrand from './imgBrand.svg';\nimport imgAvatar from './imgAvatar.svg';\n\nclass PageLayoutGrouped extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isDropdownOpen: false,\n isKebabDropdownOpen: false,\n isFullKebabDropdownOpen: false,\n activeItem: 0\n };\n this.onDropdownToggle = isDropdownOpen => {\n this.setState({\n isDropdownOpen\n });\n };\n\n this.onDropdownSelect = event => {\n this.setState({\n isDropdownOpen: !this.state.isDropdownOpen\n });\n };\n\n this.onKebabDropdownToggle = isKebabDropdownOpen => {\n this.setState({\n isKebabDropdownOpen\n });\n };\n\n this.onKebabDropdownSelect = event => {\n this.setState({\n isKebabDropdownOpen: !this.state.isKebabDropdownOpen\n });\n };\n\n this.onNavSelect = result => {\n this.setState({\n activeItem: result.itemId\n });\n };\n\n this.onFullKebabToggle = isFullKebabDropdownOpen => {\n this.setState({\n isFullKebabDropdownOpen\n });\n };\n\n this.onFullKebabSelect = () => {\n this.setState({\n isFullKebabDropdownOpen: !this.state.isFullKebabDropdownOpen\n });\n };\n }\n\n render() {\n const { isDropdownOpen, isKebabDropdownOpen, activeItem, isFullKebabDropdownOpen } = this.state;\n\n const PageNav = (\n <Nav variant=\"tertiary\" onSelect={this.onNavSelect} aria-label=\"Nav\">\n <NavList>\n <NavItem href=\"#\" itemId={0} isActive={activeItem === 0}>\n System panel\n </NavItem>\n <NavItem href=\"#\" itemId={1} isActive={activeItem === 1}>\n Policy\n </NavItem>\n <NavItem href=\"#\" itemId={2} isActive={activeItem === 2}>\n Authentication\n </NavItem>\n <NavItem href=\"#\" itemId={3} isActive={activeItem === 3}>\n Network services\n </NavItem>\n <NavItem href=\"#\" itemId={4} isActive={activeItem === 4}>\n Server\n </NavItem>\n </NavList>\n </Nav>\n );\n\n const kebabDropdownItems = [\n <DropdownItem>\n <CogIcon /> Settings\n </DropdownItem>,\n <DropdownItem>\n <HelpIcon /> Help\n </DropdownItem>\n ];\n\n const userDropdownItems = [\n <DropdownGroup key=\"group 2\">\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\" component=\"button\">\n User management\n </DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </DropdownGroup>\n ];\n\n const fullKebabItems = [\n <DropdownGroup key=\"group 2\">\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\" component=\"button\">\n User management\n </DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </DropdownGroup>,\n <Divider key=\"divider\" />,\n <DropdownItem key=\"kebab-1\">\n <CogIcon /> Settings\n </DropdownItem>,\n <DropdownItem key=\"kebab-2\">\n <HelpIcon /> Help\n </DropdownItem>\n ];\n\n const headerToolbar = (\n <Toolbar id=\"toolbar\" isFullHeight isStatic>\n <ToolbarContent>\n <ToolbarGroup\n variant=\"icon-button-group\"\n alignment={{ default: 'alignRight' }}\n spacer={{ default: 'spacerNone', md: 'spacerMd' }}\n >\n <ToolbarItem>\n <Button aria-label=\"Notifications\" variant={ButtonVariant.plain}>\n <AttentionBellIcon />\n </Button>\n </ToolbarItem>\n <ToolbarGroup variant=\"icon-button-group\" visibility={{ default: 'hidden', lg: 'visible' }}>\n <ToolbarItem>\n <Button aria-label=\"Settings actions\" variant={ButtonVariant.plain}>\n <CogIcon />\n </Button>\n </ToolbarItem>\n <ToolbarItem>\n <Button aria-label=\"Help actions\" variant={ButtonVariant.plain}>\n <HelpIcon />\n </Button>\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>\n <Dropdown\n isPlain\n position=\"right\"\n onSelect={this.onKebabDropdownSelect}\n toggle={<KebabToggle onToggle={this.onKebabDropdownToggle} />}\n isOpen={isKebabDropdownOpen}\n dropdownItems={kebabDropdownItems}\n />\n </ToolbarItem>\n <ToolbarItem visibility={{ default: 'visible', md: 'hidden', lg: 'hidden', xl: 'hidden', '2xl': 'hidden' }}>\n <Dropdown\n isPlain\n position=\"right\"\n onSelect={this.onFullKebabSelect}\n toggle={<KebabToggle onToggle={this.onFullKebabToggle} />}\n isOpen={isFullKebabDropdownOpen}\n dropdownItems={fullKebabItems}\n />\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>\n <Dropdown\n position=\"right\"\n onSelect={this.onDropdownSelect}\n isOpen={isDropdownOpen}\n toggle={\n <DropdownToggle icon={<Avatar src={imgAvatar} alt=\"Avatar\" />} onToggle={this.onDropdownToggle}>\n John Smith\n </DropdownToggle>\n }\n dropdownItems={userDropdownItems}\n />\n </ToolbarItem>\n </ToolbarContent>\n </Toolbar>\n );\n\n const Header = (\n <Masthead>\n <MastheadToggle>\n <PageToggleButton variant=\"plain\" aria-label=\"Global navigation\">\n <BarsIcon />\n </PageToggleButton>\n </MastheadToggle>\n <MastheadMain>\n <MastheadBrand>\n <Brand src={imgBrand} alt=\"Patternfly Logo\" />\n </MastheadBrand>\n </MastheadMain>\n <MastheadContent>{headerToolbar}</MastheadContent>\n </Masthead>\n );\n\n const pageId = 'main-content-page-layout-tertiary-nav';\n const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;\n\n const PageBreadcrumb = (\n <Breadcrumb>\n <BreadcrumbItem>Section home</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\" isActive>\n Section landing\n </BreadcrumbItem>\n </Breadcrumb>\n );\n\n return (\n <React.Fragment>\n <Page\n header={Header}\n breadcrumb={PageBreadcrumb}\n tertiaryNav={PageNav}\n isManagedSidebar\n isTertiaryNavWidthLimited\n isBreadcrumbWidthLimited\n skipToContent={PageSkipToContent}\n mainContainerId={pageId}\n isTertiaryNavGrouped\n isBreadcrumbGrouped\n additionalGroupedContent={\n <PageSection variant={PageSectionVariants.light}>\n <TextContent>\n <Text component=\"h1\">Main title</Text>\n <Text component=\"p\">\n Body text should be Overpass Regular at 16px. It should have leading of 24px because <br />\n of its relative line height of 1.5.\n </Text>\n </TextContent>\n </PageSection>\n }\n groupProps={{\n sticky: 'top'\n }}\n >\n <PageSection>\n <Gallery hasGutter>\n {Array.apply(0, Array(20)).map((x, i) => (\n <GalleryItem key={i}>\n <Card>\n <CardBody>This is a card</CardBody>\n </Card>\n </GalleryItem>\n ))}\n </Gallery>\n </PageSection>\n </Page>\n </React.Fragment>\n );\n }\n}","title":"Sticky section group","lang":"js","isFullscreen":true}}>
|
|
40
47
|
|
|
41
48
|
</Example>,
|
|
42
|
-
'Sticky section group (
|
|
43
|
-
<Example {...pageData} {...props} thumbnail={
|
|
49
|
+
'Sticky section group (using PageHeader)': props =>
|
|
50
|
+
<Example {...pageData} {...props} thumbnail={srcImportstickysectiongroupusingpageheader} {...{"code":"import React from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Dropdown,\n DropdownGroup,\n DropdownToggle,\n DropdownItem,\n DropdownSeparator,\n Gallery,\n GalleryItem,\n KebabToggle,\n Nav,\n NavItem,\n NavList,\n Page,\n PageHeader,\n PageSection,\n PageSectionVariants,\n PageSidebar,\n SkipToContent,\n TextContent,\n Text,\n PageHeaderTools,\n PageHeaderToolsGroup,\n PageHeaderToolsItem\n} from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';\nimport CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport imgBrand from './imgBrand.svg';\nimport imgAvatar from './imgAvatar.svg';\n\nclass PageLayoutGrouped extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isDropdownOpen: false,\n isKebabDropdownOpen: false,\n activeItem: 0\n };\n this.onDropdownToggle = isDropdownOpen => {\n this.setState({\n isDropdownOpen\n });\n };\n\n this.onDropdownSelect = event => {\n this.setState({\n isDropdownOpen: !this.state.isDropdownOpen\n });\n };\n\n this.onKebabDropdownToggle = isKebabDropdownOpen => {\n this.setState({\n isKebabDropdownOpen\n });\n };\n\n this.onKebabDropdownSelect = event => {\n this.setState({\n isKebabDropdownOpen: !this.state.isKebabDropdownOpen\n });\n };\n\n this.onNavSelect = result => {\n this.setState({\n activeItem: result.itemId\n });\n };\n }\n\n render() {\n const { isDropdownOpen, isKebabDropdownOpen, activeItem } = this.state;\n\n const PageNav = (\n <Nav variant=\"tertiary\" onSelect={this.onNavSelect} aria-label=\"Nav\">\n <NavList>\n <NavItem href=\"#\" itemId={0} isActive={activeItem === 0}>\n System panel\n </NavItem>\n <NavItem href=\"#\" itemId={1} isActive={activeItem === 1}>\n Policy\n </NavItem>\n <NavItem href=\"#\" itemId={2} isActive={activeItem === 2}>\n Authentication\n </NavItem>\n <NavItem href=\"#\" itemId={3} isActive={activeItem === 3}>\n Network services\n </NavItem>\n <NavItem href=\"#\" itemId={4} isActive={activeItem === 4}>\n Server\n </NavItem>\n </NavList>\n </Nav>\n );\n const kebabDropdownItems = [\n <DropdownItem>\n <CogIcon /> Settings\n </DropdownItem>,\n <DropdownItem>\n <HelpIcon /> Help\n </DropdownItem>\n ];\n const userDropdownItems = [\n <DropdownGroup key=\"group 2\">\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\" component=\"button\">\n User management\n </DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </DropdownGroup>\n ];\n const headerTools = (\n <PageHeaderTools>\n <PageHeaderToolsGroup\n visibility={{\n default: 'hidden',\n lg: 'visible'\n }} /** the settings and help icon buttons are only visible on desktop sizes and replaced by a kebab dropdown for other sizes */\n >\n <PageHeaderToolsItem>\n <Button aria-label=\"Settings actions\" variant={ButtonVariant.plain}>\n <CogIcon />\n </Button>\n </PageHeaderToolsItem>\n <PageHeaderToolsItem>\n <Button aria-label=\"Help actions\" variant={ButtonVariant.plain}>\n <HelpIcon />\n </Button>\n </PageHeaderToolsItem>\n </PageHeaderToolsGroup>\n <PageHeaderToolsGroup>\n <PageHeaderToolsItem\n visibility={{\n lg: 'hidden'\n }} /** this kebab dropdown replaces the icon buttons and is hidden for desktop sizes */\n >\n <Dropdown\n isPlain\n position=\"right\"\n onSelect={this.onKebabDropdownSelect}\n toggle={<KebabToggle onToggle={this.onKebabDropdownToggle} />}\n isOpen={isKebabDropdownOpen}\n dropdownItems={kebabDropdownItems}\n />\n </PageHeaderToolsItem>\n <PageHeaderToolsItem\n visibility={{ default: 'hidden', md: 'visible' }} /** this user dropdown is hidden on mobile sizes */\n >\n <Dropdown\n isPlain\n position=\"right\"\n onSelect={this.onDropdownSelect}\n isOpen={isDropdownOpen}\n toggle={<DropdownToggle onToggle={this.onDropdownToggle}>John Smith</DropdownToggle>}\n dropdownItems={userDropdownItems}\n />\n </PageHeaderToolsItem>\n </PageHeaderToolsGroup>\n <Avatar src={imgAvatar} alt=\"Avatar image\" />\n </PageHeaderTools>\n );\n\n const Header = (\n <PageHeader logo={<Brand src={imgBrand} alt=\"Patternfly Logo\" />} headerTools={headerTools} showNavToggle />\n );\n const pageId = 'main-content-page-layout-tertiary-nav';\n const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;\n\n const PageBreadcrumb = (\n <Breadcrumb>\n <BreadcrumbItem>Section home</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\" isActive>\n Section landing\n </BreadcrumbItem>\n </Breadcrumb>\n );\n\n return (\n <React.Fragment>\n <Page\n header={Header}\n breadcrumb={PageBreadcrumb}\n tertiaryNav={PageNav}\n isManagedSidebar\n isTertiaryNavWidthLimited\n isBreadcrumbWidthLimited\n skipToContent={PageSkipToContent}\n mainContainerId={pageId}\n isTertiaryNavGrouped\n isBreadcrumbGrouped\n additionalGroupedContent={\n <PageSection variant={PageSectionVariants.light}>\n <TextContent>\n <Text component=\"h1\">Main title</Text>\n <Text component=\"p\">\n Body text should be Overpass Regular at 16px. It should have leading of 24px because <br />\n of its relative line height of 1.5.\n </Text>\n </TextContent>\n </PageSection>\n }\n groupProps={{\n sticky: 'top'\n }}\n >\n <PageSection>\n <Gallery hasGutter>\n {Array.apply(0, Array(20)).map((x, i) => (\n <GalleryItem key={i}>\n <Card>\n <CardBody>This is a card</CardBody>\n </Card>\n </GalleryItem>\n ))}\n </Gallery>\n </PageSection>\n </Page>\n </React.Fragment>\n );\n }\n}","title":"Sticky section group (using PageHeader)","lang":"js","isFullscreen":true}}>
|
|
44
51
|
|
|
52
|
+
<p {...{"className":"ws-p"}}>
|
|
53
|
+
{`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.`}
|
|
54
|
+
</p>
|
|
55
|
+
</Example>,
|
|
56
|
+
'Sticky section group (alternate syntax and using PageHeader)': props =>
|
|
57
|
+
<Example {...pageData} {...props} thumbnail={srcImportstickysectiongroupalternatesyntaxandusingpageheader} {...{"code":"import React from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Dropdown,\n DropdownGroup,\n DropdownToggle,\n DropdownItem,\n DropdownSeparator,\n Gallery,\n GalleryItem,\n KebabToggle,\n Nav,\n NavItem,\n NavList,\n Page,\n PageHeader,\n PageSection,\n PageSectionVariants,\n PageSidebar,\n PageGroup,\n PageBreadcrumb,\n PageNavigation,\n SkipToContent,\n TextContent,\n Text,\n PageHeaderTools,\n PageHeaderToolsGroup,\n PageHeaderToolsItem\n} from '@patternfly/react-core';\nimport { css } from '@patternfly/react-styles';\nimport BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';\nimport CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport imgBrand from './imgBrand.svg';\nimport imgAvatar from './imgAvatar.svg';\n\nclass PageLayoutGroupedAlt extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isDropdownOpen: false,\n isKebabDropdownOpen: false,\n activeItem: 0\n };\n this.onDropdownToggle = isDropdownOpen => {\n this.setState({\n isDropdownOpen\n });\n };\n\n this.onDropdownSelect = event => {\n this.setState({\n isDropdownOpen: !this.state.isDropdownOpen\n });\n };\n\n this.onKebabDropdownToggle = isKebabDropdownOpen => {\n this.setState({\n isKebabDropdownOpen\n });\n };\n\n this.onKebabDropdownSelect = event => {\n this.setState({\n isKebabDropdownOpen: !this.state.isKebabDropdownOpen\n });\n };\n\n this.onNavSelect = result => {\n this.setState({\n activeItem: result.itemId\n });\n };\n }\n\n render() {\n const { isDropdownOpen, isKebabDropdownOpen, activeItem } = this.state;\n\n const kebabDropdownItems = [\n <DropdownItem>\n <CogIcon /> Settings\n </DropdownItem>,\n <DropdownItem>\n <HelpIcon /> Help\n </DropdownItem>\n ];\n const userDropdownItems = [\n <DropdownGroup key=\"group 2\">\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\" component=\"button\">\n User management\n </DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </DropdownGroup>\n ];\n const headerTools = (\n <PageHeaderTools>\n <PageHeaderToolsGroup\n visibility={{\n default: 'hidden',\n lg: 'visible'\n }} /** the settings and help icon buttons are only visible on desktop sizes and replaced by a kebab dropdown for other sizes */\n >\n <PageHeaderToolsItem>\n <Button aria-label=\"Settings actions\" variant={ButtonVariant.plain}>\n <CogIcon />\n </Button>\n </PageHeaderToolsItem>\n <PageHeaderToolsItem>\n <Button aria-label=\"Help actions\" variant={ButtonVariant.plain}>\n <HelpIcon />\n </Button>\n </PageHeaderToolsItem>\n </PageHeaderToolsGroup>\n <PageHeaderToolsGroup>\n <PageHeaderToolsItem\n visibility={{\n lg: 'hidden'\n }} /** this kebab dropdown replaces the icon buttons and is hidden for desktop sizes */\n >\n <Dropdown\n isPlain\n position=\"right\"\n onSelect={this.onKebabDropdownSelect}\n toggle={<KebabToggle onToggle={this.onKebabDropdownToggle} />}\n isOpen={isKebabDropdownOpen}\n dropdownItems={kebabDropdownItems}\n />\n </PageHeaderToolsItem>\n <PageHeaderToolsItem\n visibility={{ default: 'hidden', md: 'visible' }} /** this user dropdown is hidden on mobile sizes */\n >\n <Dropdown\n isPlain\n position=\"right\"\n onSelect={this.onDropdownSelect}\n isOpen={isDropdownOpen}\n toggle={<DropdownToggle onToggle={this.onDropdownToggle}>John Smith</DropdownToggle>}\n dropdownItems={userDropdownItems}\n />\n </PageHeaderToolsItem>\n </PageHeaderToolsGroup>\n <Avatar src={imgAvatar} alt=\"Avatar image\" />\n </PageHeaderTools>\n );\n\n const Header = (\n <PageHeader logo={<Brand src={imgBrand} alt=\"Patternfly Logo\" />} headerTools={headerTools} showNavToggle />\n );\n const pageId = 'main-content-page-layout-tertiary-nav';\n const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;\n\n return (\n <React.Fragment>\n <Page header={Header} isManagedSidebar skipToContent={PageSkipToContent} mainContainerId={pageId}>\n <PageGroup sticky=\"top\">\n <PageNavigation isWidthLimited>\n <Nav variant=\"tertiary\" onSelect={this.onNavSelect} aria-label=\"Nav\">\n <NavList>\n <NavItem href=\"#\" itemId={0} isActive={activeItem === 0}>\n System panel\n </NavItem>\n <NavItem href=\"#\" itemId={1} isActive={activeItem === 1}>\n Policy\n </NavItem>\n <NavItem href=\"#\" itemId={2} isActive={activeItem === 2}>\n Authentication\n </NavItem>\n <NavItem href=\"#\" itemId={3} isActive={activeItem === 3}>\n Network services\n </NavItem>\n <NavItem href=\"#\" itemId={4} isActive={activeItem === 4}>\n Server\n </NavItem>\n </NavList>\n </Nav>\n </PageNavigation>\n <PageBreadcrumb>\n <Breadcrumb>\n <BreadcrumbItem>Section home</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\" isActive>\n Section landing\n </BreadcrumbItem>\n </Breadcrumb>\n </PageBreadcrumb>\n <PageSection variant={PageSectionVariants.light}>\n <TextContent>\n <Text component=\"h1\">Main title</Text>\n <Text component=\"p\">\n Body text should be Overpass Regular at 16px. It should have leading of 24px because <br />\n of its relative line height of 1.5.\n </Text>\n </TextContent>\n </PageSection>{' '}\n </PageGroup>\n <PageSection>\n <Gallery hasGutter>\n {Array.apply(0, Array(20)).map((x, i) => (\n <GalleryItem key={i}>\n <Card>\n <CardBody>This is a card</CardBody>\n </Card>\n </GalleryItem>\n ))}\n </Gallery>\n </PageSection>\n </Page>\n </React.Fragment>\n );\n }\n}","title":"Sticky section group (alternate syntax and using PageHeader)","lang":"js","isFullscreen":true}}>
|
|
58
|
+
|
|
59
|
+
<p {...{"className":"ws-p"}}>
|
|
60
|
+
{`Please see `}
|
|
61
|
+
<a href="#sticky-section-group-using-pageheader">{`this`}</a>
|
|
62
|
+
{` note regarding PageHeader.`}
|
|
63
|
+
</p>
|
|
45
64
|
</Example>
|
|
46
65
|
};
|
|
47
66
|
|
|
@@ -88,7 +107,8 @@ const Component = () => (
|
|
|
88
107
|
{`This demonstrates a variety of navigation patterns in the context of a full page layout. These can be used as a basis for choosing the most appropriate page template for your application.`}
|
|
89
108
|
</p>
|
|
90
109
|
{React.createElement(pageData.examples["Sticky section group"])}
|
|
91
|
-
{React.createElement(pageData.examples["Sticky section group (
|
|
110
|
+
{React.createElement(pageData.examples["Sticky section group (using PageHeader)"])}
|
|
111
|
+
{React.createElement(pageData.examples["Sticky section group (alternate syntax and using PageHeader)"])}
|
|
92
112
|
</React.Fragment>
|
|
93
113
|
);
|
|
94
114
|
Component.displayName = 'ComponentsPageReactDemosDocs';
|