@patternfly/react-core 6.0.0-alpha.4 → 6.0.0-alpha.6
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 +104 -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/Chip/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/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/DragDrop/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/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/Text/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/Tile/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/ApplicationLauncher/package.json +1 -1
- package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
- package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
- package/dist/dynamic/deprecated/components/Select/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/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/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/favorites/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/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/next/components/package.json +1 -1
- package/dist/esm/components/Avatar/Avatar.d.ts +0 -2
- package/dist/esm/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/esm/components/Avatar/Avatar.js +2 -2
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Banner/Banner.d.ts +16 -3
- package/dist/esm/components/Banner/Banner.d.ts.map +1 -1
- package/dist/esm/components/Banner/Banner.js +10 -2
- package/dist/esm/components/Banner/Banner.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts +0 -2
- package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.js +3 -6
- package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/esm/components/Menu/MenuItem.d.ts +2 -0
- package/dist/esm/components/Menu/MenuItem.d.ts.map +1 -1
- package/dist/esm/components/Menu/MenuItem.js +3 -2
- package/dist/esm/components/Menu/MenuItem.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.d.ts +2 -2
- package/dist/esm/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +1 -1
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Popover/Popover.js +1 -1
- package/dist/esm/components/Popover/Popover.js.map +1 -1
- package/dist/js/components/Avatar/Avatar.d.ts +0 -2
- package/dist/js/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/js/components/Avatar/Avatar.js +2 -2
- package/dist/js/components/Avatar/Avatar.js.map +1 -1
- package/dist/js/components/Banner/Banner.d.ts +16 -3
- package/dist/js/components/Banner/Banner.d.ts.map +1 -1
- package/dist/js/components/Banner/Banner.js +10 -2
- package/dist/js/components/Banner/Banner.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +0 -2
- package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.js +3 -6
- package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/js/components/Menu/MenuItem.d.ts +2 -0
- package/dist/js/components/Menu/MenuItem.d.ts.map +1 -1
- package/dist/js/components/Menu/MenuItem.js +3 -2
- package/dist/js/components/Menu/MenuItem.js.map +1 -1
- package/dist/js/components/Pagination/Pagination.d.ts +2 -2
- package/dist/js/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/js/components/Pagination/Pagination.js +1 -1
- package/dist/js/components/Pagination/Pagination.js.map +1 -1
- package/dist/js/components/Popover/Popover.js +1 -1
- package/dist/js/components/Popover/Popover.js.map +1 -1
- package/dist/styles/assets/images/PF-HorizontalLogo-Color.svg +29 -0
- package/dist/styles/assets/images/PF-HorizontalLogo-Reverse.svg +28 -0
- package/dist/styles/assets/images/PF-IconLogo-color.svg +17 -0
- package/dist/styles/base-no-reset.css +859 -849
- package/dist/styles/base.css +861 -850
- 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/Avatar/Avatar.tsx +1 -15
- package/src/components/Avatar/__tests__/Avatar.test.tsx +7 -4
- package/src/components/Avatar/examples/Avatar.md +4 -2
- package/src/components/Banner/Banner.tsx +41 -18
- package/src/components/Banner/__tests__/Banner.test.tsx +56 -11
- package/src/components/Banner/examples/Banner.md +4 -2
- package/src/components/Banner/examples/BannerBasic.tsx +12 -4
- package/src/components/Banner/examples/BannerStatus.tsx +13 -13
- package/src/components/ExpandableSection/ExpandableSection.tsx +0 -6
- package/src/components/Menu/MenuItem.tsx +5 -1
- package/src/components/Pagination/Pagination.tsx +2 -3
- package/src/components/Pagination/__tests__/Pagination.test.tsx +1 -1
- package/src/components/Pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +174 -93
- package/src/components/Popover/Popover.tsx +1 -1
- package/src/components/Select/examples/Select.md +49 -9
- package/src/demos/DataList/examples/DataListExpandableControlInToolbar.tsx +397 -0
- package/src/demos/DataListDemo.md +1 -407
- package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +3 -3
package/helpers/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.5","private":true}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.
|
|
1
|
+
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.5","private":true}
|
package/next/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.
|
|
1
|
+
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.5","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "6.0.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.6",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -46,15 +46,15 @@
|
|
|
46
46
|
"subpaths": "node ../../scripts/exportSubpaths.js --config subpaths.config.json"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@patternfly/react-icons": "^6.0.0-alpha.
|
|
50
|
-
"@patternfly/react-styles": "^6.0.0-alpha.
|
|
51
|
-
"@patternfly/react-tokens": "^6.0.0-alpha.
|
|
49
|
+
"@patternfly/react-icons": "^6.0.0-alpha.5",
|
|
50
|
+
"@patternfly/react-styles": "^6.0.0-alpha.5",
|
|
51
|
+
"@patternfly/react-tokens": "^6.0.0-alpha.5",
|
|
52
52
|
"focus-trap": "7.5.2",
|
|
53
53
|
"react-dropzone": "^14.2.3",
|
|
54
54
|
"tslib": "^2.5.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@patternfly/patternfly": "6.0.0-alpha.
|
|
57
|
+
"@patternfly/patternfly": "6.0.0-alpha.38",
|
|
58
58
|
"@rollup/plugin-commonjs": "^25.0.0",
|
|
59
59
|
"@rollup/plugin-node-resolve": "^15.0.2",
|
|
60
60
|
"@rollup/plugin-replace": "^5.0.2",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"react": "^17 || ^18",
|
|
73
73
|
"react-dom": "^17 || ^18"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "cddbcdf996451d6157f6c191f67b736ddeb073b0"
|
|
76
76
|
}
|
|
@@ -10,8 +10,6 @@ export interface AvatarProps
|
|
|
10
10
|
src?: string;
|
|
11
11
|
/** Attribute that specifies the alternate text of the image for the Avatar. */
|
|
12
12
|
alt: string;
|
|
13
|
-
/** Border to add */
|
|
14
|
-
border?: 'light' | 'dark';
|
|
15
13
|
/** Size variant of avatar. */
|
|
16
14
|
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
17
15
|
}
|
|
@@ -20,21 +18,9 @@ export const Avatar: React.FunctionComponent<AvatarProps> = ({
|
|
|
20
18
|
className = '',
|
|
21
19
|
src = '',
|
|
22
20
|
alt,
|
|
23
|
-
border,
|
|
24
21
|
size,
|
|
25
22
|
...props
|
|
26
23
|
}: AvatarProps) => (
|
|
27
|
-
<img
|
|
28
|
-
src={src}
|
|
29
|
-
alt={alt}
|
|
30
|
-
className={css(
|
|
31
|
-
styles.avatar,
|
|
32
|
-
styles.modifiers[size],
|
|
33
|
-
border === 'light' && styles.modifiers.light,
|
|
34
|
-
border === 'dark' && styles.modifiers.dark,
|
|
35
|
-
className
|
|
36
|
-
)}
|
|
37
|
-
{...props}
|
|
38
|
-
/>
|
|
24
|
+
<img src={src} alt={alt} className={css(styles.avatar, styles.modifiers[size], className)} {...props} />
|
|
39
25
|
);
|
|
40
26
|
Avatar.displayName = 'Avatar';
|
|
@@ -12,18 +12,21 @@ test('Renders simple avatar', () => {
|
|
|
12
12
|
expect(screen.getByTestId('avatar').firstChild).toBeVisible();
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
+
// TODO: Need to be updated as part of issue #9880
|
|
15
16
|
test('Renders without any modifier class when border and size props are not passed', () => {
|
|
16
17
|
render(<Avatar alt="avatar" />);
|
|
17
18
|
expect(screen.getByRole('img')).toHaveClass(styles.avatar, { exact: true });
|
|
18
19
|
});
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
// TODO: Need to be updated/removed as part of issue #9880
|
|
22
|
+
xtest('Renders with class name pf-m-light when "light" is passed as border prop', () => {
|
|
23
|
+
render(<Avatar alt="avatar" />);
|
|
22
24
|
expect(screen.getByRole('img')).toHaveClass('pf-m-light');
|
|
23
25
|
});
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
// TODO: Need to be updated/removed as part of issue #9880
|
|
28
|
+
xtest('Renders with class name pf-m-dark when "dark" is passed as border prop', () => {
|
|
29
|
+
render(<Avatar alt="avatar" />);
|
|
27
30
|
expect(screen.getByRole('img')).toHaveClass('pf-m-dark');
|
|
28
31
|
});
|
|
29
32
|
|
|
@@ -54,7 +54,8 @@ import React from 'react';
|
|
|
54
54
|
import { Avatar } from '@patternfly/react-core';
|
|
55
55
|
import avatarImg from '../../assets/avatarImg.svg';
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
// TODO: Need to be updated/removed as part of issue #9880
|
|
58
|
+
<Avatar src={avatarImg} alt="avatar" />;
|
|
58
59
|
```
|
|
59
60
|
|
|
60
61
|
### Bordered - dark
|
|
@@ -64,5 +65,6 @@ import React from 'react';
|
|
|
64
65
|
import { Avatar } from '@patternfly/react-core';
|
|
65
66
|
import avatarImgDark from '../../assets/avatarImgDark.svg';
|
|
66
67
|
|
|
67
|
-
|
|
68
|
+
// TODO: Need to be updated/removed as part of issue #9880
|
|
69
|
+
<Avatar src={avatarImgDark} alt="avatar" />;
|
|
68
70
|
```
|
|
@@ -2,6 +2,10 @@ import * as React from 'react';
|
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/Banner/banner';
|
|
3
3
|
import { css } from '@patternfly/react-styles';
|
|
4
4
|
|
|
5
|
+
export type BannerColor = 'red' | 'orangered' | 'orange' | 'gold' | 'green' | 'cyan' | 'blue' | 'purple';
|
|
6
|
+
|
|
7
|
+
export type BannerStatus = 'success' | 'warning' | 'danger' | 'info' | 'custom';
|
|
8
|
+
|
|
5
9
|
export interface BannerProps extends React.HTMLProps<HTMLDivElement> {
|
|
6
10
|
/** Content rendered inside the banner. */
|
|
7
11
|
children?: React.ReactNode;
|
|
@@ -13,29 +17,48 @@ export interface BannerProps extends React.HTMLProps<HTMLDivElement> {
|
|
|
13
17
|
* be passed in when the banner conveys status/severity.
|
|
14
18
|
*/
|
|
15
19
|
screenReaderText?: string;
|
|
16
|
-
/**
|
|
17
|
-
|
|
20
|
+
/** Color options for the banner, will be overwritten by any applied using the status prop. */
|
|
21
|
+
color?: BannerColor;
|
|
22
|
+
/** Status style options for the banner, will overwrite any color applied using the color prop. */
|
|
23
|
+
status?: BannerStatus;
|
|
24
|
+
}
|
|
25
|
+
interface StatusBanner extends BannerProps {
|
|
26
|
+
color?: never;
|
|
27
|
+
status?: BannerStatus;
|
|
18
28
|
}
|
|
19
29
|
|
|
20
|
-
|
|
30
|
+
interface NonStatusBanner extends BannerProps {
|
|
31
|
+
color?: BannerColor;
|
|
32
|
+
status?: never;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const Banner: React.FunctionComponent<StatusBanner | NonStatusBanner> = ({
|
|
21
36
|
children,
|
|
22
37
|
className,
|
|
23
|
-
variant = 'default',
|
|
24
38
|
screenReaderText,
|
|
25
39
|
isSticky = false,
|
|
40
|
+
color,
|
|
41
|
+
status,
|
|
26
42
|
...props
|
|
27
|
-
}: BannerProps) =>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
styles.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
)
|
|
43
|
+
}: BannerProps) => {
|
|
44
|
+
const getStatusOrColorModifier = () => {
|
|
45
|
+
if (status) {
|
|
46
|
+
return styles.modifiers[status];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (color) {
|
|
50
|
+
return styles.modifiers[color];
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<div
|
|
56
|
+
className={css(styles.banner, getStatusOrColorModifier(), isSticky && styles.modifiers.sticky, className)}
|
|
57
|
+
{...props}
|
|
58
|
+
>
|
|
59
|
+
{screenReaderText && <span className="pf-v5-screen-reader">{screenReaderText}</span>}
|
|
60
|
+
{children}
|
|
61
|
+
</div>
|
|
62
|
+
);
|
|
63
|
+
};
|
|
41
64
|
Banner.displayName = 'Banner';
|
|
@@ -27,31 +27,76 @@ test('Renders with custom class name when className prop is provided', () => {
|
|
|
27
27
|
expect(screen.getByText('Test')).toHaveClass('custom-class');
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
test('Renders without any modifier class when
|
|
30
|
+
test('Renders without any modifier class when color and status props are not passed', () => {
|
|
31
31
|
render(<Banner>Test</Banner>);
|
|
32
32
|
expect(screen.getByText('Test')).toHaveClass(styles.banner, { exact: true });
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
test('Renders with class name pf-m-
|
|
36
|
-
render(<Banner
|
|
37
|
-
expect(screen.getByText('Test')).toHaveClass('pf-m-
|
|
35
|
+
test('Renders with class name pf-m-red when "red" is passed to color prop', () => {
|
|
36
|
+
render(<Banner color="red">Test</Banner>);
|
|
37
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-red');
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
test('Renders with class name pf-m-
|
|
41
|
-
render(<Banner
|
|
42
|
-
expect(screen.getByText('Test')).toHaveClass('pf-m-
|
|
40
|
+
test('Renders with class name pf-m-orangered when "orangered" is passed to color prop', () => {
|
|
41
|
+
render(<Banner color="orangered">Test</Banner>);
|
|
42
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-orangered');
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
test('Renders with class name pf-m-
|
|
46
|
-
render(<Banner
|
|
45
|
+
test('Renders with class name pf-m-orange when "orange" is passed to color prop', () => {
|
|
46
|
+
render(<Banner color="orange">Test</Banner>);
|
|
47
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-orange');
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('Renders with class name pf-m-gold when "gold" is passed to color prop', () => {
|
|
51
|
+
render(<Banner color="gold">Test</Banner>);
|
|
47
52
|
expect(screen.getByText('Test')).toHaveClass('pf-m-gold');
|
|
48
53
|
});
|
|
49
54
|
|
|
50
|
-
test('Renders with class name pf-m-
|
|
51
|
-
render(<Banner
|
|
55
|
+
test('Renders with class name pf-m-green when "green" is passed to color prop', () => {
|
|
56
|
+
render(<Banner color="green">Test</Banner>);
|
|
57
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-green');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('Renders with class name pf-m-cyan when "cyan" is passed to color prop', () => {
|
|
61
|
+
render(<Banner color="cyan">Test</Banner>);
|
|
62
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-cyan');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test('Renders with class name pf-m-blue when "blue" is passed to color prop', () => {
|
|
66
|
+
render(<Banner color="blue">Test</Banner>);
|
|
52
67
|
expect(screen.getByText('Test')).toHaveClass('pf-m-blue');
|
|
53
68
|
});
|
|
54
69
|
|
|
70
|
+
test('Renders with class name pf-m-purple when "purple" is passed to color prop', () => {
|
|
71
|
+
render(<Banner color="purple">Test</Banner>);
|
|
72
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-purple');
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('Renders with class name pf-m-success when "success" is passed to status prop', () => {
|
|
76
|
+
render(<Banner status="success">Test</Banner>);
|
|
77
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-success');
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('Renders with class name pf-m-warning when "warning" is passed to status prop', () => {
|
|
81
|
+
render(<Banner status="warning">Test</Banner>);
|
|
82
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-warning');
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
test('Renders with class name pf-m-danger when "danger" is passed to status prop', () => {
|
|
86
|
+
render(<Banner status="danger">Test</Banner>);
|
|
87
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-danger');
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
test('Renders with class name pf-m-info when "info" is passed to status prop', () => {
|
|
91
|
+
render(<Banner status="info">Test</Banner>);
|
|
92
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-info');
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
test('Renders with class name pf-m-custom when "custom" is passed to status prop', () => {
|
|
96
|
+
render(<Banner status="custom">Test</Banner>);
|
|
97
|
+
expect(screen.getByText('Test')).toHaveClass('pf-m-custom');
|
|
98
|
+
});
|
|
99
|
+
|
|
55
100
|
test('Does not render pf-v5-screen-reader class by default', () => {
|
|
56
101
|
render(<Banner>Test</Banner>);
|
|
57
102
|
expect(screen.getByText('Test')).not.toContainHTML('<span class="pf-v5-screen-reader"></span>');
|
|
@@ -15,7 +15,7 @@ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
|
15
15
|
|
|
16
16
|
### Basic
|
|
17
17
|
|
|
18
|
-
Banners can be styled with one of
|
|
18
|
+
Banners can be styled with one of 9 different colors using the `color` prop. A basic banner should only be used when the banner color does not represent status or severity.
|
|
19
19
|
|
|
20
20
|
```ts file="./BannerBasic.tsx"
|
|
21
21
|
|
|
@@ -23,7 +23,9 @@ Banners can be styled with one of 5 different colors. A basic banner should only
|
|
|
23
23
|
|
|
24
24
|
### Status
|
|
25
25
|
|
|
26
|
-
When a banner is used to convey status, it is advised to pass
|
|
26
|
+
When a banner is used to convey status it should be styled using the `status` prop. Additionally, it is advised to pass an icon inside the banner to convey the status in a way besides just color.
|
|
27
|
+
|
|
28
|
+
The `screenReaderText` prop should also be passed in to convey the status/severity of the banner to users of certain assistive technologies such as screen readers.
|
|
27
29
|
|
|
28
30
|
In the following example, a flex layout is used inside the banner content to show one possible way to create spacing between the icons and banner text.
|
|
29
31
|
|
|
@@ -5,12 +5,20 @@ export const BannerBasic: React.FunctionComponent = () => (
|
|
|
5
5
|
<>
|
|
6
6
|
<Banner>Default banner</Banner>
|
|
7
7
|
<br />
|
|
8
|
-
<Banner
|
|
8
|
+
<Banner color="red">Red banner</Banner>
|
|
9
9
|
<br />
|
|
10
|
-
<Banner
|
|
10
|
+
<Banner color="orangered">Orangered banner</Banner>
|
|
11
11
|
<br />
|
|
12
|
-
<Banner
|
|
12
|
+
<Banner color="orange">Orange banner</Banner>
|
|
13
13
|
<br />
|
|
14
|
-
<Banner
|
|
14
|
+
<Banner color="gold">Gold banner</Banner>
|
|
15
|
+
<br />
|
|
16
|
+
<Banner color="green">Green banner</Banner>
|
|
17
|
+
<br />
|
|
18
|
+
<Banner color="cyan">Cyan banner</Banner>
|
|
19
|
+
<br />
|
|
20
|
+
<Banner color="blue">Blue banner</Banner>
|
|
21
|
+
<br />
|
|
22
|
+
<Banner color="purple">Purple banner</Banner>
|
|
15
23
|
</>
|
|
16
24
|
);
|
|
@@ -8,25 +8,25 @@ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
|
8
8
|
|
|
9
9
|
export const BannerStatus: React.FunctionComponent = () => (
|
|
10
10
|
<>
|
|
11
|
-
<Banner screenReaderText="
|
|
11
|
+
<Banner screenReaderText="Success banner" status="success">
|
|
12
12
|
<Flex spaceItems={{ default: 'spaceItemsSm' }}>
|
|
13
13
|
<FlexItem>
|
|
14
|
-
<
|
|
14
|
+
<CheckCircleIcon />
|
|
15
15
|
</FlexItem>
|
|
16
|
-
<FlexItem>
|
|
16
|
+
<FlexItem>Success banner</FlexItem>
|
|
17
17
|
</Flex>
|
|
18
18
|
</Banner>
|
|
19
19
|
<br />
|
|
20
|
-
<Banner screenReaderText="
|
|
20
|
+
<Banner screenReaderText="Warning banner" status="warning">
|
|
21
21
|
<Flex spaceItems={{ default: 'spaceItemsSm' }}>
|
|
22
22
|
<FlexItem>
|
|
23
|
-
<
|
|
23
|
+
<ExclamationTriangleIcon />
|
|
24
24
|
</FlexItem>
|
|
25
|
-
<FlexItem>
|
|
25
|
+
<FlexItem>Warning banner</FlexItem>
|
|
26
26
|
</Flex>
|
|
27
27
|
</Banner>
|
|
28
28
|
<br />
|
|
29
|
-
<Banner screenReaderText="Danger banner"
|
|
29
|
+
<Banner screenReaderText="Danger banner" status="danger">
|
|
30
30
|
<Flex spaceItems={{ default: 'spaceItemsSm' }}>
|
|
31
31
|
<FlexItem>
|
|
32
32
|
<ExclamationCircleIcon />
|
|
@@ -35,21 +35,21 @@ export const BannerStatus: React.FunctionComponent = () => (
|
|
|
35
35
|
</Flex>
|
|
36
36
|
</Banner>
|
|
37
37
|
<br />
|
|
38
|
-
<Banner screenReaderText="
|
|
38
|
+
<Banner screenReaderText="Info banner" status="info">
|
|
39
39
|
<Flex spaceItems={{ default: 'spaceItemsSm' }}>
|
|
40
40
|
<FlexItem>
|
|
41
|
-
<
|
|
41
|
+
<InfoCircleIcon />
|
|
42
42
|
</FlexItem>
|
|
43
|
-
<FlexItem>
|
|
43
|
+
<FlexItem>Info banner</FlexItem>
|
|
44
44
|
</Flex>
|
|
45
45
|
</Banner>
|
|
46
46
|
<br />
|
|
47
|
-
<Banner screenReaderText="
|
|
47
|
+
<Banner screenReaderText="Custom banner" status="custom">
|
|
48
48
|
<Flex spaceItems={{ default: 'spaceItemsSm' }}>
|
|
49
49
|
<FlexItem>
|
|
50
|
-
<
|
|
50
|
+
<BellIcon />
|
|
51
51
|
</FlexItem>
|
|
52
|
-
<FlexItem>
|
|
52
|
+
<FlexItem>Custom banner</FlexItem>
|
|
53
53
|
</Flex>
|
|
54
54
|
</Banner>
|
|
55
55
|
</>
|
|
@@ -31,8 +31,6 @@ export interface ExpandableSectionProps extends React.HTMLProps<HTMLDivElement>
|
|
|
31
31
|
toggleId?: string;
|
|
32
32
|
/** Display size variant. Set to "lg" for disclosure styling. */
|
|
33
33
|
displaySize?: 'default' | 'lg';
|
|
34
|
-
/** Forces active state. */
|
|
35
|
-
isActive?: boolean;
|
|
36
34
|
/** Indicates the expandable section has a detached toggle. */
|
|
37
35
|
isDetached?: boolean;
|
|
38
36
|
/** Flag to indicate if the content is expanded. */
|
|
@@ -103,7 +101,6 @@ class ExpandableSection extends React.Component<ExpandableSectionProps, Expandab
|
|
|
103
101
|
toggleTextCollapsed: '',
|
|
104
102
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
105
103
|
onToggle: (event, isExpanded): void => undefined,
|
|
106
|
-
isActive: false,
|
|
107
104
|
isDetached: false,
|
|
108
105
|
displaySize: 'default',
|
|
109
106
|
isWidthLimited: false,
|
|
@@ -182,8 +179,6 @@ class ExpandableSection extends React.Component<ExpandableSectionProps, Expandab
|
|
|
182
179
|
render() {
|
|
183
180
|
const {
|
|
184
181
|
onToggle: onToggleProp,
|
|
185
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
186
|
-
isActive,
|
|
187
182
|
className,
|
|
188
183
|
toggleText,
|
|
189
184
|
toggleTextExpanded,
|
|
@@ -253,7 +248,6 @@ class ExpandableSection extends React.Component<ExpandableSectionProps, Expandab
|
|
|
253
248
|
className={css(
|
|
254
249
|
styles.expandableSection,
|
|
255
250
|
propOrStateIsExpanded && styles.modifiers.expanded,
|
|
256
|
-
isActive && styles.modifiers.active,
|
|
257
251
|
displaySize === 'lg' && styles.modifiers.displayLg,
|
|
258
252
|
isWidthLimited && styles.modifiers.limitWidth,
|
|
259
253
|
isIndented && styles.modifiers.indented,
|
|
@@ -29,6 +29,8 @@ export interface MenuItemProps extends Omit<React.HTMLProps<HTMLLIElement>, 'onC
|
|
|
29
29
|
target?: string;
|
|
30
30
|
/** Navigation link relationship. Only set when the to property is present. */
|
|
31
31
|
rel?: string;
|
|
32
|
+
/** Navigation link download. Only set when the to property is present. */
|
|
33
|
+
download?: string;
|
|
32
34
|
/** Flag indicating the item has a checkbox */
|
|
33
35
|
hasCheckbox?: boolean;
|
|
34
36
|
/** Flag indicating whether the item is active */
|
|
@@ -119,6 +121,7 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
119
121
|
tooltipProps,
|
|
120
122
|
rel,
|
|
121
123
|
target,
|
|
124
|
+
download,
|
|
122
125
|
...props
|
|
123
126
|
}: MenuItemProps) => {
|
|
124
127
|
const {
|
|
@@ -271,7 +274,8 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
271
274
|
// prevent invalid 'disabled' attribute on <a> tags
|
|
272
275
|
disabled: null,
|
|
273
276
|
target: isExternalLink ? '_blank' : target,
|
|
274
|
-
rel
|
|
277
|
+
rel,
|
|
278
|
+
download
|
|
275
279
|
};
|
|
276
280
|
} else if (Component === 'button') {
|
|
277
281
|
additionalProps = {
|
|
@@ -119,10 +119,10 @@ export interface PaginationProps extends React.HTMLProps<HTMLDivElement>, OUIAPr
|
|
|
119
119
|
xl?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';
|
|
120
120
|
'2xl'?: 'insetNone' | 'insetSm' | 'insetMd' | 'insetLg' | 'insetXl' | 'inset2xl';
|
|
121
121
|
};
|
|
122
|
-
/** Flag indicating if pagination is compact. */
|
|
123
|
-
isCompact?: boolean;
|
|
124
122
|
/** Flag indicating if pagination is disabled. */
|
|
125
123
|
isDisabled?: boolean;
|
|
124
|
+
/** Flag indicating if pagination is compact. */
|
|
125
|
+
isCompact?: boolean;
|
|
126
126
|
/** Flag indicating if pagination should not be sticky on mobile. */
|
|
127
127
|
isStatic?: boolean;
|
|
128
128
|
/** Flag indicating if pagination should stick to its position (based on variant). */
|
|
@@ -285,7 +285,6 @@ export const Pagination: React.FunctionComponent<PaginationProps> = ({
|
|
|
285
285
|
variant === PaginationVariant.bottom && styles.modifiers.bottom,
|
|
286
286
|
usePageInsets && styles.modifiers.pageInsets,
|
|
287
287
|
formatBreakpointMods(inset, styles),
|
|
288
|
-
isCompact && styles.modifiers.compact,
|
|
289
288
|
isStatic && styles.modifiers.static,
|
|
290
289
|
isSticky && styles.modifiers.sticky,
|
|
291
290
|
className
|
|
@@ -19,7 +19,7 @@ describe('Pagination', () => {
|
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
test('should render correctly compact', () => {
|
|
22
|
-
const { asFragment } = render(<Pagination itemCount={20}
|
|
22
|
+
const { asFragment } = render(<Pagination itemCount={20} />);
|
|
23
23
|
expect(asFragment()).toMatchSnapshot();
|
|
24
24
|
});
|
|
25
25
|
|