@patternfly/react-core 6.3.1-prerelease.1 → 6.3.1-prerelease.10

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 (258) hide show
  1. package/CHANGELOG.md +48 -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/ClipboardCopy/ClipboardCopy.d.ts +2 -0
  115. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  116. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +3 -3
  117. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  118. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.d.ts +2 -2
  119. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
  120. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
  121. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
  122. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.d.ts +0 -1
  123. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.d.ts.map +1 -1
  124. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js +2 -2
  125. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
  126. package/dist/esm/components/JumpLinks/JumpLinks.d.ts +2 -0
  127. package/dist/esm/components/JumpLinks/JumpLinks.d.ts.map +1 -1
  128. package/dist/esm/components/JumpLinks/JumpLinks.js +15 -3
  129. package/dist/esm/components/JumpLinks/JumpLinks.js.map +1 -1
  130. package/dist/esm/components/Label/LabelGroup.js +2 -2
  131. package/dist/esm/components/Label/LabelGroup.js.map +1 -1
  132. package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts +2 -0
  133. package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts.map +1 -1
  134. package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.js +2 -2
  135. package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.js.map +1 -1
  136. package/dist/esm/components/Progress/Progress.d.ts +2 -0
  137. package/dist/esm/components/Progress/Progress.d.ts.map +1 -1
  138. package/dist/esm/components/Progress/Progress.js +6 -2
  139. package/dist/esm/components/Progress/Progress.js.map +1 -1
  140. package/dist/esm/components/Progress/ProgressBar.d.ts +1 -0
  141. package/dist/esm/components/Progress/ProgressBar.d.ts.map +1 -1
  142. package/dist/esm/components/Progress/ProgressBar.js +1 -1
  143. package/dist/esm/components/Progress/ProgressBar.js.map +1 -1
  144. package/dist/esm/components/Progress/ProgressContainer.js +1 -1
  145. package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
  146. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  147. package/dist/esm/components/Tabs/Tabs.js +3 -0
  148. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  149. package/dist/esm/components/Tooltip/Tooltip.d.ts.map +1 -1
  150. package/dist/esm/components/Tooltip/Tooltip.js +68 -3
  151. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  152. package/dist/esm/components/Wizard/WizardNavItem.js +1 -1
  153. package/dist/esm/components/Wizard/WizardNavItem.js.map +1 -1
  154. package/dist/esm/deprecated/components/Wizard/WizardNavItem.js +1 -1
  155. package/dist/esm/deprecated/components/Wizard/WizardNavItem.js.map +1 -1
  156. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +2 -0
  157. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  158. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +3 -3
  159. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  160. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.d.ts +2 -2
  161. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
  162. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
  163. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
  164. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.d.ts +0 -1
  165. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.d.ts.map +1 -1
  166. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js +2 -2
  167. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
  168. package/dist/js/components/JumpLinks/JumpLinks.d.ts +2 -0
  169. package/dist/js/components/JumpLinks/JumpLinks.d.ts.map +1 -1
  170. package/dist/js/components/JumpLinks/JumpLinks.js +14 -2
  171. package/dist/js/components/JumpLinks/JumpLinks.js.map +1 -1
  172. package/dist/js/components/Label/LabelGroup.js +2 -2
  173. package/dist/js/components/Label/LabelGroup.js.map +1 -1
  174. package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts +2 -0
  175. package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts.map +1 -1
  176. package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.js +2 -2
  177. package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.js.map +1 -1
  178. package/dist/js/components/Progress/Progress.d.ts +2 -0
  179. package/dist/js/components/Progress/Progress.d.ts.map +1 -1
  180. package/dist/js/components/Progress/Progress.js +6 -2
  181. package/dist/js/components/Progress/Progress.js.map +1 -1
  182. package/dist/js/components/Progress/ProgressBar.d.ts +1 -0
  183. package/dist/js/components/Progress/ProgressBar.d.ts.map +1 -1
  184. package/dist/js/components/Progress/ProgressBar.js +1 -1
  185. package/dist/js/components/Progress/ProgressBar.js.map +1 -1
  186. package/dist/js/components/Progress/ProgressContainer.js +1 -1
  187. package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
  188. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  189. package/dist/js/components/Tabs/Tabs.js +3 -0
  190. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  191. package/dist/js/components/Tooltip/Tooltip.d.ts.map +1 -1
  192. package/dist/js/components/Tooltip/Tooltip.js +68 -3
  193. package/dist/js/components/Tooltip/Tooltip.js.map +1 -1
  194. package/dist/js/components/Wizard/WizardNavItem.js +1 -1
  195. package/dist/js/components/Wizard/WizardNavItem.js.map +1 -1
  196. package/dist/js/deprecated/components/Wizard/WizardNavItem.js +1 -1
  197. package/dist/js/deprecated/components/Wizard/WizardNavItem.js.map +1 -1
  198. package/dist/styles/base-no-reset.css +1209 -1
  199. package/dist/styles/base.css +1213 -1
  200. package/dist/umd/assets/{output-CqyiGvp-.css → output-R-jtt1kZ.css} +20170 -19881
  201. package/dist/umd/react-core.min.js +3 -3
  202. package/helpers/package.json +1 -1
  203. package/layouts/package.json +1 -1
  204. package/next/package.json +1 -1
  205. package/package.json +6 -6
  206. package/src/components/ClipboardCopy/ClipboardCopy.tsx +5 -5
  207. package/src/components/ClipboardCopy/ClipboardCopyButton.tsx +2 -4
  208. package/src/components/ClipboardCopy/ClipboardCopyToggle.tsx +0 -3
  209. package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +16 -0
  210. package/src/components/ClipboardCopy/__tests__/ClipboardCopyButton.test.tsx +5 -28
  211. package/src/components/ClipboardCopy/__tests__/ClipboardCopyToggle.test.tsx +3 -4
  212. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +1 -1
  213. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyButton.test.tsx.snap +0 -1
  214. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +0 -1
  215. package/src/components/ClipboardCopy/examples/ClipboardCopyBasic.tsx +1 -1
  216. package/src/components/ClipboardCopy/examples/ClipboardCopyExpanded.tsx +7 -1
  217. package/src/components/ClipboardCopy/examples/ClipboardCopyExpandedWithArray.tsx +7 -1
  218. package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompact.tsx +1 -1
  219. package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompactCode.tsx +7 -1
  220. package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompactInSentence.tsx +19 -3
  221. package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompactTruncation.tsx +14 -2
  222. package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompactWithAdditionalAction.tsx +1 -0
  223. package/src/components/ClipboardCopy/examples/ClipboardCopyJSONObject.tsx +8 -1
  224. package/src/components/ClipboardCopy/examples/ClipboardCopyReadOnly.tsx +1 -1
  225. package/src/components/ClipboardCopy/examples/ClipboardCopyReadOnlyExpanded.tsx +8 -1
  226. package/src/components/ClipboardCopy/examples/ClipboardCopyReadOnlyExpandedByDefault.tsx +9 -1
  227. package/src/components/JumpLinks/JumpLinks.tsx +33 -5
  228. package/src/components/JumpLinks/__tests__/JumpLinks.test.tsx +196 -1
  229. package/src/components/JumpLinks/__tests__/__snapshots__/JumpLinks.test.tsx.snap +9 -9
  230. package/src/components/JumpLinks/examples/JumpLinksBasic.tsx +1 -1
  231. package/src/components/JumpLinks/examples/JumpLinksExpandableVerticalWithSubsection.tsx +2 -2
  232. package/src/components/JumpLinks/examples/JumpLinksVertical.tsx +1 -1
  233. package/src/components/JumpLinks/examples/JumpLinksVerticalWithLabel.tsx +1 -1
  234. package/src/components/JumpLinks/examples/JumpLinksWithCenteredList.tsx +1 -1
  235. package/src/components/JumpLinks/examples/JumpLinksWithLabel.tsx +2 -2
  236. package/src/components/Label/LabelGroup.tsx +3 -3
  237. package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +3 -3
  238. package/src/components/MultipleFileUpload/MultipleFileUploadStatusItem.tsx +4 -0
  239. package/src/components/MultipleFileUpload/examples/MultipleFileUploadBasic.tsx +5 -4
  240. package/src/components/Progress/Progress.tsx +9 -1
  241. package/src/components/Progress/ProgressBar.tsx +2 -1
  242. package/src/components/Progress/ProgressContainer.tsx +1 -1
  243. package/src/components/Progress/__tests__/Generated/__snapshots__/ProgressBar.test.tsx.snap +1 -0
  244. package/src/components/Progress/__tests__/ProgressBar.test.tsx +19 -0
  245. package/src/components/Progress/examples/Progress.md +67 -23
  246. package/src/components/Progress/examples/ProgressHelperText.tsx +8 -2
  247. package/src/components/Tabs/Tabs.tsx +4 -0
  248. package/src/components/Tabs/__tests__/Tabs.test.tsx +48 -0
  249. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +14 -14
  250. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +3 -3
  251. package/src/components/Tooltip/Tooltip.tsx +76 -3
  252. package/src/components/Tooltip/__tests__/Tooltip.test.tsx +126 -0
  253. package/src/components/Wizard/WizardNavItem.tsx +1 -1
  254. package/src/demos/DataList/examples/DataListBasic.tsx +74 -19
  255. package/src/demos/DataList/examples/DataListStaticBottomPagination.tsx +16 -3
  256. package/src/demos/DataListDemo.md +5 -2
  257. package/src/demos/examples/PrimaryDetail/PrimaryDetailCardView.tsx +1 -1
  258. package/src/deprecated/components/Wizard/WizardNavItem.tsx +1 -1
