@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.
Files changed (63) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/esm/components/HelperText/__mocks__/HelperText.d.ts +4 -0
  3. package/dist/esm/components/HelperText/__mocks__/HelperText.d.ts.map +1 -0
  4. package/dist/esm/components/HelperText/__mocks__/HelperText.js +5 -0
  5. package/dist/esm/components/HelperText/__mocks__/HelperText.js.map +1 -0
  6. package/dist/esm/components/HelperText/__mocks__/HelperTextItem.d.ts +4 -0
  7. package/dist/esm/components/HelperText/__mocks__/HelperTextItem.d.ts.map +1 -0
  8. package/dist/esm/components/HelperText/__mocks__/HelperTextItem.js +5 -0
  9. package/dist/esm/components/HelperText/__mocks__/HelperTextItem.js.map +1 -0
  10. package/dist/esm/components/HelperText/__mocks__/index.d.ts +3 -0
  11. package/dist/esm/components/HelperText/__mocks__/index.d.ts.map +1 -0
  12. package/dist/esm/components/HelperText/__mocks__/index.js +3 -0
  13. package/dist/esm/components/HelperText/__mocks__/index.js.map +1 -0
  14. package/dist/esm/components/Progress/Progress.d.ts +4 -0
  15. package/dist/esm/components/Progress/Progress.d.ts.map +1 -1
  16. package/dist/esm/components/Progress/Progress.js +2 -2
  17. package/dist/esm/components/Progress/Progress.js.map +1 -1
  18. package/dist/esm/components/Progress/ProgressContainer.d.ts +4 -0
  19. package/dist/esm/components/Progress/ProgressContainer.d.ts.map +1 -1
  20. package/dist/esm/components/Progress/ProgressContainer.js +4 -2
  21. package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
  22. package/dist/esm/components/Progress/ProgressHelperText.d.ts +9 -0
  23. package/dist/esm/components/Progress/ProgressHelperText.d.ts.map +1 -0
  24. package/dist/esm/components/Progress/ProgressHelperText.js +9 -0
  25. package/dist/esm/components/Progress/ProgressHelperText.js.map +1 -0
  26. package/dist/js/components/HelperText/__mocks__/HelperText.d.ts +4 -0
  27. package/dist/js/components/HelperText/__mocks__/HelperText.d.ts.map +1 -0
  28. package/dist/js/components/HelperText/__mocks__/HelperText.js +10 -0
  29. package/dist/js/components/HelperText/__mocks__/HelperText.js.map +1 -0
  30. package/dist/js/components/HelperText/__mocks__/HelperTextItem.d.ts +4 -0
  31. package/dist/js/components/HelperText/__mocks__/HelperTextItem.d.ts.map +1 -0
  32. package/dist/js/components/HelperText/__mocks__/HelperTextItem.js +10 -0
  33. package/dist/js/components/HelperText/__mocks__/HelperTextItem.js.map +1 -0
  34. package/dist/js/components/HelperText/__mocks__/index.d.ts +3 -0
  35. package/dist/js/components/HelperText/__mocks__/index.d.ts.map +1 -0
  36. package/dist/js/components/HelperText/__mocks__/index.js +6 -0
  37. package/dist/js/components/HelperText/__mocks__/index.js.map +1 -0
  38. package/dist/js/components/Progress/Progress.d.ts +4 -0
  39. package/dist/js/components/Progress/Progress.d.ts.map +1 -1
  40. package/dist/js/components/Progress/Progress.js +2 -2
  41. package/dist/js/components/Progress/Progress.js.map +1 -1
  42. package/dist/js/components/Progress/ProgressContainer.d.ts +4 -0
  43. package/dist/js/components/Progress/ProgressContainer.d.ts.map +1 -1
  44. package/dist/js/components/Progress/ProgressContainer.js +4 -2
  45. package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
  46. package/dist/js/components/Progress/ProgressHelperText.d.ts +9 -0
  47. package/dist/js/components/Progress/ProgressHelperText.d.ts.map +1 -0
  48. package/dist/js/components/Progress/ProgressHelperText.js +13 -0
  49. package/dist/js/components/Progress/ProgressHelperText.js.map +1 -0
  50. package/dist/umd/react-core.min.css +2174 -2174
  51. package/dist/umd/react-core.min.js +1 -1
  52. package/package.json +2 -2
  53. package/src/components/HelperText/__mocks__/HelperText.tsx +9 -0
  54. package/src/components/HelperText/__mocks__/HelperTextItem.tsx +9 -0
  55. package/src/components/HelperText/__mocks__/index.ts +2 -0
  56. package/src/components/Progress/Progress.tsx +6 -0
  57. package/src/components/Progress/ProgressContainer.tsx +8 -1
  58. package/src/components/Progress/ProgressHelperText.tsx +20 -0
  59. package/src/components/Progress/__tests__/Progress.test.tsx +13 -1
  60. package/src/components/Progress/__tests__/ProgressHelperText.test.tsx +35 -0
  61. package/src/components/Progress/__tests__/__snapshots__/ProgressHelperText.test.tsx.snap +11 -0
  62. package/src/components/Progress/examples/Progress.md +4 -0
  63. 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.259.0",
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": "7db13002a4532f26aa6982731a25c208224ae8da"
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
+ );
@@ -0,0 +1,2 @@
1
+ export * from './HelperText';
2
+ export * from './HelperTextItem';
@@ -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,11 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Matches the snapshot 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ class="pf-c-progress__helper-text"
7
+ >
8
+ test
9
+ </div>
10
+ </DocumentFragment>
11
+ `;
@@ -74,3 +74,7 @@ propComponents: ['Progress']
74
74
  ### Title outside of progress bar
75
75
  ```ts file="./ProgressTitleOutsideOfProgressBar.tsx"
76
76
  ```
77
+
78
+ ### Helper text
79
+ ```ts file="./ProgressHelperText.tsx" isBeta
80
+ ```
@@ -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
+ };