@patternfly/react-core 6.0.0-alpha.50 → 6.0.0-alpha.52

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 (302) hide show
  1. package/CHANGELOG.md +334 -0
  2. package/README.md +1 -0
  3. package/components/package.json +1 -1
  4. package/deprecated/package.json +1 -1
  5. package/dist/dynamic/components/AboutModal/package.json +1 -1
  6. package/dist/dynamic/components/Accordion/package.json +1 -1
  7. package/dist/dynamic/components/ActionList/package.json +1 -1
  8. package/dist/dynamic/components/Alert/package.json +1 -1
  9. package/dist/dynamic/components/Avatar/package.json +1 -1
  10. package/dist/dynamic/components/BackToTop/package.json +1 -1
  11. package/dist/dynamic/components/Backdrop/package.json +1 -1
  12. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  13. package/dist/dynamic/components/Badge/package.json +1 -1
  14. package/dist/dynamic/components/Banner/package.json +1 -1
  15. package/dist/dynamic/components/Brand/package.json +1 -1
  16. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  17. package/dist/dynamic/components/Button/package.json +1 -1
  18. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  19. package/dist/dynamic/components/Card/package.json +1 -1
  20. package/dist/dynamic/components/Checkbox/package.json +1 -1
  21. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  22. package/dist/dynamic/components/CodeBlock/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/Text/package.json +1 -1
  71. package/dist/dynamic/components/TextArea/package.json +1 -1
  72. package/dist/dynamic/components/TextInput/package.json +1 -1
  73. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  74. package/dist/dynamic/components/Tile/package.json +1 -1
  75. package/dist/dynamic/components/TimePicker/package.json +1 -1
  76. package/dist/dynamic/components/Timestamp/package.json +1 -1
  77. package/dist/dynamic/components/Title/package.json +1 -1
  78. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  79. package/dist/dynamic/components/Toolbar/package.json +1 -1
  80. package/dist/dynamic/components/Tooltip/package.json +1 -1
  81. package/dist/dynamic/components/TreeView/package.json +1 -1
  82. package/dist/dynamic/components/Truncate/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  94. package/dist/dynamic/deprecated/components/package.json +1 -1
  95. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  96. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  97. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  98. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  99. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  100. package/dist/dynamic/helpers/constants/package.json +1 -1
  101. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/favorites/package.json +1 -1
  103. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  104. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  105. package/dist/dynamic/helpers/package.json +1 -1
  106. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  107. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  108. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  109. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  110. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  111. package/dist/dynamic/helpers/util/package.json +1 -1
  112. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  113. package/dist/dynamic/layouts/Flex/package.json +1 -1
  114. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  115. package/dist/dynamic/layouts/Grid/package.json +1 -1
  116. package/dist/dynamic/layouts/Level/package.json +1 -1
  117. package/dist/dynamic/layouts/Split/package.json +1 -1
  118. package/dist/dynamic/layouts/Stack/package.json +1 -1
  119. package/dist/dynamic/next/components/DualListSelector/package.json +1 -1
  120. package/dist/dynamic/next/components/Modal/package.json +1 -1
  121. package/dist/dynamic/next/components/package.json +1 -1
  122. package/dist/dynamic/styles/package.json +1 -1
  123. package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  124. package/dist/esm/components/CalendarMonth/CalendarMonth.js +30 -12
  125. package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
  126. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts +3 -3
  127. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  128. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +10 -2
  129. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  130. package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -0
  131. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  132. package/dist/esm/components/Dropdown/Dropdown.js +6 -5
  133. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  134. package/dist/esm/components/Label/Label.d.ts +2 -0
  135. package/dist/esm/components/Label/Label.d.ts.map +1 -1
  136. package/dist/esm/components/Label/Label.js +9 -15
  137. package/dist/esm/components/Label/Label.js.map +1 -1
  138. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  139. package/dist/esm/components/Menu/Menu.js +5 -1
  140. package/dist/esm/components/Menu/Menu.js.map +1 -1
  141. package/dist/esm/components/Menu/MenuContainer.js +2 -2
  142. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  143. package/dist/esm/components/MenuToggle/MenuToggle.d.ts +11 -3
  144. package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  145. package/dist/esm/components/MenuToggle/MenuToggle.js +29 -3
  146. package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
  147. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  148. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  149. package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  150. package/dist/esm/components/Pagination/PaginationOptionsMenu.js +2 -4
  151. package/dist/esm/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  152. package/dist/esm/components/Select/Select.js +2 -2
  153. package/dist/esm/components/Select/Select.js.map +1 -1
  154. package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
  155. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  156. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  157. package/dist/esm/components/ToggleGroup/ToggleGroupItem.d.ts +2 -0
  158. package/dist/esm/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
  159. package/dist/esm/components/ToggleGroup/ToggleGroupItem.js +5 -3
  160. package/dist/esm/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  161. package/dist/esm/helpers/GenerateId/GenerateId.d.ts +5 -1
  162. package/dist/esm/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  163. package/dist/esm/helpers/GenerateId/GenerateId.js +14 -2
  164. package/dist/esm/helpers/GenerateId/GenerateId.js.map +1 -1
  165. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  166. package/dist/js/components/CalendarMonth/CalendarMonth.js +30 -12
  167. package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
  168. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +3 -3
  169. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  170. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +10 -2
  171. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  172. package/dist/js/components/Dropdown/Dropdown.d.ts +4 -0
  173. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  174. package/dist/js/components/Dropdown/Dropdown.js +6 -5
  175. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  176. package/dist/js/components/Label/Label.d.ts +2 -0
  177. package/dist/js/components/Label/Label.d.ts.map +1 -1
  178. package/dist/js/components/Label/Label.js +9 -15
  179. package/dist/js/components/Label/Label.js.map +1 -1
  180. package/dist/js/components/Menu/Menu.d.ts.map +1 -1
  181. package/dist/js/components/Menu/Menu.js +5 -1
  182. package/dist/js/components/Menu/Menu.js.map +1 -1
  183. package/dist/js/components/Menu/MenuContainer.js +2 -2
  184. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  185. package/dist/js/components/MenuToggle/MenuToggle.d.ts +11 -3
  186. package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  187. package/dist/js/components/MenuToggle/MenuToggle.js +30 -4
  188. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  189. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  190. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  191. package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  192. package/dist/js/components/Pagination/PaginationOptionsMenu.js +2 -4
  193. package/dist/js/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  194. package/dist/js/components/Select/Select.js +2 -2
  195. package/dist/js/components/Select/Select.js.map +1 -1
  196. package/dist/js/components/TextArea/TextArea.d.ts +0 -4
  197. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  198. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  199. package/dist/js/components/ToggleGroup/ToggleGroupItem.d.ts +2 -0
  200. package/dist/js/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
  201. package/dist/js/components/ToggleGroup/ToggleGroupItem.js +5 -3
  202. package/dist/js/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  203. package/dist/js/helpers/GenerateId/GenerateId.d.ts +5 -1
  204. package/dist/js/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  205. package/dist/js/helpers/GenerateId/GenerateId.js +14 -2
  206. package/dist/js/helpers/GenerateId/GenerateId.js.map +1 -1
  207. package/dist/umd/react-core.min.js +2 -2
  208. package/helpers/package.json +1 -1
  209. package/layouts/package.json +1 -1
  210. package/next/package.json +1 -1
  211. package/package.json +5 -5
  212. package/src/components/Accordion/__tests__/AccordionToggle.test.tsx +28 -0
  213. package/src/components/CalendarMonth/CalendarMonth.tsx +38 -13
  214. package/src/components/ClipboardCopy/ClipboardCopy.tsx +18 -4
  215. package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +2 -0
  216. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +1 -1
  217. package/src/components/DataList/examples/DataList.md +1 -1
  218. package/src/components/Drawer/__tests__/Drawer.test.tsx +2 -0
  219. package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +2 -0
  220. package/src/components/Drawer/__tests__/Generated/DrawerPanelContent.test.tsx +2 -0
  221. package/src/components/Drawer/__tests__/Generated/__snapshots__/DrawerPanelContent.test.tsx.snap +1 -1
  222. package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +8 -8
  223. package/src/components/Dropdown/Dropdown.tsx +14 -4
  224. package/src/components/DualListSelector/examples/DualListSelector.md +1 -1
  225. package/src/components/Form/__tests__/FormFieldGroup.test.tsx +2 -0
  226. package/src/components/Form/__tests__/FormSection.test.tsx +2 -0
  227. package/src/components/Form/__tests__/__snapshots__/FormFieldGroup.test.tsx.snap +2 -2
  228. package/src/components/Form/__tests__/__snapshots__/FormSection.test.tsx.snap +2 -2
  229. package/src/components/Label/Label.tsx +17 -13
  230. package/src/components/Label/__tests__/LabelGroup.test.tsx +2 -0
  231. package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +8 -8
  232. package/src/components/Label/examples/LabelCompact.tsx +19 -6
  233. package/src/components/Label/examples/LabelFilled.tsx +107 -17
  234. package/src/components/Label/examples/LabelOutline.tsx +142 -10
  235. package/src/components/Menu/Menu.tsx +5 -3
  236. package/src/components/Menu/MenuContainer.tsx +2 -2
  237. package/src/components/MenuToggle/MenuToggle.tsx +37 -3
  238. package/src/components/MenuToggle/MenuToggleCheckbox.tsx +2 -2
  239. package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +15 -0
  240. package/src/components/MenuToggle/examples/MenuToggle.md +23 -3
  241. package/src/components/MenuToggle/examples/MenuToggleSplitButtonCheckboxWithToggleText.tsx +51 -0
  242. package/src/components/MenuToggle/examples/MenuToggleStatus.tsx +20 -0
  243. package/src/components/MultipleFileUpload/__tests__/MultipleFileUpload.test.tsx +2 -0
  244. package/src/components/MultipleFileUpload/__tests__/MultipleFileUploadStatus.test.tsx +2 -0
  245. package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatus.test.tsx.snap +16 -16
  246. package/src/components/Pagination/PaginationOptionsMenu.tsx +2 -4
  247. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +1 -0
  248. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +2 -2
  249. package/src/components/Select/Select.tsx +2 -2
  250. package/src/components/Select/examples/Select.md +33 -9
  251. package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +6 -1
  252. package/src/components/Select/examples/SelectValidated.tsx +74 -0
  253. package/src/components/Tabs/__tests__/Tabs.test.tsx +2 -0
  254. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +3 -3
  255. package/src/components/TextArea/TextArea.tsx +0 -4
  256. package/src/components/ToggleGroup/ToggleGroupItem.tsx +7 -1
  257. package/src/components/ToggleGroup/examples/ToggleGroupTextIcon.tsx +52 -23
  258. package/src/components/Toolbar/__tests__/Toolbar.test.tsx +2 -0
  259. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +4 -4
  260. package/src/demos/AlertGroup.md +1 -0
  261. package/src/demos/BackToTop.md +1 -0
  262. package/src/demos/Banner.md +5 -4
  263. package/src/demos/CardView/CardView.md +2 -0
  264. package/src/demos/CardView/examples/CardView.tsx +1 -1
  265. package/src/demos/DataList/examples/DataListBasic.tsx +6 -4
  266. package/src/demos/DataListDemo.md +1 -0
  267. package/src/demos/Filters/examples/FilterAttributeSearch.tsx +1 -1
  268. package/src/demos/Filters/examples/FilterCheckboxSelect.tsx +1 -1
  269. package/src/demos/Filters/examples/FilterFaceted.tsx +1 -1
  270. package/src/demos/Filters/examples/FilterMixedSelectGroup.tsx +1 -1
  271. package/src/demos/Filters/examples/FilterSameSelectGroup.tsx +1 -1
  272. package/src/demos/Filters/examples/FilterSearchInput.tsx +1 -1
  273. package/src/demos/Filters/examples/FilterSingleSelect.tsx +1 -1
  274. package/src/demos/JumpLinks.md +2 -1
  275. package/src/demos/PrimaryDetail.md +1 -0
  276. package/src/demos/RTL/RTL.md +1 -1
  277. package/src/demos/RTL/examples/PaginatedTable.tsx +533 -0
  278. package/src/demos/Tabs.md +5 -2
  279. package/src/demos/Toolbar.md +1 -0
  280. package/src/demos/Wizard/WizardDemo.md +1 -0
  281. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +1 -1
  282. package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +1 -1
  283. package/src/demos/examples/Card/CardStatus.tsx +1 -1
  284. package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +1 -1
  285. package/src/demos/examples/Nav/NavDefault.tsx +1 -1
  286. package/src/demos/examples/Nav/NavExpandable.tsx +1 -1
  287. package/src/demos/examples/Nav/NavWithSubnav.tsx +1 -1
  288. package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +1 -1
  289. package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +1 -1
  290. package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +1 -1
  291. package/src/demos/examples/Tabs/ModalTabs.tsx +1 -1
  292. package/src/demos/examples/Tabs/NestedTabs.tsx +1 -1
  293. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +1 -1
  294. package/src/demos/examples/Tabs/TabsAndTable.tsx +1 -1
  295. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -1
  296. package/src/demos/examples/Wizard/InModal.tsx +1 -1
  297. package/src/deprecated/components/Chip/__tests__/ChipGroup.test.tsx +4 -2
  298. package/src/deprecated/components/Select/__tests__/Select.test.tsx +2 -0
  299. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +19 -19
  300. package/src/helpers/GenerateId/GenerateId.ts +17 -3
  301. package/src/helpers/GenerateId/__mocks__/GenerateId.ts +11 -0
  302. package/src/helpers/GenerateId/__tests__/GenerateId.test.tsx +3 -1
