@patternfly/react-core 6.6.1-prerelease.7 → 6.6.1-prerelease.9
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 +12 -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/Drawer/Drawer.d.ts +3 -0
- package/dist/esm/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/esm/components/Drawer/Drawer.js +4 -3
- package/dist/esm/components/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/Drawer/DrawerContent.d.ts +1 -1
- package/dist/esm/components/Drawer/DrawerContent.d.ts.map +1 -1
- package/dist/esm/components/Drawer/DrawerPanelContent.js +22 -25
- package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
- 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/Drawer/Drawer.d.ts +3 -0
- package/dist/js/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/js/components/Drawer/Drawer.js +4 -3
- package/dist/js/components/Drawer/Drawer.js.map +1 -1
- package/dist/js/components/Drawer/DrawerContent.d.ts +1 -1
- package/dist/js/components/Drawer/DrawerContent.d.ts.map +1 -1
- package/dist/js/components/Drawer/DrawerPanelContent.js +22 -25
- package/dist/js/components/Drawer/DrawerPanelContent.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-BGwwN1RO.css → output-B35Oc6dG.css} +15784 -15727
- 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/Drawer/Drawer.tsx +10 -2
- package/src/components/Drawer/DrawerContent.tsx +1 -1
- package/src/components/Drawer/DrawerPanelContent.tsx +25 -25
- package/src/components/Drawer/__tests__/Drawer.test.tsx +53 -0
- package/src/components/Drawer/examples/Drawer.md +1 -1
- 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 +24 -8
- package/src/components/Page/examples/PageCustomFooter.tsx +59 -0
- package/src/components/Page/examples/PageCustomHeader.tsx +17 -0
- package/src/components/Page/examples/PagePlain.tsx +9 -0
- package/src/components/Page/index.ts +1 -0
- package/src/demos/CardView/CardView.md +1 -1
- package/src/demos/CardView/examples/CardView.tsx +1 -1
- package/src/demos/Drawer/Drawer.md +16 -0
- package/src/demos/Drawer/examples/DrawerViewport.tsx +112 -0
- package/src/demos/Page.md +24 -11
- package/src/demos/examples/Page/PagePlain.tsx +342 -0
- package/src/components/Page/examples/PageHeaderContent.tsx +0 -19
- package/src/demos/examples/Page/PageStickySectionGroupUsingPageHeader.tsx +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Fragment, useRef, useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Backdrop,
|
|
4
|
+
Button,
|
|
5
|
+
Drawer,
|
|
6
|
+
DrawerActions,
|
|
7
|
+
DrawerCloseButton,
|
|
8
|
+
DrawerContent,
|
|
9
|
+
DrawerHead,
|
|
10
|
+
DrawerPanelContent,
|
|
11
|
+
Masthead,
|
|
12
|
+
MastheadBrand,
|
|
13
|
+
MastheadContent,
|
|
14
|
+
MastheadLogo,
|
|
15
|
+
MastheadMain,
|
|
16
|
+
MastheadToggle,
|
|
17
|
+
Page,
|
|
18
|
+
PageSection,
|
|
19
|
+
PageSidebar,
|
|
20
|
+
PageSidebarBody,
|
|
21
|
+
PageToggleButton,
|
|
22
|
+
Toolbar,
|
|
23
|
+
ToolbarContent,
|
|
24
|
+
ToolbarItem
|
|
25
|
+
} from '@patternfly/react-core';
|
|
26
|
+
|
|
27
|
+
export const DrawerViewport: React.FunctionComponent = () => {
|
|
28
|
+
const [isExpanded, setIsExpanded] = useState(true);
|
|
29
|
+
const drawerRef = useRef<HTMLSpanElement>(null);
|
|
30
|
+
|
|
31
|
+
const onExpand = () => {
|
|
32
|
+
drawerRef.current && drawerRef.current.focus();
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const onClick = () => {
|
|
36
|
+
setIsExpanded(!isExpanded);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const onCloseClick = () => {
|
|
40
|
+
setIsExpanded(false);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const onResize = (_event: MouseEvent | TouchEvent | React.KeyboardEvent, newWidth: number, id: string) => {
|
|
44
|
+
// eslint-disable-next-line no-console
|
|
45
|
+
console.log(`${id} has new width of: ${newWidth}`);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const headerToolbar = (
|
|
49
|
+
<Toolbar id="viewport-drawer-toolbar">
|
|
50
|
+
<ToolbarContent>
|
|
51
|
+
<ToolbarItem>
|
|
52
|
+
<Button aria-expanded={isExpanded} onClick={onClick}>
|
|
53
|
+
Toggle drawer
|
|
54
|
+
</Button>
|
|
55
|
+
</ToolbarItem>
|
|
56
|
+
</ToolbarContent>
|
|
57
|
+
</Toolbar>
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const masthead = (
|
|
61
|
+
<Masthead>
|
|
62
|
+
<MastheadMain>
|
|
63
|
+
<MastheadToggle>
|
|
64
|
+
<PageToggleButton isHamburgerButton aria-label="Global navigation" id="viewport-drawer-nav-toggle" />
|
|
65
|
+
</MastheadToggle>
|
|
66
|
+
<MastheadBrand>
|
|
67
|
+
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
68
|
+
Logo
|
|
69
|
+
</MastheadLogo>
|
|
70
|
+
</MastheadBrand>
|
|
71
|
+
</MastheadMain>
|
|
72
|
+
<MastheadContent>{headerToolbar}</MastheadContent>
|
|
73
|
+
</Masthead>
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
const sidebar = (
|
|
77
|
+
<PageSidebar id="viewport-drawer-sidebar">
|
|
78
|
+
<PageSidebarBody>Navigation</PageSidebarBody>
|
|
79
|
+
</PageSidebar>
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const panelContent = (
|
|
83
|
+
<DrawerPanelContent isResizable onResize={onResize} id="viewport-resize-panel" minSize="150px">
|
|
84
|
+
<DrawerHead>
|
|
85
|
+
<span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>
|
|
86
|
+
Drawer panel header
|
|
87
|
+
</span>
|
|
88
|
+
<DrawerActions>
|
|
89
|
+
<DrawerCloseButton onClick={onCloseClick} />
|
|
90
|
+
</DrawerActions>
|
|
91
|
+
</DrawerHead>
|
|
92
|
+
</DrawerPanelContent>
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<Fragment>
|
|
97
|
+
<Page isManagedSidebar masthead={masthead} sidebar={sidebar}>
|
|
98
|
+
<PageSection aria-labelledby="viewport-drawer-section">
|
|
99
|
+
<h2 id="viewport-drawer-section">Viewport drawer example</h2>
|
|
100
|
+
<p>
|
|
101
|
+
The viewport drawer is a sibling of Page. DrawerContent is left empty so the panel overlays the page without
|
|
102
|
+
affecting page layout or scrolling.
|
|
103
|
+
</p>
|
|
104
|
+
</PageSection>
|
|
105
|
+
</Page>
|
|
106
|
+
{isExpanded && <Backdrop onClick={onCloseClick}></Backdrop>}
|
|
107
|
+
<Drawer isExpanded={isExpanded} isViewport onExpand={onExpand}>
|
|
108
|
+
<DrawerContent panelContent={panelContent} />
|
|
109
|
+
</Drawer>
|
|
110
|
+
</Fragment>
|
|
111
|
+
);
|
|
112
|
+
};
|
package/src/demos/Page.md
CHANGED
|
@@ -4,18 +4,25 @@ section: components
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
import { useState, useRef, useEffect } from 'react';
|
|
7
|
-
import RhUiNotificationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-notification-fill-icon';
|
|
8
|
-
import RhUiSettingsFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-settings-fill-icon';
|
|
9
|
-
import RhUiQuestionMarkCircleIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-icon';
|
|
10
|
-
import RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';
|
|
11
|
-
import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';
|
|
12
|
-
import RhUiMenuBarsIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-menu-bars-icon';
|
|
13
|
-
import LightbulbIcon from '@patternfly/react-icons/dist/esm/icons/lightbulb-icon';
|
|
14
7
|
import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
8
|
+
import RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon';
|
|
9
|
+
import RhUiTrashFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-trash-fill-icon';
|
|
10
|
+
import RhUiPortIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-port-icon';
|
|
11
|
+
import RhUiContainerIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-container-icon';
|
|
12
|
+
import RhUiAutomationIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-automation-icon';
|
|
13
|
+
import RhUiConnectedIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-connected-icon';
|
|
14
|
+
import RhUiArrowRightIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-arrow-right-icon';
|
|
15
|
+
import pfIcon from '@patternfly/react-core/src/demos/assets/PF-IconLogo.svg';
|
|
16
|
+
import activeMQIcon from '@patternfly/react-core/src/demos/assets/activemq-core_200x150.png';
|
|
17
|
+
import avroIcon from '@patternfly/react-core/src/demos/assets/camel-avro_200x150.png';
|
|
18
|
+
import dropBoxIcon from '@patternfly/react-core/src/demos/assets/camel-dropbox_200x150.png';
|
|
19
|
+
import infinispanIcon from '@patternfly/react-core/src/demos/assets/camel-infinispan_200x150.png';
|
|
20
|
+
import saxonIcon from '@patternfly/react-core/src/demos/assets/camel-saxon_200x150.png';
|
|
21
|
+
import sparkIcon from '@patternfly/react-core/src/demos/assets/camel-spark_200x150.png';
|
|
22
|
+
import swaggerIcon from '@patternfly/react-core/src/demos/assets/camel-swagger-java_200x150.png';
|
|
23
|
+
import azureIcon from '@patternfly/react-core/src/demos/assets/FuseConnector_Icons_AzureServices.png';
|
|
24
|
+
import restIcon from '@patternfly/react-core/src/demos/assets/FuseConnector_Icons_REST.png';
|
|
25
|
+
import { data } from '@patternfly/react-core/src/demos/CardView/examples/CardViewData.jsx';
|
|
19
26
|
|
|
20
27
|
- All examples set the `isManagedSidebar` prop on the Page component to have the sidebar automatically close for smaller screen widths. You can also manually control this behavior by not adding the `isManagedSidebar` prop and instead:
|
|
21
28
|
1. Add an onNavToggle callback to PageHeader
|
|
@@ -50,3 +57,9 @@ When adding a context selector/perspective switcher in a `PageSidebar`, you must
|
|
|
50
57
|
```ts file='./examples/Page/PageContextSelector.tsx' isFullscreen
|
|
51
58
|
|
|
52
59
|
```
|
|
60
|
+
|
|
61
|
+
### Plain
|
|
62
|
+
|
|
63
|
+
```ts file='./examples/Page/PagePlain.tsx' isFullscreen
|
|
64
|
+
|
|
65
|
+
```
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Bullseye,
|
|
4
|
+
Button,
|
|
5
|
+
ButtonVariant,
|
|
6
|
+
Card,
|
|
7
|
+
CardBody,
|
|
8
|
+
CardExpandableContent,
|
|
9
|
+
CardFooter,
|
|
10
|
+
CardHeader,
|
|
11
|
+
CardTitle,
|
|
12
|
+
Content,
|
|
13
|
+
Divider,
|
|
14
|
+
Dropdown,
|
|
15
|
+
DropdownItem,
|
|
16
|
+
DropdownList,
|
|
17
|
+
EmptyState,
|
|
18
|
+
EmptyStateActions,
|
|
19
|
+
EmptyStateFooter,
|
|
20
|
+
EmptyStateVariant,
|
|
21
|
+
Flex,
|
|
22
|
+
FlexItem,
|
|
23
|
+
Gallery,
|
|
24
|
+
GalleryItem,
|
|
25
|
+
Icon,
|
|
26
|
+
Label,
|
|
27
|
+
LabelColor,
|
|
28
|
+
LabelGroup,
|
|
29
|
+
LabelStatus,
|
|
30
|
+
MenuToggle,
|
|
31
|
+
MenuToggleElement,
|
|
32
|
+
Page,
|
|
33
|
+
PageBody,
|
|
34
|
+
PageFooter,
|
|
35
|
+
PageHeader,
|
|
36
|
+
PageSection,
|
|
37
|
+
Panel,
|
|
38
|
+
PanelMain,
|
|
39
|
+
PanelMainBody,
|
|
40
|
+
SkipToContent,
|
|
41
|
+
Title
|
|
42
|
+
} from '@patternfly/react-core';
|
|
43
|
+
import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';
|
|
44
|
+
import RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon';
|
|
45
|
+
import RhUiTrashFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-trash-fill-icon';
|
|
46
|
+
import RhUiPortIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-port-icon';
|
|
47
|
+
import RhUiContainerIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-container-icon';
|
|
48
|
+
import RhUiAutomationIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-automation-icon';
|
|
49
|
+
import RhUiConnectedIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-connected-icon';
|
|
50
|
+
import RhUiArrowRightIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-arrow-right-icon';
|
|
51
|
+
import pfIcon from '@patternfly/react-core/src/demos/assets/PF-IconLogo.svg';
|
|
52
|
+
import activeMQIcon from '@patternfly/react-core/src/demos/assets/activemq-core_200x150.png';
|
|
53
|
+
import avroIcon from '@patternfly/react-core/src/demos/assets/camel-avro_200x150.png';
|
|
54
|
+
import dropBoxIcon from '@patternfly/react-core/src/demos/assets/camel-dropbox_200x150.png';
|
|
55
|
+
import infinispanIcon from '@patternfly/react-core/src/demos/assets/camel-infinispan_200x150.png';
|
|
56
|
+
import saxonIcon from '@patternfly/react-core/src/demos/assets/camel-saxon_200x150.png';
|
|
57
|
+
import sparkIcon from '@patternfly/react-core/src/demos/assets/camel-spark_200x150.png';
|
|
58
|
+
import swaggerIcon from '@patternfly/react-core/src/demos/assets/camel-swagger-java_200x150.png';
|
|
59
|
+
import azureIcon from '@patternfly/react-core/src/demos/assets/FuseConnector_Icons_AzureServices.png';
|
|
60
|
+
import restIcon from '@patternfly/react-core/src/demos/assets/FuseConnector_Icons_REST.png';
|
|
61
|
+
import { data } from '@patternfly/react-core/src/demos/CardView/examples/CardViewData.jsx';
|
|
62
|
+
|
|
63
|
+
export const PagePlain: React.FunctionComponent = () => {
|
|
64
|
+
const [isPathwayExpanded, setIsPathwayExpanded] = useState(true);
|
|
65
|
+
const [isPathwayKebabOpen, setIsPathwayKebabOpen] = useState(false);
|
|
66
|
+
const [selectedItems, setSelectedItems] = useState<number[]>([]);
|
|
67
|
+
const [openCardMenu, setOpenCardMenu] = useState<number | null>(null);
|
|
68
|
+
const mainContainerId = 'main-content-page-demo-plain';
|
|
69
|
+
|
|
70
|
+
const icons = {
|
|
71
|
+
pfIcon,
|
|
72
|
+
activeMQIcon,
|
|
73
|
+
avroIcon,
|
|
74
|
+
dropBoxIcon,
|
|
75
|
+
infinispanIcon,
|
|
76
|
+
saxonIcon,
|
|
77
|
+
sparkIcon,
|
|
78
|
+
swaggerIcon,
|
|
79
|
+
azureIcon,
|
|
80
|
+
restIcon
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const cards = data.map((product) => (
|
|
84
|
+
<GalleryItem key={product.name} component="li">
|
|
85
|
+
<Card isCompact isGlass isClickable isSelectable isFullHeight id={product.name.replace(/ /g, '-')}>
|
|
86
|
+
<CardHeader
|
|
87
|
+
selectableActions={{
|
|
88
|
+
isChecked: selectedItems.includes(product.id),
|
|
89
|
+
selectableActionId: `page-demo-plain-selectable-${product.id}`,
|
|
90
|
+
selectableActionAriaLabelledby: `${product.name.replace(/ /g, '-')}-title`,
|
|
91
|
+
selectableActionProps: { isLabelWrapped: true },
|
|
92
|
+
name: `page-demo-plain-check-${product.id}`,
|
|
93
|
+
onChange: (_event, checked) => {
|
|
94
|
+
setSelectedItems((items) =>
|
|
95
|
+
checked ? [...items, product.id] : items.filter((item) => item !== product.id)
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
}}
|
|
99
|
+
actions={{
|
|
100
|
+
actions: (
|
|
101
|
+
<Dropdown
|
|
102
|
+
isOpen={openCardMenu === product.id}
|
|
103
|
+
onOpenChange={(isOpen) => setOpenCardMenu(isOpen ? product.id : null)}
|
|
104
|
+
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
|
105
|
+
<MenuToggle
|
|
106
|
+
ref={toggleRef}
|
|
107
|
+
aria-label={`${product.name} actions`}
|
|
108
|
+
variant="plain"
|
|
109
|
+
onClick={() => setOpenCardMenu(openCardMenu === product.id ? null : product.id)}
|
|
110
|
+
isExpanded={openCardMenu === product.id}
|
|
111
|
+
icon={<RhUiEllipsisVerticalFillIcon />}
|
|
112
|
+
/>
|
|
113
|
+
)}
|
|
114
|
+
>
|
|
115
|
+
<DropdownList>
|
|
116
|
+
<DropdownItem onClick={() => setOpenCardMenu(null)}>
|
|
117
|
+
<RhUiTrashFillIcon /> Delete
|
|
118
|
+
</DropdownItem>
|
|
119
|
+
</DropdownList>
|
|
120
|
+
</Dropdown>
|
|
121
|
+
)
|
|
122
|
+
}}
|
|
123
|
+
>
|
|
124
|
+
<img src={icons[product.icon]} alt="" style={{ maxWidth: '60px' }} />
|
|
125
|
+
</CardHeader>
|
|
126
|
+
<CardTitle>{product.name}</CardTitle>
|
|
127
|
+
<CardBody>{product.description}</CardBody>
|
|
128
|
+
</Card>
|
|
129
|
+
</GalleryItem>
|
|
130
|
+
));
|
|
131
|
+
|
|
132
|
+
const renderPathwayCard = (
|
|
133
|
+
category: React.ReactNode,
|
|
134
|
+
systems: number,
|
|
135
|
+
description: string,
|
|
136
|
+
rebootRequired: boolean,
|
|
137
|
+
hasIncident: boolean
|
|
138
|
+
) => (
|
|
139
|
+
<FlexItem flex={{ default: 'flex_1' }} alignSelf={{ default: 'alignSelfStretch' }}>
|
|
140
|
+
<Card isPlain isFullHeight>
|
|
141
|
+
<CardBody>
|
|
142
|
+
<Flex direction={{ default: 'column' }} spaceItems={{ default: 'spaceItemsSm' }} className="pf-v6-u-h-100">
|
|
143
|
+
<Flex
|
|
144
|
+
spaceItems={{ default: 'spaceItemsSm' }}
|
|
145
|
+
direction={{ md: 'column', lg: 'row' }}
|
|
146
|
+
spacer={{ md: 'spacerMd', lg: 'spacerSm' }}
|
|
147
|
+
>
|
|
148
|
+
{category}
|
|
149
|
+
<Button variant={ButtonVariant.link} isInline component="a" href="#">
|
|
150
|
+
{systems} systems
|
|
151
|
+
</Button>
|
|
152
|
+
</Flex>
|
|
153
|
+
<FlexItem spacer={{ default: 'spacerMd' }}>
|
|
154
|
+
<p>{description}</p>
|
|
155
|
+
</FlexItem>
|
|
156
|
+
<Flex
|
|
157
|
+
grow={{ default: 'grow' }}
|
|
158
|
+
direction={{ default: 'column', lg: 'row' }}
|
|
159
|
+
justifyContent={{ default: 'justifyContentFlexEnd', lg: 'justifyContentFlexStart' }}
|
|
160
|
+
alignContent={{ lg: 'alignContentFlexEnd' }}
|
|
161
|
+
rowGap={{ default: 'rowGapMd' }}
|
|
162
|
+
>
|
|
163
|
+
{hasIncident && (
|
|
164
|
+
<FlexItem style={{ marginBlockEnd: '-.25em' }}>
|
|
165
|
+
<Label status={LabelStatus.danger}>Incident</Label>
|
|
166
|
+
</FlexItem>
|
|
167
|
+
)}
|
|
168
|
+
<Flex
|
|
169
|
+
spaceItems={{ default: 'spaceItemsSm' }}
|
|
170
|
+
alignItems={{ default: 'alignItemsCenter' }}
|
|
171
|
+
flexWrap={{ default: 'nowrap' }}
|
|
172
|
+
rowGap={{ default: 'rowGapMd' }}
|
|
173
|
+
>
|
|
174
|
+
<Icon status={rebootRequired ? 'danger' : 'success'}>
|
|
175
|
+
<RhUiConnectedIcon />
|
|
176
|
+
</Icon>
|
|
177
|
+
<p className="pf-v6-u-color-200">
|
|
178
|
+
System reboot <b className="pf-v6-u-color-100">{rebootRequired ? 'is' : 'is not'}</b> required
|
|
179
|
+
</p>
|
|
180
|
+
</Flex>
|
|
181
|
+
</Flex>
|
|
182
|
+
</Flex>
|
|
183
|
+
</CardBody>
|
|
184
|
+
<CardFooter>
|
|
185
|
+
<Button
|
|
186
|
+
variant={ButtonVariant.link}
|
|
187
|
+
isInline
|
|
188
|
+
component="a"
|
|
189
|
+
href="#"
|
|
190
|
+
icon={<RhUiArrowRightIcon />}
|
|
191
|
+
iconPosition="end"
|
|
192
|
+
>
|
|
193
|
+
View pathway
|
|
194
|
+
</Button>
|
|
195
|
+
</CardFooter>
|
|
196
|
+
</Card>
|
|
197
|
+
</FlexItem>
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
const recommendedPathwaysCard = (
|
|
201
|
+
<Card isExpanded={isPathwayExpanded} isGlass>
|
|
202
|
+
<CardHeader
|
|
203
|
+
onExpand={() => setIsPathwayExpanded(!isPathwayExpanded)}
|
|
204
|
+
toggleButtonProps={{
|
|
205
|
+
id: 'page-demo-plain-expandable-status-card-1-toggle',
|
|
206
|
+
'aria-label': 'Details',
|
|
207
|
+
'aria-labelledby':
|
|
208
|
+
'page-demo-plain-expandable-status-card-1-title page-demo-plain-expandable-status-card-1-toggle',
|
|
209
|
+
'aria-expanded': isPathwayExpanded
|
|
210
|
+
}}
|
|
211
|
+
actions={{
|
|
212
|
+
actions: (
|
|
213
|
+
<Dropdown
|
|
214
|
+
isOpen={isPathwayKebabOpen}
|
|
215
|
+
onOpenChange={(isOpen) => setIsPathwayKebabOpen(isOpen)}
|
|
216
|
+
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
|
217
|
+
<MenuToggle
|
|
218
|
+
ref={toggleRef}
|
|
219
|
+
id="page-demo-plain-expandable-status-card-1-action-kebab"
|
|
220
|
+
aria-label="Menu toggle"
|
|
221
|
+
variant="plain"
|
|
222
|
+
onClick={() => setIsPathwayKebabOpen(!isPathwayKebabOpen)}
|
|
223
|
+
isExpanded={isPathwayKebabOpen}
|
|
224
|
+
icon={<RhUiEllipsisVerticalFillIcon />}
|
|
225
|
+
/>
|
|
226
|
+
)}
|
|
227
|
+
>
|
|
228
|
+
<DropdownList>
|
|
229
|
+
<DropdownItem onClick={() => setIsPathwayKebabOpen(false)}>Action</DropdownItem>
|
|
230
|
+
</DropdownList>
|
|
231
|
+
</Dropdown>
|
|
232
|
+
)
|
|
233
|
+
}}
|
|
234
|
+
>
|
|
235
|
+
<CardTitle id="page-demo-plain-expandable-status-card-1-title">
|
|
236
|
+
<Title headingLevel="h2" size="xl">
|
|
237
|
+
Improve recommended pathways
|
|
238
|
+
</Title>
|
|
239
|
+
</CardTitle>
|
|
240
|
+
</CardHeader>
|
|
241
|
+
<CardExpandableContent>
|
|
242
|
+
<Flex direction={{ default: 'column', md: 'row' }} alignItems={{ default: 'alignItemsStretch' }}>
|
|
243
|
+
{renderPathwayCard(
|
|
244
|
+
<LabelGroup aria-label="Group of labels">
|
|
245
|
+
<Label variant="outline" color={LabelColor.blue} icon={<RhUiPortIcon />}>
|
|
246
|
+
Performance
|
|
247
|
+
</Label>
|
|
248
|
+
</LabelGroup>,
|
|
249
|
+
378,
|
|
250
|
+
'Upgrade your kernel version to remediate ntpd time sync issues, kernel panics, network instabilities and issues with system performance',
|
|
251
|
+
true,
|
|
252
|
+
true
|
|
253
|
+
)}
|
|
254
|
+
<Divider orientation={{ md: 'vertical' }} inset={{ default: 'inset3xl' }} />
|
|
255
|
+
{renderPathwayCard(
|
|
256
|
+
<LabelGroup numLabels={1} aria-label="Group of labels">
|
|
257
|
+
<Label variant="outline" color={LabelColor.blue} icon={<RhUiContainerIcon />}>
|
|
258
|
+
Stability
|
|
259
|
+
</Label>
|
|
260
|
+
<Label variant="outline" color={LabelColor.blue}>
|
|
261
|
+
Availability
|
|
262
|
+
</Label>
|
|
263
|
+
</LabelGroup>,
|
|
264
|
+
211,
|
|
265
|
+
'Adjust your networking configuration to get ahead of network performance degradations and packet losses',
|
|
266
|
+
false,
|
|
267
|
+
false
|
|
268
|
+
)}
|
|
269
|
+
<Divider orientation={{ md: 'vertical' }} inset={{ default: 'inset3xl' }} />
|
|
270
|
+
{renderPathwayCard(
|
|
271
|
+
<LabelGroup aria-label="Group of labels">
|
|
272
|
+
<Label variant="outline" color={LabelColor.blue} icon={<RhUiAutomationIcon />}>
|
|
273
|
+
Availability
|
|
274
|
+
</Label>
|
|
275
|
+
</LabelGroup>,
|
|
276
|
+
166,
|
|
277
|
+
'Fine tune your Oracle DB configuration to improve database performance and avoid process failure',
|
|
278
|
+
true,
|
|
279
|
+
true
|
|
280
|
+
)}
|
|
281
|
+
</Flex>
|
|
282
|
+
</CardExpandableContent>
|
|
283
|
+
</Card>
|
|
284
|
+
);
|
|
285
|
+
|
|
286
|
+
const footer = (
|
|
287
|
+
<PageFooter>
|
|
288
|
+
<PageBody>custom footer</PageBody>
|
|
289
|
+
</PageFooter>
|
|
290
|
+
);
|
|
291
|
+
|
|
292
|
+
return (
|
|
293
|
+
<Page
|
|
294
|
+
id="page-demo-plain"
|
|
295
|
+
isPlain
|
|
296
|
+
masthead={<PageHeader>Custom header</PageHeader>}
|
|
297
|
+
skipToContent={<SkipToContent href={`#${mainContainerId}`}>Skip to content</SkipToContent>}
|
|
298
|
+
mainContainerId={mainContainerId}
|
|
299
|
+
footer={footer}
|
|
300
|
+
sidebar={null}
|
|
301
|
+
>
|
|
302
|
+
<PageSection isPlain padding={{ default: 'noPadding' }}>
|
|
303
|
+
<Panel isGlass variant="bordered">
|
|
304
|
+
<PanelMain>
|
|
305
|
+
<PanelMainBody>
|
|
306
|
+
<Content>
|
|
307
|
+
<h1>Page title</h1>
|
|
308
|
+
<p>This is a full page demo.</p>
|
|
309
|
+
</Content>
|
|
310
|
+
</PanelMainBody>
|
|
311
|
+
</PanelMain>
|
|
312
|
+
</Panel>
|
|
313
|
+
</PageSection>
|
|
314
|
+
<PageSection isPlain padding={{ default: 'noPadding' }}>
|
|
315
|
+
{recommendedPathwaysCard}
|
|
316
|
+
</PageSection>
|
|
317
|
+
<PageSection isPlain padding={{ default: 'noPadding' }} isFilled>
|
|
318
|
+
<Gallery component="ul" hasGutter aria-label="Selectable card container">
|
|
319
|
+
<GalleryItem component="li">
|
|
320
|
+
<Card isCompact isGlass isFullHeight>
|
|
321
|
+
<Bullseye>
|
|
322
|
+
<EmptyState
|
|
323
|
+
headingLevel="h2"
|
|
324
|
+
titleText="Add a new card to your page"
|
|
325
|
+
icon={RhUiAddCircleFillIcon}
|
|
326
|
+
variant={EmptyStateVariant.xs}
|
|
327
|
+
>
|
|
328
|
+
<EmptyStateFooter>
|
|
329
|
+
<EmptyStateActions>
|
|
330
|
+
<Button variant={ButtonVariant.link}>Add card</Button>
|
|
331
|
+
</EmptyStateActions>
|
|
332
|
+
</EmptyStateFooter>
|
|
333
|
+
</EmptyState>
|
|
334
|
+
</Bullseye>
|
|
335
|
+
</Card>
|
|
336
|
+
</GalleryItem>
|
|
337
|
+
{cards}
|
|
338
|
+
</Gallery>
|
|
339
|
+
</PageSection>
|
|
340
|
+
</Page>
|
|
341
|
+
);
|
|
342
|
+
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Page, PageHeader, PageSection } from '@patternfly/react-core';
|
|
2
|
-
|
|
3
|
-
export const PageHeaderContent: React.FunctionComponent = () => {
|
|
4
|
-
const pageHeader = <PageHeader>Page header</PageHeader>;
|
|
5
|
-
|
|
6
|
-
return (
|
|
7
|
-
<Page masthead={pageHeader}>
|
|
8
|
-
<PageSection aria-labelledby="header-example-section-1">
|
|
9
|
-
<h2 id="header-example-section-1">Page header example section 1</h2>
|
|
10
|
-
</PageSection>
|
|
11
|
-
<PageSection variant="secondary" aria-labelledby="header-example-section-2">
|
|
12
|
-
<h2 id="header-example-section-2">Page header example section 2 with secondary variant styling</h2>
|
|
13
|
-
</PageSection>
|
|
14
|
-
<PageSection aria-labelledby="header-example-section-3">
|
|
15
|
-
<h2 id="header-example-section-3">Page header example section 3</h2>
|
|
16
|
-
</PageSection>
|
|
17
|
-
</Page>
|
|
18
|
-
);
|
|
19
|
-
};
|
|
File without changes
|