@patternfly/react-core 4.259.0 → 4.260.0
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 +11 -0
- package/dist/esm/components/HelperText/__mocks__/HelperText.d.ts +4 -0
- package/dist/esm/components/HelperText/__mocks__/HelperText.d.ts.map +1 -0
- package/dist/esm/components/HelperText/__mocks__/HelperText.js +5 -0
- package/dist/esm/components/HelperText/__mocks__/HelperText.js.map +1 -0
- package/dist/esm/components/HelperText/__mocks__/HelperTextItem.d.ts +4 -0
- package/dist/esm/components/HelperText/__mocks__/HelperTextItem.d.ts.map +1 -0
- package/dist/esm/components/HelperText/__mocks__/HelperTextItem.js +5 -0
- package/dist/esm/components/HelperText/__mocks__/HelperTextItem.js.map +1 -0
- package/dist/esm/components/HelperText/__mocks__/index.d.ts +3 -0
- package/dist/esm/components/HelperText/__mocks__/index.d.ts.map +1 -0
- package/dist/esm/components/HelperText/__mocks__/index.js +3 -0
- package/dist/esm/components/HelperText/__mocks__/index.js.map +1 -0
- package/dist/esm/components/Progress/Progress.d.ts +4 -0
- package/dist/esm/components/Progress/Progress.d.ts.map +1 -1
- package/dist/esm/components/Progress/Progress.js +2 -2
- package/dist/esm/components/Progress/Progress.js.map +1 -1
- package/dist/esm/components/Progress/ProgressContainer.d.ts +4 -0
- package/dist/esm/components/Progress/ProgressContainer.d.ts.map +1 -1
- package/dist/esm/components/Progress/ProgressContainer.js +4 -2
- package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
- package/dist/esm/components/Progress/ProgressHelperText.d.ts +9 -0
- package/dist/esm/components/Progress/ProgressHelperText.d.ts.map +1 -0
- package/dist/esm/components/Progress/ProgressHelperText.js +9 -0
- package/dist/esm/components/Progress/ProgressHelperText.js.map +1 -0
- package/dist/js/components/HelperText/__mocks__/HelperText.d.ts +4 -0
- package/dist/js/components/HelperText/__mocks__/HelperText.d.ts.map +1 -0
- package/dist/js/components/HelperText/__mocks__/HelperText.js +10 -0
- package/dist/js/components/HelperText/__mocks__/HelperText.js.map +1 -0
- package/dist/js/components/HelperText/__mocks__/HelperTextItem.d.ts +4 -0
- package/dist/js/components/HelperText/__mocks__/HelperTextItem.d.ts.map +1 -0
- package/dist/js/components/HelperText/__mocks__/HelperTextItem.js +10 -0
- package/dist/js/components/HelperText/__mocks__/HelperTextItem.js.map +1 -0
- package/dist/js/components/HelperText/__mocks__/index.d.ts +3 -0
- package/dist/js/components/HelperText/__mocks__/index.d.ts.map +1 -0
- package/dist/js/components/HelperText/__mocks__/index.js +6 -0
- package/dist/js/components/HelperText/__mocks__/index.js.map +1 -0
- package/dist/js/components/Progress/Progress.d.ts +4 -0
- package/dist/js/components/Progress/Progress.d.ts.map +1 -1
- package/dist/js/components/Progress/Progress.js +2 -2
- package/dist/js/components/Progress/Progress.js.map +1 -1
- package/dist/js/components/Progress/ProgressContainer.d.ts +4 -0
- package/dist/js/components/Progress/ProgressContainer.d.ts.map +1 -1
- package/dist/js/components/Progress/ProgressContainer.js +4 -2
- package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
- package/dist/js/components/Progress/ProgressHelperText.d.ts +9 -0
- package/dist/js/components/Progress/ProgressHelperText.d.ts.map +1 -0
- package/dist/js/components/Progress/ProgressHelperText.js +13 -0
- package/dist/js/components/Progress/ProgressHelperText.js.map +1 -0
- package/dist/umd/react-core.min.css +2174 -2174
- package/dist/umd/react-core.min.js +1 -1
- package/package.json +2 -2
- package/src/components/HelperText/__mocks__/HelperText.tsx +9 -0
- package/src/components/HelperText/__mocks__/HelperTextItem.tsx +9 -0
- package/src/components/HelperText/__mocks__/index.ts +2 -0
- package/src/components/Progress/Progress.tsx +6 -0
- package/src/components/Progress/ProgressContainer.tsx +8 -1
- package/src/components/Progress/ProgressHelperText.tsx +20 -0
- package/src/components/Progress/__tests__/Progress.test.tsx +13 -1
- package/src/components/Progress/__tests__/ProgressHelperText.test.tsx +35 -0
- package/src/components/Progress/__tests__/__snapshots__/ProgressHelperText.test.tsx.snap +11 -0
- package/src/components/Progress/examples/Progress.md +4 -0
- package/src/components/Progress/examples/ProgressHelperText.tsx +42 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.260.0",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"react": "^16.8 || ^17 || ^18",
|
|
71
71
|
"react-dom": "^16.8 || ^17 || ^18"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "8d5d8dc62afaae1e70567b802bf617bf73df36a4"
|
|
74
74
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { HelperTextProps } from '../';
|
|
3
|
+
|
|
4
|
+
export const HelperText = ({ children, isLiveRegion }: HelperTextProps) => (
|
|
5
|
+
<>
|
|
6
|
+
<div data-testid="helper-text-children-container">{children}</div>
|
|
7
|
+
<p>{`isLiveRegion: ${isLiveRegion}`}</p>
|
|
8
|
+
</>
|
|
9
|
+
);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { HelperTextItemProps } from '../';
|
|
3
|
+
|
|
4
|
+
export const HelperTextItem = ({ children, variant }: HelperTextItemProps) => (
|
|
5
|
+
<>
|
|
6
|
+
<div data-testid="helper-text-item-children-container">{children}</div>
|
|
7
|
+
<p>{`variant: ${variant}`}</p>
|
|
8
|
+
</>
|
|
9
|
+
);
|
|
@@ -42,6 +42,10 @@ export interface ProgressProps extends Omit<React.HTMLProps<HTMLDivElement>, 'si
|
|
|
42
42
|
'aria-label'?: string;
|
|
43
43
|
/** Associates the ProgressBar with it's label for accessibility purposes. Required when title not used */
|
|
44
44
|
'aria-labelledby'?: string;
|
|
45
|
+
/** @beta Content which can be used to convey additional information about the progress component.
|
|
46
|
+
* We recommend the helper text component as it was designed for this purpose.
|
|
47
|
+
*/
|
|
48
|
+
helperText?: React.ReactNode;
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
export class Progress extends React.Component<ProgressProps> {
|
|
@@ -85,6 +89,7 @@ export class Progress extends React.Component<ProgressProps> {
|
|
|
85
89
|
tooltipPosition,
|
|
86
90
|
'aria-label': ariaLabel,
|
|
87
91
|
'aria-labelledby': ariaLabelledBy,
|
|
92
|
+
helperText,
|
|
88
93
|
...props
|
|
89
94
|
} = this.props;
|
|
90
95
|
|
|
@@ -137,6 +142,7 @@ export class Progress extends React.Component<ProgressProps> {
|
|
|
137
142
|
progressBarAriaProps={progressBarAriaProps}
|
|
138
143
|
isTitleTruncated={isTitleTruncated}
|
|
139
144
|
tooltipPosition={tooltipPosition}
|
|
145
|
+
helperText={helperText}
|
|
140
146
|
/>
|
|
141
147
|
</div>
|
|
142
148
|
);
|
|
@@ -6,6 +6,7 @@ import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle
|
|
|
6
6
|
import TimesCircleIcon from '@patternfly/react-icons/dist/esm/icons/times-circle-icon';
|
|
7
7
|
import ExclamationTriangleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon';
|
|
8
8
|
import { AriaProps, ProgressBar } from './ProgressBar';
|
|
9
|
+
import { ProgressHelperText } from './ProgressHelperText';
|
|
9
10
|
|
|
10
11
|
export enum ProgressMeasureLocation {
|
|
11
12
|
outside = 'outside',
|
|
@@ -53,6 +54,10 @@ export interface ProgressContainerProps extends Omit<React.HTMLProps<HTMLDivElem
|
|
|
53
54
|
| 'left-end'
|
|
54
55
|
| 'right-start'
|
|
55
56
|
| 'right-end';
|
|
57
|
+
/** @beta Content which can be used to convey additional information about the progress component.
|
|
58
|
+
* We recommend the helper text component as it was designed for this purpose.
|
|
59
|
+
*/
|
|
60
|
+
helperText?: React.ReactNode;
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
const variantToIcon = {
|
|
@@ -70,7 +75,8 @@ export const ProgressContainer: React.FunctionComponent<ProgressContainerProps>
|
|
|
70
75
|
variant = null,
|
|
71
76
|
measureLocation = ProgressMeasureLocation.top,
|
|
72
77
|
isTitleTruncated = false,
|
|
73
|
-
tooltipPosition
|
|
78
|
+
tooltipPosition,
|
|
79
|
+
helperText
|
|
74
80
|
}: ProgressContainerProps) => {
|
|
75
81
|
const StatusIcon = variantToIcon.hasOwnProperty(variant) && variantToIcon[variant];
|
|
76
82
|
const [tooltip, setTooltip] = React.useState('');
|
|
@@ -117,6 +123,7 @@ export const ProgressContainer: React.FunctionComponent<ProgressContainerProps>
|
|
|
117
123
|
<ProgressBar role="progressbar" progressBarAriaProps={progressBarAriaProps} value={value}>
|
|
118
124
|
{measureLocation === ProgressMeasureLocation.inside && `${value}%`}
|
|
119
125
|
</ProgressBar>
|
|
126
|
+
{helperText && <ProgressHelperText>{helperText}</ProgressHelperText>}
|
|
120
127
|
</React.Fragment>
|
|
121
128
|
);
|
|
122
129
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import progressStyle from '@patternfly/react-styles/css/components/Progress/progress';
|
|
3
|
+
|
|
4
|
+
export interface ProgressHelperTextProps extends React.HTMLProps<HTMLDivElement> {
|
|
5
|
+
/** Content which can be used to convey additional information about the progress component.
|
|
6
|
+
* We recommend the helper text component as it was designed for this purpose.
|
|
7
|
+
*/
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const ProgressHelperText: React.FunctionComponent<ProgressHelperTextProps> = ({
|
|
12
|
+
children,
|
|
13
|
+
...props
|
|
14
|
+
}: ProgressHelperTextProps) => (
|
|
15
|
+
<div className={progressStyle.progressHelperText} {...props}>
|
|
16
|
+
{children}
|
|
17
|
+
</div>
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
ProgressHelperText.displayName = 'ProgressHelperText';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import { Progress, ProgressSize } from '../Progress';
|
|
4
4
|
import { ProgressVariant, ProgressMeasureLocation } from '../ProgressContainer';
|
|
5
5
|
|
|
@@ -97,3 +97,15 @@ test('progress component generates console warning when no accessible name is pr
|
|
|
97
97
|
render(<Progress value={33} />);
|
|
98
98
|
expect(consoleWarnMock).toHaveBeenCalled();
|
|
99
99
|
});
|
|
100
|
+
|
|
101
|
+
test('Does not render helper text by default', () => {
|
|
102
|
+
render(<Progress/>);
|
|
103
|
+
|
|
104
|
+
expect(screen.queryByText('Test helper text')).not.toBeInTheDocument();
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
test('Renders passed helper text', () => {
|
|
108
|
+
render(<Progress helperText="Test helper text" />);
|
|
109
|
+
|
|
110
|
+
expect(screen.getByText('Test helper text')).toBeVisible();
|
|
111
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import { ProgressHelperText } from '../ProgressHelperText';
|
|
4
|
+
|
|
5
|
+
test('Renders without children', () => {
|
|
6
|
+
render(
|
|
7
|
+
<div data-testid="container">
|
|
8
|
+
<ProgressHelperText />
|
|
9
|
+
</div>
|
|
10
|
+
);
|
|
11
|
+
expect(screen.getByTestId('container').firstChild).toBeVisible();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('Renders children', () => {
|
|
15
|
+
render(<ProgressHelperText>Test</ProgressHelperText>);
|
|
16
|
+
|
|
17
|
+
expect(screen.getByText('Test')).toBeVisible();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('Renders with class pf-c-progress__helper-text on the div containing the helper text component', () => {
|
|
21
|
+
render(<ProgressHelperText>Test</ProgressHelperText>);
|
|
22
|
+
|
|
23
|
+
expect(screen.getByText('Test')).toHaveClass('pf-c-progress__helper-text');
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('Renders with inherited element props spread to the component', () => {
|
|
27
|
+
render(<ProgressHelperText aria-label="Test label">Test</ProgressHelperText>);
|
|
28
|
+
|
|
29
|
+
expect(screen.getByText('Test')).toHaveAccessibleName('Test label');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('Matches the snapshot', () => {
|
|
33
|
+
const { asFragment } = render(<ProgressHelperText>test</ProgressHelperText>);
|
|
34
|
+
expect(asFragment()).toMatchSnapshot();
|
|
35
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Progress, ProgressProps, HelperText, HelperTextItem, Radio } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const ProgressHelperText: React.FunctionComponent = () => {
|
|
5
|
+
type ProgressVariant = ProgressProps['variant'];
|
|
6
|
+
|
|
7
|
+
const [selectedVariant, setSelectedVariant] = React.useState<ProgressVariant>(undefined);
|
|
8
|
+
|
|
9
|
+
const progressVariants: ProgressVariant[] = [undefined, 'success', 'warning', 'danger'];
|
|
10
|
+
|
|
11
|
+
const capitalize = (input: string) => input[0].toUpperCase() + input.substring(1);
|
|
12
|
+
const formatVariantName = (variant: ProgressVariant) => (variant ? capitalize(variant) : 'Default');
|
|
13
|
+
|
|
14
|
+
const variantOptions = progressVariants.map(variant => (
|
|
15
|
+
<Radio
|
|
16
|
+
id={`progress-helper-text-${variant}-selector`}
|
|
17
|
+
label={`${formatVariantName(variant)} variant`}
|
|
18
|
+
isChecked={variant === selectedVariant}
|
|
19
|
+
onChange={() => setSelectedVariant(variant)}
|
|
20
|
+
key={formatVariantName(variant)}
|
|
21
|
+
name="Progress variant options"
|
|
22
|
+
/>
|
|
23
|
+
));
|
|
24
|
+
|
|
25
|
+
const helperTextVariant = selectedVariant === 'danger' ? 'error' : selectedVariant;
|
|
26
|
+
|
|
27
|
+
const helperText = (
|
|
28
|
+
<HelperText>
|
|
29
|
+
<HelperTextItem variant={helperTextVariant}>
|
|
30
|
+
{`${formatVariantName(selectedVariant)} variant is being displayed`}
|
|
31
|
+
</HelperTextItem>
|
|
32
|
+
</HelperText>
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<>
|
|
37
|
+
{variantOptions}
|
|
38
|
+
<br />
|
|
39
|
+
<Progress value={33} title="Title" helperText={helperText} variant={selectedVariant} />
|
|
40
|
+
</>
|
|
41
|
+
);
|
|
42
|
+
};
|