@@ -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.49","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.0.0-alpha.51","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.0.0-alpha.49","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.0.0-alpha.51","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.49","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.0.0-alpha.51","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.0.0-alpha.50",
3
+ "version": "6.0.0-alpha.52",
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",
@@ -47,9 +47,9 @@
47
47
  "clean:exports": "node scripts/cleanDistExports.js"
48
48
  },
49
49
  "dependencies": {
50
- "@patternfly/react-icons": "^6.0.0-alpha.19",
51
- "@patternfly/react-styles": "^6.0.0-alpha.19",
52
- "@patternfly/react-tokens": "^6.0.0-alpha.19",
50
+ "@patternfly/react-icons": "^6.0.0-alpha.20",
51
+ "@patternfly/react-styles": "^6.0.0-alpha.20",
52
+ "@patternfly/react-tokens": "^6.0.0-alpha.20",
53
53
  "focus-trap": "7.5.2",
54
54
  "react-dropzone": "^14.2.3",
55
55
  "tslib": "^2.5.0"
@@ -74,5 +74,5 @@
74
74
  "react": "^17 || ^18",
75
75
  "react-dom": "^17 || ^18"
76
76
  },
77
- "gitHead": "ef6f95d064bfbb8f5aaa134ab6941f63ccf36111"
77
+ "gitHead": "eb609385b2e7b294e5e46d021d615cd63fa92fc6"
78
78
  }