@@ -8,75 +8,119 @@ propComponents: ['Progress']
8
8
  import { useState } from 'react';
9
9
 
10
10
  ## Examples
11
+
11
12
  ### Basic
13
+
12
14
  ```ts file="./ProgressBasic.tsx"
15
+
13
16
  ```
14
17
 
15
18
  ### Small
19
+
16
20
  ```ts file="./ProgressSmall.tsx"
21
+
17
22
  ```
18
23
 
19
24
  ### Large
25
+
20
26
  ```ts file="./ProgressLarge.tsx"
21
- ```
22
27
 
23
- ### Outside
24
- ```ts file="./ProgressOutside.tsx"
25
28
  ```
26
29
 
27
- ### Inside
28
- ```ts file="./ProgressInside.tsx"
29
- ```
30
+ ### Outside
30
31
 
31
- ### Success
32
- ```ts file="./ProgressSuccess.tsx"
33
- ```
32
+ ```ts file="./ProgressOutside.tsx"
34
33
 
35
- ### Failure
36
- ```ts file="./ProgressFailure.tsx"
37
34
  ```
38
35
 
39
- ### Warning
40
- ```ts file="./ProgressWarning.tsx"
41
- ```
36
+ ### Inside
42
37
 
43
- ### Inside success
44
- ```ts file="./ProgressInsideSuccess.tsx"
45
- ```
38
+ ```ts file="./ProgressInside.tsx"
46
39
 
