@patternfly/react-core 6.2.1-prerelease.10 → 6.2.1-prerelease.12

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 (147) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Content/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/TimePicker/package.json +1 -1
  74. package/dist/dynamic/components/Timestamp/package.json +1 -1
  75. package/dist/dynamic/components/Title/package.json +1 -1
  76. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  77. package/dist/dynamic/components/Toolbar/package.json +1 -1
  78. package/dist/dynamic/components/Tooltip/package.json +1 -1
  79. package/dist/dynamic/components/TreeView/package.json +1 -1
  80. package/dist/dynamic/components/Truncate/package.json +1 -1
  81. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/package.json +1 -1
  83. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/esm/components/Progress/ProgressContainer.d.ts.map +1 -1
  115. package/dist/esm/components/Progress/ProgressContainer.js +12 -6
  116. package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
  117. package/dist/esm/components/TreeView/TreeViewListItem.d.ts +2 -2
  118. package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  119. package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
  120. package/dist/esm/components/Truncate/Truncate.js +4 -5
  121. package/dist/esm/components/Truncate/Truncate.js.map +1 -1
  122. package/dist/js/components/Progress/ProgressContainer.d.ts.map +1 -1
  123. package/dist/js/components/Progress/ProgressContainer.js +10 -4
  124. package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
  125. package/dist/js/components/TreeView/TreeViewListItem.d.ts +2 -2
  126. package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  127. package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
  128. package/dist/js/components/Truncate/Truncate.js +4 -5
  129. package/dist/js/components/Truncate/Truncate.js.map +1 -1
  130. package/dist/umd/assets/{output-yL8pnk-q.css → output-BuC6xX4y.css} +17879 -17878
  131. package/dist/umd/react-core.min.js +3 -3
  132. package/helpers/package.json +1 -1
  133. package/layouts/package.json +1 -1
  134. package/next/package.json +1 -1
  135. package/package.json +2 -2
  136. package/src/components/CodeBlock/examples/CodeBlockBasic.tsx +1 -1
  137. package/src/components/CodeBlock/examples/CodeBlockExpandable.tsx +10 -3
  138. package/src/components/Progress/ProgressContainer.tsx +23 -16
  139. package/src/components/TreeView/TreeViewListItem.tsx +2 -2
  140. package/src/components/TreeView/__tests__/TreeView.test.tsx +26 -1
  141. package/src/components/TreeView/__tests__/TreeViewList.test.tsx +46 -0
  142. package/src/components/TreeView/__tests__/TreeViewListItem.test.tsx +278 -156
  143. package/src/components/TreeView/__tests__/TreeViewSearch.test.tsx +12 -1
  144. package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +9 -0
  145. package/src/components/Truncate/Truncate.tsx +9 -10
  146. package/src/components/Truncate/__tests__/Truncate.test.tsx +1 -1
  147. package/src/components/Truncate/__tests__/__snapshots__/Truncate.test.tsx.snap +35 -32
@@ -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.2.1-prerelease.9","private":true}
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.2.1-prerelease.11","private":true}
@@ -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.2.1-prerelease.9","private":true}
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.2.1-prerelease.11","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.2.1-prerelease.9","private":true}
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.2.1-prerelease.11","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.2.1-prerelease.10",
3
+ "version": "6.2.1-prerelease.12",
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",
@@ -63,5 +63,5 @@
63
63
  "react": "^17 || ^18 || ^19",
64
64
  "react-dom": "^17 || ^18 || ^19"
65
65
  },
66
- "gitHead": "90ff9367d3999b6f80ee32f43b25e00eaf0fe6e0"
66
+ "gitHead": "f4c999c9871ae063b285c4f324bdc4e82d6b7118"
67
67
  }
@@ -38,7 +38,7 @@ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs`;
38
38
  <ClipboardCopyButton
39
39
  id="basic-copy-button"
40
40
  textId="code-content"
41
- aria-label="Copy to clipboard"
41
+ aria-label="Copy to clipboard basic example code block"
42
42
  onClick={(e) => onClick(e, code)}
43
43
  exitDelay={copied ? 1500 : 600}
44
44
  maxWidth="110px"
@@ -17,6 +17,7 @@ export const ExpandableCodeBlock: React.FunctionComponent = () => {
17
17
  const [isRunning, setisRunning] = useState(false);
18
18
  const runText: string = 'Run in web terminal';
19
19
  const doneRunText: string = 'Running in web terminal';
20
+ const toggleId: string = 'expandable-code-toggle';
20
21
 
21
22
  const onToggle = (isExpanded) => {
22
23
  setIsExpanded(isExpanded);
@@ -85,12 +86,18 @@ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs`;
85
86
  <CodeBlock actions={actions}>
86
87
  <CodeBlockCode>
87
88
  {code}
88
- <ExpandableSection isExpanded={isExpanded} isDetached contentId="code-block-expand">
89
+ <ExpandableSection isExpanded={isExpanded} isDetached contentId="code-block-expand" toggleId={toggleId}>
89
90
  {expandedCode}