@@ -211,6 +211,34 @@ test('Renders toggle icon before toggle text when togglePosition from context =
211
211
  expect(toggle.firstChild).toHaveClass(styles.accordionToggleIcon);
212
212
  });
213
213
 
214
+ test('Renders toggle text before toggle icon by default', () => {
215
+ render(
216
+ <AccordionContext.Provider value={{ ToggleContainer: 'h3' }}>
217
+ <AccordionToggle id="accordion-toggle" isExpanded>
218
+ Test
219
+ </AccordionToggle>
220
+ </AccordionContext.Provider>
221
+ );
222
+
223
+ const toggle = screen.getByRole('button');
224
+
225
+ expect(toggle.firstChild).toHaveClass(styles.accordionToggleText);
226
+ });
227
+
228
+ test('Renders toggle icon before toggle text when togglePosition from context = "start"', () => {
229
+ render(
230
+ <AccordionContext.Provider value={{ ToggleContainer: 'h3', togglePosition: 'start' }}>
231
+ <AccordionToggle id="accordion-toggle" isExpanded>
232
+ Test
233
+ </AccordionToggle>
234
+ </AccordionContext.Provider>
235
+ );
236
+
237
+ const toggle = screen.getByRole('button');
238
+
239
+ expect(toggle.firstChild).toHaveClass(styles.accordionToggleIcon);
240
+ });
241
+
214
242
  test('Matches the snapshot', () => {
215
243
  const { asFragment } = render(
216
244
  <AccordionContext.Provider value={{ ToggleContainer: 'h3' }}>
@@ -83,9 +83,6 @@ export interface CalendarProps extends CalendarFormat, Omit<React.HTMLProps<HTML
83
83
  validators?: ((date: Date) => boolean)[];
84
84
  }
85
85
 
86
- // Must be numeric given current header design
87
- const yearFormat = (date: Date) => date.getFullYear();
88
-
89
86
  const buildCalendar = (year: number, month: number, weekStart: number, validators: ((date: Date) => boolean)[]) => {
90
87
  const defaultDate = new Date(year, month);
91
88
 
@@ -164,6 +161,13 @@ export const CalendarMonth = ({
164
161
  };
165
162
  const initialDate = getInitialDate();
166
163
  const [focusedDate, setFocusedDate] = React.useState(initialDate);
164
+
165
+ // Must be numeric given current header design
166
+ const yearFormat = (date: Date) => date.getFullYear();
167
+ //
168
+ const yearFormatted = yearFormat(focusedDate);
169
+ const [yearInput, setYearInput] = React.useState(yearFormatted.toString());
170
+
167
171
  const [hoveredDate, setHoveredDate] = React.useState(new Date(focusedDate));
168
172
  const focusRef = React.useRef<HTMLButtonElement>();
169
173
  const [hiddenMonthId] = React.useState(getUniqueId('hidden-month-span'));
@@ -191,6 +195,7 @@ export const CalendarMonth = ({
191
195
  setHoveredDate(newDate);
192
196
  setShouldFocus(false);
193
197
  onMonthChange(ev, newDate);
198
+ setYearInput(yearFormat(newDate).toString());
194
199
  };
195
200
 
196
201
  const onKeyDown = (ev: React.KeyboardEvent<HTMLTableSectionElement>) => {
@@ -217,6 +222,34 @@ export const CalendarMonth = ({
217
222
  const changeMonth = (newMonth: number, newYear?: number) =>
218
223
  new Date(newYear ?? focusedDate.getFullYear(), newMonth, 1);
219
224
 
225
+ const MIN_YEAR = 1900;
226
+ const MAX_YEAR = 2100;
227
+
228
+ const handleYearInputChange = (event: React.FormEvent<HTMLInputElement>, yearStr: string) => {
229
+ if (!/^\d{0,4}$/.test(yearStr)) {
230
+ return;
231
+ }
232
+
233
+ setYearInput(yearStr);
234
+
235
+ if (yearStr.length === 4) {
236
+ const yearNum = Number(yearStr);
237
+
238
+ if (yearNum >= MIN_YEAR && yearNum <= MAX_YEAR) {
239
+ const newDate = changeYear(yearNum);
240
+ setFocusedDate(newDate);
241
+ setHoveredDate(newDate);
242
+ setShouldFocus(false);
243
+
244
+ // We need to manually focus the year input in FireFox when the scroll buttons are clicked, as FireFox doesn't place focus automatically
245
+ (event.target as HTMLElement).focus();
246
+ onMonthChange(event, newDate);
247
+ } else {
248
+ setYearInput(yearFormatted.toString());
249
+ }
250
+ }
251
+ };
252
+
220
253
  const addMonth = (toAdd: -1 | 1) => {
221
254
  let newMonth = focusedDate.getMonth() + toAdd;
222
255
  let newYear = focusedDate.getFullYear();
@@ -254,7 +287,6 @@ export const CalendarMonth = ({
254
287
  }
255
288
  const isHoveredDateValid = isValidated(hoveredDate);
256
289
  const monthFormatted = monthFormat(focusedDate);
257
- const yearFormatted = yearFormat(focusedDate);
258
290
 
259
291
  const calendarToRender = (
260
292
  <div className={css(styles.calendarMonth, className)} {...props}>
@@ -321,15 +353,8 @@ export const CalendarMonth = ({
321
353
  <TextInput
322
354
  aria-label={yearInputAriaLabel}
323
355
  type="number"
324
- value={yearFormatted}
325
- onChange={(ev: React.FormEvent<HTMLInputElement>, year: string) => {
326
- const newDate = changeYear(Number(year));
327
- setFocusedDate(newDate);
328
- setHoveredDate(newDate);
329
- setShouldFocus(false);
330
- focusRef.current?.blur(); // will unfocus a date when changing year via up/down arrows
331
- onMonthChange(ev, newDate);
332
- }}
356
+ value={yearInput}
357
+ onChange={handleYearInputChange}
333
358
  />
334
359
  </div>
335
360
  </InputGroupItem>
@@ -10,8 +10,22 @@ import { ClipboardCopyToggle } from './ClipboardCopyToggle';
10
10
  import { ClipboardCopyExpanded } from './ClipboardCopyExpanded';
11
11
  import { getOUIAProps, OUIAProps } from '../../helpers';
12
12
 
13
- export const clipboardCopyFunc = (event: React.ClipboardEvent<HTMLDivElement>, text?: string) => {
14
- navigator.clipboard.writeText(text.toString());
13
+ export const clipboardCopyFunc = (_event: React.ClipboardEvent<HTMLDivElement>, text?: React.ReactNode) => {
14
+ try {
15
+ navigator.clipboard.writeText(text.toString());
16
+ } catch (error) {
17
+ // eslint-disable-next-line no-console
18
+ console.warn(
19
+ "Clipboard API not found, this copy function will not work. This is likely because you're using an",
20
+ "unsupported browser or you're not using HTTPS. \n\nIf you're a developer building an application which needs",
21
+ "to support copying to the clipboard without the clipboard API, you'll have to create your own copy",
22
+ 'function and pass it to the ClipboardCopy component as the onCopy prop. For more information see',
23
+ 'https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard'
24
+ );
25
+
26
+ // eslint-disable-next-line no-console
27
+ console.error(error);
28
+ }
15
29
  };
16
30
 
17
31
  export enum ClipboardCopyVariant {
@@ -70,8 +84,8 @@ export interface ClipboardCopyProps extends Omit<React.HTMLProps<HTMLDivElement>
70
84
  exitDelay?: number;
71
85
  /** Delay in ms before the tooltip appears. */
72
86
  entryDelay?: number;
73
- /** A function that is triggered on clicking the copy button. */
74
- onCopy?: (event: React.ClipboardEvent<HTMLDivElement>, text?: string) => void;
87
+ /** A function that is triggered on clicking the copy button. This will replace the existing clipboard copy functionality entirely. */
88
+ onCopy?: (event: React.ClipboardEvent<HTMLDivElement>, text?: React.ReactNode) => void;
75
89
  /** A function that is triggered on changing the text. */
76
90
  onChange?: (event: React.FormEvent, text?: string) => void;
77
91
  /** The text which is copied. */
@@ -4,6 +4,8 @@ import { ClipboardCopy } from '../ClipboardCopy';
4
4
  import styles from '@patternfly/react-styles/css/components/ClipboardCopy/clipboard-copy';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
+ jest.mock('../../../helpers/GenerateId/GenerateId');
8
+
7
9
  jest.mock('../ClipboardCopyButton', () => ({
8
10
  ClipboardCopyButton: ({ 'aria-label': ariaLabel, children, entryDelay, exitDelay, maxWidth, position, onClick }) => (
9
11
  <div data-testid="clipboardCopyButton-mock">
@@ -21,7 +21,7 @@ exports[`Matches snapshot 1`] = `
21
21
  data-ouia-component-id="OUIA-Generated-TextInputBase-26"
22
22
  data-ouia-component-type="PF5/TextInput"
23
23
  data-ouia-safe="true"
24
- id="text-input-34"
24
+ id="text-input-generated-id"
25
25
  type="text"
26
26
  value="Copyable text"
27
27
  />
@@ -83,7 +83,7 @@ import { DragDrop, Draggable, Droppable } from '@patternfly/react-core/deprecate
83
83
 
84
84
  ### Draggable
85
85
 
86
- Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-next-demos).
86
+ Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-demos).
87
87
 
88
88
  Previously, draggable data lists had their own API for the [drag and drop component](/components/drag-and-drop), which wasn't flexible enough to allow custom styling for items as they are dragged. To address this disparity, `<DragDrop>`, `<Draggable>`, and `<Droppable>` components were added to replace our now deprecated HTML5-based API. Keyboard and screen reader accessibility for the `<DragDrop>` component is still in development.
89
89
 
@@ -14,6 +14,8 @@ import { render } from '@testing-library/react';
14
14
  import userEvent from '@testing-library/user-event';
15
15
  import { KeyTypes } from '../../../helpers';
16
16
 
17
+ jest.mock('../../../helpers/GenerateId/GenerateId');
18
+
17
19
  Object.values([
18
20
  { isExpanded: true, isInline: false, isStatic: false },
19
21
  { isExpanded: false, isInline: false, isStatic: false },
@@ -34,6 +34,8 @@ test(`Renders with class ${styles.modifiers.secondary} when colorVariant="second
34
34
  expect(screen.getByText('Drawer panel content')).toHaveClass(styles.modifiers.secondary);
35
35
  });
36
36
 
37
+ jest.mock('../../../helpers/GenerateId/GenerateId');
38
+
37
39
  test('Does not render with aria-labelledby by default', () => {
38
40
  render(
39
41
  <Drawer isExpanded>
@@ -7,6 +7,8 @@ import { DrawerPanelContent } from '../../DrawerPanelContent';
7
7
  // any missing imports can usually be resolved by adding them here
8
8
  import {} from '../..';
9
9
 
10
+ jest.mock('../../../../helpers/GenerateId/GenerateId');
11
+
10
12
  it('DrawerPanelContent should match snapshot (auto-generated)', () => {
11
13
  const { asFragment } = render(<DrawerPanelContent className={"''"} children={<div>ReactNode</div>} />);
12
14
  expect(asFragment()).toMatchSnapshot();
@@ -5,7 +5,7 @@ exports[`DrawerPanelContent should match snapshot (auto-generated) 1`] = `
5
5
  <div
6
6
  class="pf-v6-c-drawer__panel ''"
7
7
  hidden=""
8
- id="pf-drawer-panel-0"
8
+ id="generated-id"
9
9
  />
10
10
  </DocumentFragment>
11
11
  `;
@@ -19,7 +19,7 @@ exports[`Drawer expands from bottom 1`] = `
19
19
  </div>
20
20
  <div
21
21
  class="pf-v6-c-drawer__panel"
22
- id="pf-drawer-panel-5"
22
+ id="generated-id"
23
23
  >
24
24
  <div
25
25
  class="pf-v6-c-drawer__head"
@@ -179,11 +179,11 @@ exports[`Drawer has resizable css and color variants 1`] = `
179
179
  </div>
180
180
  <div
181
181
  class="pf-v6-c-drawer__panel pf-m-resizable pf-m-secondary"
182
- id="pf-drawer-panel-6"
182
+ id="generated-id"
183
183
  style="--pf-v6-c-drawer__panel--md--FlexBasis: 300px; --pf-v6-c-drawer__panel--md--FlexBasis--min: 200px; --pf-v6-c-drawer__panel--md--FlexBasis--max: 400px;"
184
184
  >
185
185
  <div
186
- aria-controls="pf-drawer-panel-6"
186
+ aria-controls="generated-id"
187
187
  aria-label="Resize"
188
188
  aria-orientation="vertical"
189
189
  aria-valuemax="100"
@@ -271,7 +271,7 @@ exports[`Drawer isExpanded = false and isInline = false and isStatic = false 1`]
271
271
  <div
272
272
  class="pf-v6-c-drawer__panel"
273
273
  hidden=""
274
- id="pf-drawer-panel-1"
274
+ id="generated-id"
275
275
  />
276
276
  </div>
277
277
  </div>
@@ -298,7 +298,7 @@ exports[`Drawer isExpanded = false and isInline = true and isStatic = false 1`]
298
298
  <div
299
299
  class="pf-v6-c-drawer__panel"
300
300
  hidden=""
301
- id="pf-drawer-panel-3"
301
+ id="generated-id"
302
302
  />
303
303
  </div>
304
304
  </div>
@@ -324,7 +324,7 @@ exports[`Drawer isExpanded = true and isInline = false and isStatic = false 1`]
324
324
  </div>
325
325
  <div
326
326
  class="pf-v6-c-drawer__panel"
327
- id="pf-drawer-panel-0"
327
+ id="generated-id"
328
328
  >
329
329
  <div
330
330
  class="pf-v6-c-drawer__head"
@@ -394,7 +394,7 @@ exports[`Drawer isExpanded = true and isInline = false and isStatic = true 1`] =
394
394
  </div>
395
395
  <div
396
396
  class="pf-v6-c-drawer__panel"
397
- id="pf-drawer-panel-4"
397
+ id="generated-id"
398
398
  >
399
399
  <div
400
400
  class="pf-v6-c-drawer__head"
@@ -464,7 +464,7 @@ exports[`Drawer isExpanded = true and isInline = true and isStatic = false 1`] =
464
464
  </div>
465
465
  <div
466
466
  class="pf-v6-c-drawer__panel"
467
- id="pf-drawer-panel-2"
467
+ id="generated-id"
468
468
  >
469
469
  <div
470
470
  class="pf-v6-c-drawer__head"
@@ -65,6 +65,10 @@ export interface DropdownProps extends MenuProps, OUIAProps {
65
65
  zIndex?: number;
66
66
  /** Additional properties to pass to the Popper */
67
67
  popperProps?: DropdownPopperProps;
68
+ /** Height of the dropdown menu */
69
+ menuHeight?: string;
70
+ /** Maximum height of dropdown menu */
71
+ maxMenuHeight?: string;
68
72
  }
69
73
 
70
74
  const DropdownBase: React.FunctionComponent<DropdownProps> = ({
@@ -83,6 +87,8 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
83
87
  zIndex = 9999,
84
88
  popperProps,
85
89
  onOpenChangeKeys = ['Escape', 'Tab'],
90
+ menuHeight,
91
+ maxMenuHeight,
86
92
  ...props
87
93
  }: DropdownProps) => {
88
94
  const localMenuRef = React.useRef<HTMLDivElement>();
@@ -111,8 +117,8 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
111
117
  };
112
118
 
113
119
  const handleClick = (event: MouseEvent) => {
114
- // toggle was clicked open via keyboard, focus on first menu item
115
- if (isOpen && toggleRef.current?.contains(event.target as Node) && event.detail === 0) {
120
+ // toggle was opened, focus on first menu item
121
+ if (isOpen && toggleRef.current?.contains(event.target as Node)) {
116
122
  setTimeout(() => {
117
123
  const firstElement = menuRef?.current?.querySelector(
118
124
  'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
@@ -138,6 +144,8 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
138
144
  };
139
145
  }, [isOpen, menuRef, toggleRef, onOpenChange, onOpenChangeKeys]);
140
146
 
147
+ const scrollable = maxMenuHeight !== undefined || menuHeight !== undefined || isScrollable;
148
+
141
149
  const menu = (
142
150
  <Menu
143
151
  className={css(className)}
@@ -147,11 +155,13 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
147
155
  shouldFocusToggleOnSelect && toggleRef.current.focus();
148
156
  }}
149
157
  isPlain={isPlain}
150
- isScrollable={isScrollable}
158
+ isScrollable={scrollable}
151
159
  {...props}
152
160
  {...ouiaProps}
153
161
  >
154
- <MenuContent>{children}</MenuContent>
162
+ <MenuContent menuHeight={menuHeight} maxMenuHeight={maxMenuHeight}>
163
+ {children}
164
+ </MenuContent>
155
165
  </Menu>
156
166
  );
157
167
  return (
@@ -88,7 +88,7 @@ The dual list selector can also be built in a composable manner to make customiz
88
88
 
89
89
  ### Composable with drag and drop
90
90
 
91
- Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-next-demos).
91
+ Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-demos).
92
92
 
93
93
  This example only allows reordering the contents of the "chosen" pane with drag and drop. To make a pane able to be reordered:
94
94
 
@@ -7,6 +7,8 @@ import { FormFieldGroupExpandable } from '../FormFieldGroupExpandable';
7
7
  import { FormFieldGroupHeader } from '../FormFieldGroupHeader';
8
8
  import { Button } from '../../Button';
9
9
 
10
+ jest.mock('../../../helpers/GenerateId/GenerateId');
11
+
10
12
  test('Check form field group example against snapshot', () => {
11
13
  const FieldGroup = (
12
14
  <FormFieldGroup
@@ -2,6 +2,8 @@ import * as React from 'react';
2
2
  import { FormSection } from '../FormSection';
3
3
  import { render, screen } from '@testing-library/react';
4
4
 
5
+ jest.mock('../../../helpers/GenerateId/GenerateId');
6
+
5
7
  test('Check form section example against snapshot', () => {
6
8
  const Section = <FormSection />;
7
9
  const { asFragment } = render(Section);
@@ -17,12 +17,12 @@ exports[`Check expandable form field group example against snapshot 1`] = `
17
17
  aria-disabled="false"
18
18
  aria-expanded="true"
19
19
  aria-label="toggle"
20
- aria-labelledby="title-text-id2 form-field-group-toggle0"
20
+ aria-labelledby="title-text-id2 generated-id"
21
21
  class="pf-v6-c-button pf-m-plain"
22
22
  data-ouia-component-id="OUIA-Generated-Button-plain-1"
23
23
  data-ouia-component-type="PF5/Button"
24
24
  data-ouia-safe="true"
25
- id="form-field-group-toggle0"
25
+ id="generated-id"
26
26
  type="button"
27
27
  >
28
28
  <span
@@ -12,13 +12,13 @@ exports[`Check form section example against snapshot 1`] = `
12
12
  exports[`Check form section example with title 1`] = `
13
13
  <DocumentFragment>
14
14
  <section
15
- aria-labelledby="pf-form-section-title1"
15
+ aria-labelledby="generated-id"
16
16
  class="pf-v6-c-form__section"
17
17
  role="group"
18
18
  >
19
19
  <h4
20
20
  class="pf-v6-c-form__section-title"
21
- id="pf-form-section-title1"
21
+ id="generated-id"
22
22
  >
23
23
  Title
24
24
  </h4>
@@ -27,6 +27,8 @@ export interface LabelProps extends React.HTMLProps<HTMLSpanElement> {
27
27
  status?: 'success' | 'warning' | 'danger' | 'info' | 'custom';
28
28
  /** Flag indicating the label is compact. */
29
29
  isCompact?: boolean;
30
+ /** Flag indicating the label is disabled. Works only on clickable labels, so either href or onClick props must be passed in. */
31
+ isDisabled?: boolean;
30
32
  /** @beta Flag indicating the label is editable. */
31
33
  isEditable?: boolean;
32
34
  /** @beta Additional props passed to the editable label text div. Optionally passing onInput and onBlur callbacks will allow finer custom text input control. */
@@ -106,6 +108,7 @@ export const Label: React.FunctionComponent<LabelProps> = ({
106
108
  variant = 'filled',
107
109
  status,
108
110
  isCompact = false,
111
+ isDisabled = false,
109
112
  isEditable = false,
110
113
  editableProps,
111
114
  textMaxWidth,
@@ -224,29 +227,23 @@ export const Label: React.FunctionComponent<LabelProps> = ({
224
227
  }
225
228
  };
226
229
 
227
- const LabelComponent = (isOverflowLabel || isAddLabel ? 'button' : 'span') as any;
230
+ const isClickableDisabled = (href || onLabelClick) && isDisabled;
228
231
 
229
- let _closeBtnAriaLabel = 'Close label';
230
- if (closeBtnAriaLabel) {
231
- _closeBtnAriaLabel = closeBtnAriaLabel;
232
- } else if (typeof children === 'string') {
233
- _closeBtnAriaLabel = `Close ${children}`;
234
- }
235
-
236
- const defaultButton = (
232
+ const defaultCloseButton = (
237
233
  <Button
238
234
  type="button"
239
235
  variant="plain"
240
236
  hasNoPadding
241
237
  onClick={onClose}
242
- aria-label={_closeBtnAriaLabel}
238
+ aria-label={closeBtnAriaLabel || `Close ${children}`}
239
+ {...(isClickableDisabled && { isDisabled: true })}
243
240
  {...closeBtnProps}
244
241
  >
245
242
  <TimesIcon />
246
243
  </Button>
247
244
  );
248
245
 
249
- const button = <span className={css(styles.labelActions)}>{closeBtn || defaultButton}</span>;
246
+ const closeButton = <span className={css(styles.labelActions)}>{closeBtn || defaultCloseButton}</span>;
250
247
  const textRef = React.createRef<any>();
251
248
  // ref to apply tooltip when rendered is used
252
249
  const componentRef = React.useRef();
@@ -302,6 +299,8 @@ export const Label: React.FunctionComponent<LabelProps> = ({
302
299
  className: css(styles.labelContent, isClickable && styles.modifiers.clickable),
303
300
  ...(isTooltipVisible && { tabIndex: 0 }),
304
301
  ...(href && { href }),
302
+ // Need to prevent onClick since aria-disabled won't prevent AT from triggering the link
303
+ ...(href && isDisabled && { onClick: (event: MouseEvent) => event.preventDefault() }),
305
304
  ...(isButton && clickableLabelProps),
306
305
  ...(isEditable && {
307
306
  ref: editableButtonRef,
@@ -310,7 +309,9 @@ export const Label: React.FunctionComponent<LabelProps> = ({
310
309
  e.stopPropagation();
311
310
  },
312
311
  ...editableProps
313
- })
312
+ }),
313
+ ...(isClickableDisabled && isButton && { disabled: true }),
314
+ ...(isClickableDisabled && href && { tabindex: -1, 'aria-disabled': true })
314
315
  };
315
316
 
316
317
  let labelComponentChild = (
@@ -336,11 +337,14 @@ export const Label: React.FunctionComponent<LabelProps> = ({
336
337
  );
337
338
  }
338
339
 
340
+ const LabelComponent = (isOverflowLabel ? 'button' : 'span') as any;
341
+
339
342
  return (
340
343
  <LabelComponent
341
344
  {...props}
342
345
  className={css(
343
346
  styles.label,
347
+ isClickableDisabled && styles.modifiers.disabled,
344
348
  colorStyles[color],
345
349
  variant === 'filled' && styles.modifiers.filled,
346
350
  variant === 'outline' && styles.modifiers.outline,
@@ -356,7 +360,7 @@ export const Label: React.FunctionComponent<LabelProps> = ({
356
360
  onClick={isOverflowLabel || isAddLabel ? onLabelClick : undefined}
357
361
  >
358
362
  {!isEditableActive && labelComponentChild}
359
- {!isEditableActive && onClose && button}
363
+ {!isEditableActive && onClose && closeButton}
360
364
  {isEditableActive && (
361
365
  <input
362
366
  className={css(styles.labelContent)}
@@ -6,6 +6,8 @@ import userEvent from '@testing-library/user-event';
6
6
  import { Label } from '../../Label';
7
7
  import { LabelGroup } from '../index';
8
8
 
9
+ jest.mock('../../../helpers/GenerateId/GenerateId');
10
+
9
11
  describe('LabelGroup', () => {
10
12
  test('label group default', () => {
11
13
  const { asFragment } = render(
@@ -134,12 +134,12 @@ exports[`LabelGroup label group with category 1`] = `
134
134
  <span
135
135
  aria-hidden="true"
136
136
  class="pf-v6-c-label-group__label"
137
- id="pf-random-id-1"
137
+ id="generated-id"
138
138
  >
139
139
  category
140
140
  </span>
141
141
  <ul
142
- aria-labelledby="pf-random-id-1"
142
+ aria-labelledby="generated-id"
143
143
  class="pf-v6-c-label-group__list"
144
144
  role="list"
145
145
  >
@@ -177,12 +177,12 @@ exports[`LabelGroup label group with category and tooltip 1`] = `
177
177
  <span
178
178
  aria-hidden="true"
179
179
  class="pf-v6-c-label-group__label"
180
- id="pf-random-id-4"
180
+ id="generated-id"
181
181
  >
182
182
  A very long category name
183
183
  </span>
184
184
  <ul
185
- aria-labelledby="pf-random-id-4"
185
+ aria-labelledby="generated-id"
186
186
  class="pf-v6-c-label-group__list"
187
187
  role="list"
188
188
  >
@@ -220,12 +220,12 @@ exports[`LabelGroup label group with closable category 1`] = `
220
220
  <span
221
221
  aria-hidden="true"
222
222
  class="pf-v6-c-label-group__label"
223
- id="pf-random-id-2"
223
+ id="generated-id"
224
224
  >
225
225
  category
226
226
  </span>
227
227
  <ul
228
- aria-labelledby="pf-random-id-2"
228
+ aria-labelledby="generated-id"
229
229
  class="pf-v6-c-label-group__list"
230
230
  role="list"
231
231
  >
@@ -254,12 +254,12 @@ exports[`LabelGroup label group with closable category 1`] = `
254
254
  <button
255
255
  aria-disabled="false"
256
256
  aria-label="Close label group"
257
- aria-labelledby="remove_group_pf-random-id-2 pf-random-id-2"
257
+ aria-labelledby="remove_group_generated-id generated-id"
258
258
  class="pf-v6-c-button pf-m-plain pf-m-no-padding"
259
259
  data-ouia-component-id="OUIA-Generated-Button-plain-1"
260
260
  data-ouia-component-type="PF5/Button"
261
261
  data-ouia-safe="true"
262
- id="remove_group_pf-random-id-2"
262
+ id="remove_group_generated-id"
263
263
  type="button"
264
264
  >
265
265
  <svg