47
- ### Outside failure
48
- ```ts file="./ProgressOutsideFailure.tsx"
49
40
  ```
50
41
 
51
42
  ### Single line
43
+
52
44
  ```ts file="./ProgressSingleLine.tsx"
45
+
53
46
  ```
54
47
 
55
48
  ### Without measure
49
+
56
50
  ```ts file="./ProgressWithoutMeasure.tsx"
57
- ```
58
51
 
59
- ### Failure without measure
60
- ```ts file="./ProgressFailureWithoutMeasure.tsx"
61
52
  ```
62
53
 
63
-
64
54
  ### Finite step
55
+
65
56
  ```ts file="./ProgressFiniteStep.tsx"
57
+
66
58
  ```
67
59
 
68
60
  ### Progress with step instructions
61
+
69
62
  ```ts file="./ProgressStepInstruction.tsx"
63
+
70
64
  ```
71
65
 
72
66
  ### Truncate title
67
+
73
68
  ```ts file="./ProgressTruncateTitle.tsx"
69
+
74
70
  ```
75
71
 
76
72
  ### Title outside of progress bar
73
+
77
74
  ```ts file="./ProgressTitleOutsideOfProgressBar.tsx"
75
+
78
76
  ```
79
77
 
80
78
  ### Helper text
79
+
81
80
  ```ts file="./ProgressHelperText.tsx"
81
+
82
+ ```
83
+
84
+ ## Status examples
85
+
86
+ When conveying status, you should ensure:
87
+
88
+ - There is visible helper text that explains the status.
89
+ - The helper text includes the status icon, as seen in our [basic helper text example](/components/helper-text#basic).
90
+ - The helper text is linked to the `<Progress>` component via the `aria-describedby` property, as seen in the [progress helper text example](#helper-text).
91
+
92
+ ### Success
93
+
94
+ ```ts file="./ProgressSuccess.tsx"
95
+
96
+ ```
97
+
98
+ ### Failure
99
+
100
+ ```ts file="./ProgressFailure.tsx"
101
+
102
+ ```
103
+
104
+ ### Warning
105
+
106
+ ```ts file="./ProgressWarning.tsx"
107
+
108
+ ```
109
+
110
+ ### Inside success
111
+
112
+ ```ts file="./ProgressInsideSuccess.tsx"
113
+
114
+ ```
115
+
116
+ ### Outside failure
117
+
118
+ ```ts file="./ProgressOutsideFailure.tsx"
119
+
120
+ ```
121
+
122
+ ### Failure without measure
123
+
124
+ ```ts file="./ProgressFailureWithoutMeasure.tsx"
125
+
82
126
  ```
@@ -25,7 +25,7 @@ export const ProgressHelperText: React.FunctionComponent = () => {
25
25
  const helperTextVariant = selectedVariant === 'danger' ? 'error' : selectedVariant;
26
26
 
27
27
  const helperText = (
28
- <HelperText>
28
+ <HelperText id="progress-helper-text-example-help-text">
29
29
  <HelperTextItem variant={helperTextVariant}>
30
30
  {`${formatVariantName(selectedVariant)} variant is being displayed`}
31
31
  </HelperTextItem>
@@ -36,7 +36,13 @@ export const ProgressHelperText: React.FunctionComponent = () => {
36
36
  <>
37
37
  {variantOptions}
38
38
  <br />
39
- <Progress value={33} title="Title" helperText={helperText} variant={selectedVariant} />
39
+ <Progress
40
+ aria-describedby="progress-helper-text-example-help-text"
41
+ value={33}
42
+ title="Title"
43
+ helperText={helperText}
44
+ variant={selectedVariant}
45
+ />
40
46
  </>
41
47
  );
42
48
  };
@@ -438,6 +438,10 @@ class Tabs extends Component<TabsProps, TabsState> {
438
438
  } else if (prevState.enableScrollButtons && !enableScrollButtons) {
439
439
  this.setState({ showScrollButtons: false });
440
440
  }
441
+
442
+ if (prevState.uncontrolledIsExpandedLocal !== this.state.uncontrolledIsExpandedLocal) {
443
+ this.setAccentStyles(true);
444
+ }
441
445
  }
442
446
 
443
447
  static getDerivedStateFromProps(nextProps: TabsProps, prevState: TabsState) {
@@ -1,4 +1,5 @@
1
1
  import { render, screen, act } from '@testing-library/react';
2
+ import userEvent from '@testing-library/user-event';
2
3
  import { Tabs } from '../Tabs';
3
4
  import styles from '@patternfly/react-styles/css/components/Tabs/tabs';
4
5
  import { Tab } from '../Tab';
@@ -50,6 +51,53 @@ test(`Does not render with class ${styles.modifiers.initializingAccent} when com
50
51
  jest.useRealTimers();
51
52
  });
52
53
 
54
+ test(`Renders with class ${styles.modifiers.initializingAccent} when uncontrolled expandable component initially mounts`, async () => {
55
+ const user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime });
56
+
57
+ render(
58
+ <Tabs
59
+ isVertical
60
+ expandable={{ default: 'expandable' }}
61
+ toggleText="Jump to section"
62
+ defaultIsExpanded={false}
63
+ role="region"
64
+ >
65
+ <Tab title="Test title" eventKey={0}>
66
+ Tab Content
67
+ </Tab>
68
+ </Tabs>
69
+ );
70
+
71
+ jest.useFakeTimers();
72
+ await user.click(screen.getByRole('button', { name: 'Jump to section' }));
73
+ act(() => {
74
+ jest.advanceTimersByTime(100);
75
+ });
76
+ expect(screen.getByRole('region')).toHaveClass(styles.modifiers.initializingAccent);
77
+ jest.useRealTimers();
78
+ });
79
+
80
+ test(`Does not render with class ${styles.modifiers.initializingAccent} when uncontrolled expandable component is finished mounting`, async () => {
81
+ const user = userEvent.setup();
82
+
83
+ render(
84
+ <Tabs
85
+ isVertical
86
+ expandable={{ default: 'expandable' }}
87
+ toggleText="Jump to section"
88
+ defaultIsExpanded={false}
89
+ role="region"
90
+ >
91
+ <Tab title="Test title" eventKey={0}>
92
+ Tab Content
93
+ </Tab>
94
+ </Tabs>
95
+ );
96
+
97
+ await user.click(screen.getByRole('button', { name: 'Jump to section' }));
98
+ expect(screen.getByRole('region')).not.toHaveClass(styles.modifiers.initializingAccent);
99
+ });
100
+
53
101
  test('should render simple tabs', () => {
54
102
  const { asFragment } = render(
55
103
  <Tabs id="simpleTabs">
@@ -5,7 +5,7 @@ exports[`should render accessible tabs 1`] = `
5
5
  <nav
6
6
  aria-label="accessible Tabs example"
7
7
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
8
- data-ouia-component-id="OUIA-Generated-Tabs-12"
8
+ data-ouia-component-id="OUIA-Generated-Tabs-14"
9
9
  data-ouia-component-type="PF6/Tabs"
10
10
  data-ouia-safe="true"
11
11
  id="accessibleTabs"
@@ -122,7 +122,7 @@ exports[`should render box tabs 1`] = `
122
122
  <DocumentFragment>
123
123
  <div
124
124
  class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-initializing-accent"
125
- data-ouia-component-id="OUIA-Generated-Tabs-11"
125
+ data-ouia-component-id="OUIA-Generated-Tabs-13"
126
126
  data-ouia-component-type="PF6/Tabs"
127
127
  data-ouia-safe="true"
128
128
  id="boxTabs"
@@ -281,7 +281,7 @@ exports[`should render box tabs of secondary variant 1`] = `
281
281
  <DocumentFragment>
282
282
  <div
283
283
  class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-secondary pf-m-initializing-accent"
284
- data-ouia-component-id="OUIA-Generated-Tabs-18"
284
+ data-ouia-component-id="OUIA-Generated-Tabs-20"
285
285
  data-ouia-component-type="PF6/Tabs"
286
286
  data-ouia-safe="true"
287
287
  id="boxSecondaryVariantTabs"
@@ -398,7 +398,7 @@ exports[`should render expandable vertical tabs 1`] = `
398
398
  <DocumentFragment>
399
399
  <div
400
400
  class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-expandable pf-m-initializing-accent"
401
- data-ouia-component-id="OUIA-Generated-Tabs-9"
401
+ data-ouia-component-id="OUIA-Generated-Tabs-11"
402
402
  data-ouia-component-type="PF6/Tabs"
403
403
  data-ouia-safe="true"
404
404
  id="verticalTabs"
@@ -413,7 +413,7 @@ exports[`should render expandable vertical tabs 1`] = `
413
413
  <button
414
414
  aria-labelledby="generated-id-text generated-id-button"
415
415
  class="pf-v6-c-button pf-m-plain"
416
- data-ouia-component-id="OUIA-Generated-Button-plain-3"
416
+ data-ouia-component-id="OUIA-Generated-Button-plain-5"
417
417
  data-ouia-component-type="PF6/Button"
418
418
  data-ouia-safe="true"
419
419
  id="generated-id-button"
@@ -605,7 +605,7 @@ exports[`should render filled tabs 1`] = `
605
605
  <DocumentFragment>
606
606
  <div
607
607
  class="pf-v6-c-tabs pf-m-animate-current pf-m-fill pf-m-initializing-accent"
608
- data-ouia-component-id="OUIA-Generated-Tabs-13"
608
+ data-ouia-component-id="OUIA-Generated-Tabs-15"
609
609
  data-ouia-component-type="PF6/Tabs"
610
610
  data-ouia-safe="true"
611
611
  id="filledTabs"
@@ -722,7 +722,7 @@ exports[`should render simple tabs 1`] = `
722
722
  <DocumentFragment>
723
723
  <div
724
724
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
725
- data-ouia-component-id="OUIA-Generated-Tabs-4"
725
+ data-ouia-component-id="OUIA-Generated-Tabs-6"
726
726
  data-ouia-component-type="PF6/Tabs"
727
727
  data-ouia-safe="true"
728
728
  id="simpleTabs"
@@ -881,7 +881,7 @@ exports[`should render subtabs 1`] = `
881
881
  <DocumentFragment>
882
882
  <div
883
883
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
884
- data-ouia-component-id="OUIA-Generated-Tabs-14"
884
+ data-ouia-component-id="OUIA-Generated-Tabs-16"
885
885
  data-ouia-component-type="PF6/Tabs"
886
886
  data-ouia-safe="true"
887
887
  id="primarieTabs"
@@ -967,7 +967,7 @@ exports[`should render subtabs 1`] = `
967
967
  >
968
968
  <div
969
969
  class="pf-v6-c-tabs pf-m-animate-current pf-m-subtab pf-m-initializing-accent"
970
- data-ouia-component-id="OUIA-Generated-Tabs-15"
970
+ data-ouia-component-id="OUIA-Generated-Tabs-17"
971
971
  data-ouia-component-type="PF6/Tabs"
972
972
  data-ouia-safe="true"
973
973
  id="subtabs"
@@ -1110,7 +1110,7 @@ exports[`should render tabs with eventKey Strings 1`] = `
1110
1110
  <DocumentFragment>
1111
1111
  <div
1112
1112
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
1113
- data-ouia-component-id="OUIA-Generated-Tabs-16"
1113
+ data-ouia-component-id="OUIA-Generated-Tabs-18"
1114
1114
  data-ouia-component-type="PF6/Tabs"
1115
1115
  data-ouia-safe="true"
1116
1116
  id="eventKeyTabs"
@@ -1228,7 +1228,7 @@ exports[`should render tabs with no bottom border 1`] = `
1228
1228
  <DocumentFragment>
1229
1229
  <div
1230
1230
  class="pf-v6-c-tabs pf-m-animate-current pf-m-no-border-bottom pf-m-initializing-accent"
1231
- data-ouia-component-id="OUIA-Generated-Tabs-19"
1231
+ data-ouia-component-id="OUIA-Generated-Tabs-21"
1232
1232
  data-ouia-component-type="PF6/Tabs"
1233
1233
  data-ouia-safe="true"
1234
1234
  id="noBottomBorderTabs"
@@ -1345,7 +1345,7 @@ exports[`should render tabs with separate content 1`] = `
1345
1345
  <DocumentFragment>
1346
1346
  <div
1347
1347
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
1348
- data-ouia-component-id="OUIA-Generated-Tabs-17"
1348
+ data-ouia-component-id="OUIA-Generated-Tabs-19"
1349
1349
  data-ouia-component-type="PF6/Tabs"
1350
1350
  data-ouia-safe="true"
1351
1351
  id="separateTabs"
@@ -1472,7 +1472,7 @@ exports[`should render uncontrolled tabs 1`] = `
1472
1472
  <DocumentFragment>
1473
1473
  <div
1474
1474
  class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
1475
- data-ouia-component-id="OUIA-Generated-Tabs-7"
1475
+ data-ouia-component-id="OUIA-Generated-Tabs-9"
1476
1476
  data-ouia-component-type="PF6/Tabs"
1477
1477
  data-ouia-safe="true"
1478
1478
  style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
@@ -1630,7 +1630,7 @@ exports[`should render vertical tabs 1`] = `
1630
1630
  <DocumentFragment>
1631
1631
  <div
1632
1632
  class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-initializing-accent"
1633
- data-ouia-component-id="OUIA-Generated-Tabs-8"
1633
+ data-ouia-component-id="OUIA-Generated-Tabs-10"
1634
1634
  data-ouia-component-type="PF6/Tabs"
1635
1635
  data-ouia-safe="true"
1636
1636
  id="verticalTabs"
@@ -225,7 +225,7 @@ exports[`Toolbar should render with custom label content 1`] = `
225
225
  <button
226
226
  aria-label="Close label group"
227
227
  aria-labelledby="remove_group_generated-id generated-id"
228
- class="pf-v6-c-button pf-m-plain pf-m-no-padding"
228
+ class="pf-v6-c-button pf-m-plain pf-m-small"
229
229
  data-ouia-component-id="OUIA-Generated-Button-plain-4"
230
230
  data-ouia-component-type="PF6/Button"
231
231
  data-ouia-safe="true"
@@ -241,11 +241,11 @@ exports[`Toolbar should render with custom label content 1`] = `
241
241
  fill="currentColor"
242
242
  height="1em"
243
243
  role="img"
244
- viewBox="0 0 512 512"
244
+ viewBox="0 0 352 512"
245
245
  width="1em"
246
246
  >
247
247
  <path
248
- d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"
248
+ d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
249
249
  />
250
250
  </svg>
251
251
  </span>
@@ -174,6 +174,75 @@ export const Tooltip: React.FunctionComponent<TooltipProps> = ({
174
174
  const [visible, setVisible] = useState(false);
175
175
  const popperRef = createRef<HTMLDivElement>();
176
176
 
177
+ const getTriggerRefElement = (): HTMLElement | null => {
178
+ if (typeof triggerRef === 'function') {
179
+ return triggerRef();
180
+ } else if (triggerRef && typeof triggerRef === 'object' && 'current' in triggerRef) {
181
+ return triggerRef.current;
182
+ } else if (triggerRef instanceof HTMLElement) {
183
+ return triggerRef;
184
+ }
185
+ return null;
186
+ };
187
+
188
+ const getAriaAttributeName = () => (aria !== 'none' ? `aria-${aria}` : null);
189
+
190
+ const addAriaToRefElement = (element: HTMLElement): void => {
191
+ const attributeName = getAriaAttributeName();
192
+ if (!element || !attributeName) {
193
+ return;
194
+ }
195
+
196
+ const existingAria = element.getAttribute(attributeName);
197
+ if (!existingAria || !existingAria.includes(id)) {
198
+ const newAria = existingAria ? `${existingAria} ${id}` : id;
199
+ element.setAttribute(attributeName, newAria);
200
+ }
201
+ };
202
+
203
+ const removeAriaFromRefElement = (element: HTMLElement): void => {
204
+ const attributeName = getAriaAttributeName();
205
+ if (!element || !attributeName) {
206
+ return;
207
+ }
208
+
209
+ const existingAria = element.getAttribute(attributeName);
210
+ if (!existingAria) {
211
+ return;
212
+ }
213
+ const newAria = existingAria.replace(new RegExp(`\\b${id}\\b`, 'g'), '').trim();
214
+ if (newAria) {
215
+ element.setAttribute(attributeName, newAria);
216
+ } else {
217
+ element.removeAttribute(attributeName);
218
+ }
219
+ };
220
+
221
+ const updateTriggerElementAria = (shouldAddAria: boolean): void => {
222
+ if (aria === 'none' || !triggerRef || children) {
223
+ return;
224
+ }
225
+
226
+ const triggerElement = getTriggerRefElement();
227
+ if (!triggerElement) {
228
+ return;
229
+ }
230
+
231
+ if (shouldAddAria) {
232
+ addAriaToRefElement(triggerElement);
233
+ } else {
234
+ removeAriaFromRefElement(triggerElement);
235
+ }
236
+ };
237
+
238
+ useEffect(() => {
239
+ updateTriggerElementAria(visible);
240
+
241
+ return () => {
242
+ updateTriggerElementAria(false);
243
+ };
244
+ }, [visible, aria, triggerRef, children, id]);
245
+
177
246
  const onDocumentKeyDown = (event: KeyboardEvent) => {
178
247
  if (!triggerManually) {
179
248
  if (event.key === KeyTypes.Escape && visible) {
@@ -258,8 +327,12 @@ export const Tooltip: React.FunctionComponent<TooltipProps> = ({
258
327
  }
259
328
  };
260
329
 
261
- const addAriaToTrigger = () => {
262
- if (aria === 'describedby' && children && children.props && !children.props['aria-describedby']) {
330
+ const addAriaToChildren = () => {
331
+ if (!children) {
332
+ return;
333
+ }
334
+
335
+ if (aria === 'describedby' && children.props && !children.props['aria-describedby']) {
263
336
  return cloneElement(children, { 'aria-describedby': id });
264
337
  } else if (aria === 'labelledby' && children.props && !children.props['aria-labelledby']) {
265
338
  return cloneElement(children, { 'aria-labelledby': id });
@@ -269,7 +342,7 @@ export const Tooltip: React.FunctionComponent<TooltipProps> = ({
269
342
 
270
343
  return (
271
344
  <Popper
272
- trigger={aria !== 'none' && visible ? addAriaToTrigger() : children}
345
+ trigger={aria !== 'none' && visible ? addAriaToChildren() : children}
273
346
  triggerRef={triggerRef}
274
347
  popper={content}
275
348
  popperRef={popperRef}
@@ -204,3 +204,129 @@ test('Matches snapshot', async () => {
204
204
  const tooltip = await screen.findByRole('tooltip');
205
205
  expect(tooltip).toMatchSnapshot();
206
206
  });
207
+
208
+ test('Applies aria-describedby to triggerRef element when no children are provided', async () => {
209
+ const triggerRef = createRef<HTMLButtonElement>();
210
+
211
+ render(
212
+ <>
213
+ <button ref={triggerRef}>Trigger</button>
214
+ <Tooltip id="trigger-ref-test" triggerRef={triggerRef} isVisible content="Test description" />
215
+ </>
216
+ );
217
+
218
+ await screen.findByRole('tooltip');
219
+ expect(triggerRef.current).toHaveAccessibleDescription('Test description');
220
+ });
221
+
222
+ test('Applies aria-labelledby to triggerRef element when no children are provided', async () => {
223
+ const triggerRef = createRef<HTMLButtonElement>();
224
+
225
+ render(
226
+ <>
227
+ <button ref={triggerRef}>Trigger</button>
228
+ <Tooltip id="trigger-ref-test" aria="labelledby" triggerRef={triggerRef} isVisible content="Test label" />
229
+ </>
230
+ );
231
+
232
+ await screen.findByRole('tooltip');
233
+ expect(triggerRef.current).toHaveAccessibleName('Test label');
234
+ });
235
+
236
+ test('Removes aria-describedby from triggerRef element when tooltip is hidden', async () => {
237
+ const triggerRef = createRef<HTMLButtonElement>();
238
+
239
+ const TooltipTest = () => {
240
+ const [isVisible, setIsVisible] = useState(true);
241
+
242
+ return (
243
+ <>
244
+ <button ref={triggerRef} onClick={() => setIsVisible(!isVisible)}>
245
+ Trigger
246
+ </button>
247
+ <Tooltip id="trigger-ref-test" triggerRef={triggerRef} isVisible={isVisible} content="Test description" />
248
+ </>
249
+ );
250
+ };
251
+
252
+ render(<TooltipTest />);
253
+
254
+ // Tooltip should be visible initially
255
+ await screen.findByRole('tooltip');
256
+ expect(triggerRef.current).toHaveAccessibleDescription('Test description');
257
+
258
+ // Hide tooltip
259
+ const user = userEvent.setup();
260
+ await user.click(triggerRef.current);
261
+
262
+ // aria-describedby should be removed
263
+ expect(triggerRef.current).not.toHaveAccessibleDescription();
264
+ });
265
+
266
+ test('Removes aria-labelledby from triggerRef element when tooltip is hidden', async () => {
267
+ const triggerRef = createRef<HTMLButtonElement>();
268
+
269
+ const TooltipTest = () => {
270
+ const [isVisible, setIsVisible] = useState(true);
271
+
272
+ return (
273
+ <>
274
+ <button ref={triggerRef} onClick={() => setIsVisible(!isVisible)} />
275
+ <Tooltip
276
+ aria="labelledby"
277
+ id="trigger-ref-test"
278
+ triggerRef={triggerRef}
279
+ isVisible={isVisible}
280
+ content="Test label"
281
+ />
282
+ </>
283
+ );
284
+ };
285
+
286
+ render(<TooltipTest />);
287
+
288
+ // Tooltip should be visible initially
289
+ await screen.findByRole('tooltip');
290
+ expect(triggerRef.current).toHaveAccessibleName('Test label');
291
+
292
+ // Hide tooltip
293
+ const user = userEvent.setup();
294
+ await user.click(triggerRef.current);
295
+
296
+ // aria-describedby should be removed
297
+ expect(triggerRef.current).not.toHaveAccessibleName();
298
+ });
299
+
300
+ test('Preserves existing aria-describedby on triggerRef element', async () => {
301
+ const triggerRef = createRef<HTMLButtonElement>();
302
+
303
+ render(
304
+ <>
305
+ <div id="existing-aria">Existing description</div>
306
+ <button ref={triggerRef} aria-describedby="existing-aria">
307
+ Trigger
308
+ </button>
309
+ <Tooltip id="trigger-ref-test" triggerRef={triggerRef} isVisible content="Test description" />
310
+ </>
311
+ );
312
+
313
+ await screen.findByRole('tooltip');
314
+ expect(triggerRef.current).toHaveAccessibleDescription('Existing description Test description');
315
+ });
316
+
317
+ test('Preserves existing aria-labelledby on triggerRef element', async () => {
318
+ const triggerRef = createRef<HTMLButtonElement>();
319
+
320
+ render(
321
+ <>
322
+ <div id="existing-aria">Existing label</div>
323
+ <button ref={triggerRef} aria-labelledby="existing-aria">
324
+ Trigger
325
+ </button>
326
+ <Tooltip aria="labelledby" id="trigger-ref-test" triggerRef={triggerRef} isVisible content="Test label" />
327
+ </>
328
+ );
329
+
330
+ await screen.findByRole('tooltip');
331
+ expect(triggerRef.current).toHaveAccessibleName('Existing label Test label');
332
+ });
@@ -116,7 +116,7 @@ export const WizardNavItem = ({
116
116
  <span className={css(styles.wizardNavLinkMain)}>
117
117
  {isExpandable ? (
118
118
  <>
119
- <span className={css(styles.wizardNavLinkText)}>{content}</span>
119
+ <span className="pf-v6-c-wizard__nav-link-text">{content}</span>
120
120
  <span className={css(styles.wizardNavLinkToggle)}>
121
121
  <span className={css(styles.wizardNavLinkToggleIcon)}>
122
122
  <AngleRightIcon aria-label={`${isCurrent ? 'Collapse' : 'Expand'} step icon`} />