90
91
  </ExpandableSection>
91
92
  </CodeBlockCode>
92
- <ExpandableSectionToggle isExpanded={isExpanded} onToggle={onToggle} contentId="code-block-expand" direction="up">
93
- {isExpanded ? 'Show Less' : 'Show More'}
93
+ <ExpandableSectionToggle
94
+ isExpanded={isExpanded}
95
+ onToggle={onToggle}
96
+ contentId="code-block-expand"
97
+ direction="up"
98
+ toggleId={toggleId}
99
+ >
100
+ {isExpanded ? 'Show less expandable example content' : 'Show more expandable example content'}
94
101
  </ExpandableSectionToggle>
95
102
  </CodeBlock>
96
103
  );
@@ -1,4 +1,4 @@
1
- import { Fragment, useState } from 'react';
1
+ import { Fragment, useState, useRef, useEffect } from 'react';
2
2
  import progressStyle from '@patternfly/react-styles/css/components/Progress/progress';
3
3
  import { css } from '@patternfly/react-styles';
4
4
  import { Tooltip, TooltipPosition } from '../Tooltip';
@@ -80,22 +80,31 @@ export const ProgressContainer: React.FunctionComponent<ProgressContainerProps>
80
80
  }: ProgressContainerProps) => {
81
81
  const StatusIcon = variantToIcon.hasOwnProperty(variant) && variantToIcon[variant];
82
82
  const [tooltip, setTooltip] = useState('');
83
- const onMouseEnter = (event: any) => {
83
+ const titleRef = useRef(null);
84
+ const updateTooltip = (event: any) => {
84
85
  if (event.target.offsetWidth < event.target.scrollWidth) {
85
86
  setTooltip(title || event.target.innerHTML);
86
87
  } else {
87
88
  setTooltip('');
88
89
  }
89
90
  };
91
+
92
+ useEffect(() => {
93
+ if (tooltip !== '') {
94
+ titleRef.current.focus();
95
+ }
96
+ }, [tooltip]);
97
+
98
+ const _isTruncatedAndString = isTitleTruncated && typeof title === 'string';
90
99
  const Title = (
91
100
  <div
92
- className={css(
93
- progressStyle.progressDescription,
94
- isTitleTruncated && typeof title === 'string' && progressStyle.modifiers.truncate
95
- )}
101
+ className={css(progressStyle.progressDescription, _isTruncatedAndString && progressStyle.modifiers.truncate)}
96
102
  id={`${parentId}-description`}
97
- aria-hidden="true"
98
- onMouseEnter={isTitleTruncated && typeof title === 'string' ? onMouseEnter : null}
103
+ aria-hidden={_isTruncatedAndString ? null : 'true'}
104
+ onMouseEnter={_isTruncatedAndString ? updateTooltip : null}
105
+ onFocus={_isTruncatedAndString ? updateTooltip : null}
106
+ {...(_isTruncatedAndString && { tabIndex: 0 })}
107
+ ref={titleRef}
99
108
  >
100
109
  {title}
101
110
  </div>
@@ -103,14 +112,12 @@ export const ProgressContainer: React.FunctionComponent<ProgressContainerProps>
103
112
 
104
113
  return (
105
114
  <Fragment>
106
- {title &&
107
- (tooltip ? (
108
- <Tooltip position={tooltipPosition} content={tooltip} isVisible>
109
- {Title}
110
- </Tooltip>
111
- ) : (
112
- Title
113
- ))}
115
+ {title && (
116
+ <>
117
+ {tooltip && <Tooltip position={tooltipPosition} content={tooltip} isVisible triggerRef={titleRef} />}
118
+ {Title}
119
+ </>
120
+ )}
114
121
  {(measureLocation !== ProgressMeasureLocation.none || StatusIcon) && (
115
122
  <div className={css(progressStyle.progressStatus)} aria-hidden="true">
116
123
  {(measureLocation === ProgressMeasureLocation.top || measureLocation === ProgressMeasureLocation.outside) && (
@@ -50,11 +50,11 @@ export interface TreeViewListItemProps {
50
50
  /** Internal content of a tree view item. */
51
51
  name: React.ReactNode;
52
52
  /** Callback for item checkbox selection. */
53
- onCheck?: (event: React.ChangeEvent<HTMLInputElement>, item: TreeViewDataItem, parent: TreeViewDataItem) => void;
53
+ onCheck?: (event: React.ChangeEvent<HTMLInputElement>, item: TreeViewDataItem, parentItem: TreeViewDataItem) => void;
54
54
  /** Callback for item selection. Note: calling event.preventDefault() will prevent the node
55
55
  * from toggling.
56
56
  */
57
- onSelect?: (event: React.MouseEvent, item: TreeViewDataItem, parent: TreeViewDataItem) => void;
57
+ onSelect?: (event: React.MouseEvent, item: TreeViewDataItem, parentItem: TreeViewDataItem) => void;
58
58
  /** Callback for expanding a node with children. */
59
59
  onExpand?: (event: React.MouseEvent, item: TreeViewDataItem, parentItem: TreeViewDataItem) => void;
60
60
  /** Callback for collapsing a node with children. */
@@ -3,10 +3,20 @@ import userEvent from '@testing-library/user-event';
3
3
  import { TreeView } from '../TreeView';
4
4
 
5
5
  jest.mock('../TreeViewList', () => ({
6
- TreeViewList: ({ children, isNested, toolbar }) => (
6
+ TreeViewList: ({
7
+ children,
8
+ isNested,
9
+ toolbar,
10
+ 'aria-label': ariaLabel,
11
+ 'aria-labelledby': ariaLabelledBy,
12
+ isMultiSelectable
13
+ }) => (
7
14
  <div data-testid="TreeViewList-mock">
8
15
  <p>{`TreeViewList isNested: ${isNested}`}</p>
9
16
  <p>{`TreeViewList toolbar: ${toolbar}`}</p>
17
+ <p>{`TreeViewList aria-label: ${ariaLabel}`}</p>
18
+ <p>{`TreeViewList aria-labelledBy: ${ariaLabelledBy}`}</p>
19
+ <p>{`TreeViewList isMultiSelectable: ${isMultiSelectable}`}</p>
10
20
  <div data-testid="TreeViewList-children">{children}</div>
11
21
  </div>
12
22
  )
@@ -131,6 +141,21 @@ test('Passes toolbar to TreeViewList', () => {
131
141
 
132
142
  expect(screen.getByText('TreeViewList toolbar: Toolbar content')).toBeVisible();
133
143
  });
144
+ test('Passes aria-label to TreeViewList', () => {
145
+ render(<TreeView aria-label="Test aria-label" data={[basicData]} />);
146
+
147
+ expect(screen.getByText('TreeViewList aria-label: Test aria-label')).toBeVisible();
148
+ });
149
+ test('Passes aria-labelledby to TreeViewList', () => {
150
+ render(<TreeView aria-labelledby="test-aria-labelledby" data={[basicData]} />);
151
+
152
+ expect(screen.getByText('TreeViewList aria-labelledBy: test-aria-labelledby')).toBeVisible();
153
+ });
154
+ test('Passes isMultiSelectable to TreeViewList', () => {
155
+ render(<TreeView isMultiSelectable={true} data={[basicData]} />);
156
+
157
+ expect(screen.getByText('TreeViewList isMultiSelectable: true')).toBeVisible();
158
+ });
134
159
  test('Passes data as children TreeViewList', () => {
135
160
  render(<TreeView data={[basicData]} />);
136
161
 
@@ -32,9 +32,55 @@ test(`Renders toolbar content when toolbar prop is passed`, () => {
32
32
  expect(screen.getByText('Toolbar content')).toBeInTheDocument();
33
33
  });
34
34
 
35
+ test(`Renders Divider when toolbar prop is passed`, () => {
36
+ render(<TreeViewList toolbar="Toolbar content">Content</TreeViewList>);
37
+
38
+ expect(screen.getByRole('separator')).toBeInTheDocument();
39
+ });
40
+
41
+ test('Renders with aria-label when passed', () => {
42
+ render(<TreeViewList aria-label="Test aria-label">Content</TreeViewList>);
43
+
44
+ expect(screen.getByRole('tree')).toHaveAccessibleName('Test aria-label');
45
+ });
46
+
47
+ test('Renders with aria-labelledby when passed', () => {
48
+ render(
49
+ <>
50
+ <div id="label">Labeling content</div>
51
+ <TreeViewList aria-labelledby="label">Content</TreeViewList>
52
+ </>
53
+ );
54
+
55
+ expect(screen.getByRole('tree')).toHaveAccessibleName('Labeling content');
56
+ });
57
+
58
+ test('Renders with aria-multiselectable of false by default', () => {
59
+ render(<TreeViewList>Content</TreeViewList>);
60
+
61
+ expect(screen.getByRole('tree')).toHaveAttribute('aria-multiselectable', 'false');
62
+ });
63
+
64
+ test('Renders with aria-multiselectable of true when isMultiSelectable is true', () => {
65
+ render(<TreeViewList isMultiSelectable>Content</TreeViewList>);
66
+
67
+ expect(screen.getByRole('tree')).toHaveAttribute('aria-multiselectable', 'true');
68
+ });
69
+
70
+ test('Does not render with aria-multiselectable when isNested is true', () => {
71
+ render(
72
+ <TreeViewList isMultiSelectable isNested>
73
+ Content
74
+ </TreeViewList>
75
+ );
76
+
77
+ expect(screen.getByRole('group')).not.toHaveAttribute('aria-multiselectable');
78
+ });
79
+
35
80
  test(`Does not render toolbar content when toolbar prop is not passed`, () => {
36
81
  render(<TreeViewList>Content</TreeViewList>);
37
82
 
83
+ expect(screen.queryByRole('tree')?.previousElementSibling).not.toBeInTheDocument();
38
84
  expect(screen.queryByRole('separator')).not.toBeInTheDocument();
39
85
  });
40
86