@patternfly/react-core 5.3.0-prerelease.2 → 5.3.0-prerelease.21

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 (481) hide show
  1. package/CHANGELOG.md +111 -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/Chip/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/DragDrop/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/Text/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/Tile/package.json +1 -1
  76. package/dist/dynamic/components/TimePicker/package.json +1 -1
  77. package/dist/dynamic/components/Timestamp/package.json +1 -1
  78. package/dist/dynamic/components/Title/package.json +1 -1
  79. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  80. package/dist/dynamic/components/Toolbar/package.json +1 -1
  81. package/dist/dynamic/components/Tooltip/package.json +1 -1
  82. package/dist/dynamic/components/TreeView/package.json +1 -1
  83. package/dist/dynamic/components/Truncate/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  85. package/dist/dynamic/components/Wizard/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/DualListSelector/package.json +1 -0
  119. package/dist/dynamic/next/components/Modal/package.json +1 -1
  120. package/dist/dynamic/next/components/package.json +1 -1
  121. package/dist/dynamic/styles/package.json +1 -1
  122. package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  123. package/dist/esm/components/CalendarMonth/CalendarMonth.js +30 -12
  124. package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
  125. package/dist/esm/components/Card/Card.d.ts +13 -5
  126. package/dist/esm/components/Card/Card.d.ts.map +1 -1
  127. package/dist/esm/components/Card/Card.js +7 -3
  128. package/dist/esm/components/Card/Card.js.map +1 -1
  129. package/dist/esm/components/Card/CardHeader.d.ts +3 -1
  130. package/dist/esm/components/Card/CardHeader.d.ts.map +1 -1
  131. package/dist/esm/components/Card/CardHeader.js +10 -10
  132. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  133. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts +6 -6
  134. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  135. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +10 -2
  136. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  137. package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.d.ts +1 -0
  138. package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.d.ts.map +1 -1
  139. package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.js.map +1 -1
  140. package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -0
  141. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  142. package/dist/esm/components/Dropdown/Dropdown.js +6 -5
  143. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  144. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  145. package/dist/esm/components/Menu/Menu.js +5 -1
  146. package/dist/esm/components/Menu/Menu.js.map +1 -1
  147. package/dist/esm/components/Menu/MenuContainer.js +2 -2
  148. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  149. package/dist/esm/components/MenuToggle/MenuToggle.d.ts +9 -0
  150. package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  151. package/dist/esm/components/MenuToggle/MenuToggle.js +26 -2
  152. package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
  153. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  154. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  155. package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  156. package/dist/esm/components/Pagination/PaginationOptionsMenu.js +2 -4
  157. package/dist/esm/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  158. package/dist/esm/components/SearchInput/SearchInput.d.ts +2 -0
  159. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  160. package/dist/esm/components/SearchInput/SearchInput.js +2 -2
  161. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  162. package/dist/esm/components/Select/Select.d.ts +6 -0
  163. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  164. package/dist/esm/components/Select/Select.js +5 -5
  165. package/dist/esm/components/Select/Select.js.map +1 -1
  166. package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
  167. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  168. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  169. package/dist/esm/components/TextInputGroup/TextInputGroupMain.d.ts +2 -0
  170. package/dist/esm/components/TextInputGroup/TextInputGroupMain.d.ts.map +1 -1
  171. package/dist/esm/components/TextInputGroup/TextInputGroupMain.js +3 -3
  172. package/dist/esm/components/TextInputGroup/TextInputGroupMain.js.map +1 -1
  173. package/dist/esm/helpers/GenerateId/GenerateId.d.ts +5 -1
  174. package/dist/esm/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  175. package/dist/esm/helpers/GenerateId/GenerateId.js +14 -2
  176. package/dist/esm/helpers/GenerateId/GenerateId.js.map +1 -1
  177. package/dist/esm/helpers/Popper/Popper.js +2 -2
  178. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  179. package/dist/esm/index.d.ts.map +1 -1
  180. package/dist/esm/index.js.map +1 -1
  181. package/dist/esm/next/components/DualListSelector/DualListSelector.d.ts +23 -0
  182. package/dist/esm/next/components/DualListSelector/DualListSelector.d.ts.map +1 -0
  183. package/dist/esm/next/components/DualListSelector/DualListSelector.js +23 -0
  184. package/dist/esm/next/components/DualListSelector/DualListSelector.js.map +1 -0
  185. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.d.ts +19 -0
  186. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -0
  187. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.js +5 -0
  188. package/dist/esm/next/components/DualListSelector/DualListSelectorContext.js.map +1 -0
  189. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.d.ts +25 -0
  190. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.d.ts.map +1 -0
  191. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.js +18 -0
  192. package/dist/esm/next/components/DualListSelector/DualListSelectorControl.js.map +1 -0
  193. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +15 -0
  194. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts.map +1 -0
  195. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.js +35 -0
  196. package/dist/esm/next/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -0
  197. package/dist/esm/next/components/DualListSelector/DualListSelectorList.d.ts +8 -0
  198. package/dist/esm/next/components/DualListSelector/DualListSelectorList.d.ts.map +1 -0
  199. package/dist/esm/next/components/DualListSelector/DualListSelectorList.js +26 -0
  200. package/dist/esm/next/components/DualListSelector/DualListSelectorList.js.map +1 -0
  201. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.d.ts +29 -0
  202. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.d.ts.map +1 -0
  203. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.js +38 -0
  204. package/dist/esm/next/components/DualListSelector/DualListSelectorListItem.js.map +1 -0
  205. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.d.ts +24 -0
  206. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -0
  207. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.js +59 -0
  208. package/dist/esm/next/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -0
  209. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.d.ts +31 -0
  210. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -0
  211. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.js +27 -0
  212. package/dist/esm/next/components/DualListSelector/DualListSelectorPane.js.map +1 -0
  213. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.d.ts +48 -0
  214. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -0
  215. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.js +15 -0
  216. package/dist/esm/next/components/DualListSelector/DualListSelectorTree.js.map +1 -0
  217. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.d.ts +32 -0
  218. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -0
  219. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.js +75 -0
  220. package/dist/esm/next/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -0
  221. package/dist/esm/next/components/DualListSelector/index.d.ts +8 -0
  222. package/dist/esm/next/components/DualListSelector/index.d.ts.map +1 -0
  223. package/dist/esm/next/components/DualListSelector/index.js +8 -0
  224. package/dist/esm/next/components/DualListSelector/index.js.map +1 -0
  225. package/dist/esm/next/components/DualListSelector/treeUtils.d.ts +8 -0
  226. package/dist/esm/next/components/DualListSelector/treeUtils.d.ts.map +1 -0
  227. package/dist/esm/next/components/DualListSelector/treeUtils.js +68 -0
  228. package/dist/esm/next/components/DualListSelector/treeUtils.js.map +1 -0
  229. package/dist/esm/next/components/index.d.ts +1 -0
  230. package/dist/esm/next/components/index.d.ts.map +1 -1
  231. package/dist/esm/next/components/index.js +1 -0
  232. package/dist/esm/next/components/index.js.map +1 -1
  233. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  234. package/dist/js/components/CalendarMonth/CalendarMonth.js +30 -12
  235. package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
  236. package/dist/js/components/Card/Card.d.ts +13 -5
  237. package/dist/js/components/Card/Card.d.ts.map +1 -1
  238. package/dist/js/components/Card/Card.js +7 -3
  239. package/dist/js/components/Card/Card.js.map +1 -1
  240. package/dist/js/components/Card/CardHeader.d.ts +3 -1
  241. package/dist/js/components/Card/CardHeader.d.ts.map +1 -1
  242. package/dist/js/components/Card/CardHeader.js +10 -10
  243. package/dist/js/components/Card/CardHeader.js.map +1 -1
  244. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +6 -6
  245. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  246. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +10 -2
  247. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  248. package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.d.ts +1 -0
  249. package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.d.ts.map +1 -1
  250. package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.js.map +1 -1
  251. package/dist/js/components/Dropdown/Dropdown.d.ts +4 -0
  252. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  253. package/dist/js/components/Dropdown/Dropdown.js +6 -5
  254. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  255. package/dist/js/components/Menu/Menu.d.ts.map +1 -1
  256. package/dist/js/components/Menu/Menu.js +5 -1
  257. package/dist/js/components/Menu/Menu.js.map +1 -1
  258. package/dist/js/components/Menu/MenuContainer.js +2 -2
  259. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  260. package/dist/js/components/MenuToggle/MenuToggle.d.ts +9 -0
  261. package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  262. package/dist/js/components/MenuToggle/MenuToggle.js +27 -3
  263. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  264. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  265. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  266. package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  267. package/dist/js/components/Pagination/PaginationOptionsMenu.js +2 -4
  268. package/dist/js/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  269. package/dist/js/components/SearchInput/SearchInput.d.ts +2 -0
  270. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  271. package/dist/js/components/SearchInput/SearchInput.js +2 -2
  272. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  273. package/dist/js/components/Select/Select.d.ts +6 -0
  274. package/dist/js/components/Select/Select.d.ts.map +1 -1
  275. package/dist/js/components/Select/Select.js +5 -5
  276. package/dist/js/components/Select/Select.js.map +1 -1
  277. package/dist/js/components/TextArea/TextArea.d.ts +0 -4
  278. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  279. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  280. package/dist/js/components/TextInputGroup/TextInputGroupMain.d.ts +2 -0
  281. package/dist/js/components/TextInputGroup/TextInputGroupMain.d.ts.map +1 -1
  282. package/dist/js/components/TextInputGroup/TextInputGroupMain.js +3 -3
  283. package/dist/js/components/TextInputGroup/TextInputGroupMain.js.map +1 -1
  284. package/dist/js/helpers/GenerateId/GenerateId.d.ts +5 -1
  285. package/dist/js/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  286. package/dist/js/helpers/GenerateId/GenerateId.js +14 -2
  287. package/dist/js/helpers/GenerateId/GenerateId.js.map +1 -1
  288. package/dist/js/helpers/Popper/Popper.js +2 -2
  289. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  290. package/dist/js/index.d.ts.map +1 -1
  291. package/dist/js/index.js.map +1 -1
  292. package/dist/js/next/components/DualListSelector/DualListSelector.d.ts +23 -0
  293. package/dist/js/next/components/DualListSelector/DualListSelector.d.ts.map +1 -0
  294. package/dist/js/next/components/DualListSelector/DualListSelector.js +26 -0
  295. package/dist/js/next/components/DualListSelector/DualListSelector.js.map +1 -0
  296. package/dist/js/next/components/DualListSelector/DualListSelectorContext.d.ts +19 -0
  297. package/dist/js/next/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -0
  298. package/dist/js/next/components/DualListSelector/DualListSelectorContext.js +9 -0
  299. package/dist/js/next/components/DualListSelector/DualListSelectorContext.js.map +1 -0
  300. package/dist/js/next/components/DualListSelector/DualListSelectorControl.d.ts +25 -0
  301. package/dist/js/next/components/DualListSelector/DualListSelectorControl.d.ts.map +1 -0
  302. package/dist/js/next/components/DualListSelector/DualListSelectorControl.js +22 -0
  303. package/dist/js/next/components/DualListSelector/DualListSelectorControl.js.map +1 -0
  304. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +15 -0
  305. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.d.ts.map +1 -0
  306. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.js +39 -0
  307. package/dist/js/next/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -0
  308. package/dist/js/next/components/DualListSelector/DualListSelectorList.d.ts +8 -0
  309. package/dist/js/next/components/DualListSelector/DualListSelectorList.d.ts.map +1 -0
  310. package/dist/js/next/components/DualListSelector/DualListSelectorList.js +30 -0
  311. package/dist/js/next/components/DualListSelector/DualListSelectorList.js.map +1 -0
  312. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.d.ts +29 -0
  313. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.d.ts.map +1 -0
  314. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.js +42 -0
  315. package/dist/js/next/components/DualListSelector/DualListSelectorListItem.js.map +1 -0
  316. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.d.ts +24 -0
  317. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -0
  318. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.js +63 -0
  319. package/dist/js/next/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -0
  320. package/dist/js/next/components/DualListSelector/DualListSelectorPane.d.ts +31 -0
  321. package/dist/js/next/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -0
  322. package/dist/js/next/components/DualListSelector/DualListSelectorPane.js +31 -0
  323. package/dist/js/next/components/DualListSelector/DualListSelectorPane.js.map +1 -0
  324. package/dist/js/next/components/DualListSelector/DualListSelectorTree.d.ts +48 -0
  325. package/dist/js/next/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -0
  326. package/dist/js/next/components/DualListSelector/DualListSelectorTree.js +19 -0
  327. package/dist/js/next/components/DualListSelector/DualListSelectorTree.js.map +1 -0
  328. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.d.ts +32 -0
  329. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -0
  330. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.js +78 -0
  331. package/dist/js/next/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -0
  332. package/dist/js/next/components/DualListSelector/index.d.ts +8 -0
  333. package/dist/js/next/components/DualListSelector/index.d.ts.map +1 -0
  334. package/dist/js/next/components/DualListSelector/index.js +11 -0
  335. package/dist/js/next/components/DualListSelector/index.js.map +1 -0
  336. package/dist/js/next/components/DualListSelector/treeUtils.d.ts +8 -0
  337. package/dist/js/next/components/DualListSelector/treeUtils.d.ts.map +1 -0
  338. package/dist/js/next/components/DualListSelector/treeUtils.js +77 -0
  339. package/dist/js/next/components/DualListSelector/treeUtils.js.map +1 -0
  340. package/dist/js/next/components/index.d.ts +1 -0
  341. package/dist/js/next/components/index.d.ts.map +1 -1
  342. package/dist/js/next/components/index.js +1 -0
  343. package/dist/js/next/components/index.js.map +1 -1
  344. package/dist/umd/react-core.min.js +3 -3
  345. package/helpers/package.json +1 -1
  346. package/layouts/package.json +1 -1
  347. package/next/package.json +1 -1
  348. package/package.json +6 -6
  349. package/src/components/CalendarMonth/CalendarMonth.tsx +38 -13
  350. package/src/components/Card/Card.tsx +24 -7
  351. package/src/components/Card/CardHeader.tsx +11 -10
  352. package/src/components/Card/examples/Card.md +11 -9
  353. package/src/components/Card/examples/CardClickableSelectable.tsx +11 -8
  354. package/src/components/Card/examples/CardSelectable.tsx +3 -6
  355. package/src/components/Card/examples/CardSingleSelectable.tsx +14 -6
  356. package/src/components/Chip/__tests__/ChipGroup.test.tsx +3 -1
  357. package/src/components/ClipboardCopy/ClipboardCopy.tsx +21 -7
  358. package/src/components/ClipboardCopy/ClipboardCopyExpanded.tsx +1 -0
  359. package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +2 -0
  360. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +1 -1
  361. package/src/components/DragDrop/examples/DragDrop.md +1 -0
  362. package/src/components/Drawer/__tests__/Drawer.test.tsx +2 -0
  363. package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +2 -0
  364. package/src/components/Drawer/__tests__/Generated/DrawerPanelContent.test.tsx +2 -0
  365. package/src/components/Drawer/__tests__/Generated/__snapshots__/DrawerPanelContent.test.tsx.snap +1 -1
  366. package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +8 -8
  367. package/src/components/Dropdown/Dropdown.tsx +14 -4
  368. package/src/components/Form/__tests__/FormFieldGroup.test.tsx +2 -0
  369. package/src/components/Form/__tests__/FormSection.test.tsx +2 -0
  370. package/src/components/Form/__tests__/__snapshots__/FormFieldGroup.test.tsx.snap +2 -2
  371. package/src/components/Form/__tests__/__snapshots__/FormSection.test.tsx.snap +2 -2
  372. package/src/components/Label/__tests__/LabelGroup.test.tsx +2 -0
  373. package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +8 -8
  374. package/src/components/Menu/Menu.tsx +5 -3
  375. package/src/components/Menu/MenuContainer.tsx +2 -2
  376. package/src/components/MenuToggle/MenuToggle.tsx +33 -0
  377. package/src/components/MenuToggle/MenuToggleCheckbox.tsx +2 -2
  378. package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +15 -0
  379. package/src/components/MenuToggle/examples/MenuToggle.md +28 -13
  380. package/src/components/MenuToggle/examples/MenuToggleStatus.tsx +20 -0
  381. package/src/components/MultipleFileUpload/__tests__/MultipleFileUpload.test.tsx +2 -0
  382. package/src/components/MultipleFileUpload/__tests__/MultipleFileUploadStatus.test.tsx +2 -0
  383. package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatus.test.tsx.snap +16 -16
  384. package/src/components/Pagination/PaginationOptionsMenu.tsx +2 -4
  385. package/src/components/SearchInput/SearchInput.tsx +4 -0
  386. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +1 -0
  387. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +2 -2
  388. package/src/components/Select/Select.tsx +15 -3
  389. package/src/components/Select/examples/Select.md +30 -11
  390. package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +6 -1
  391. package/src/components/Select/examples/SelectValidated.tsx +74 -0
  392. package/src/components/Tabs/__tests__/Tabs.test.tsx +2 -0
  393. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +3 -3
  394. package/src/components/TextArea/TextArea.tsx +0 -4
  395. package/src/components/TextInputGroup/TextInputGroupMain.tsx +5 -0
  396. package/src/components/TextInputGroup/__tests__/TextInputGroupMain.test.tsx +8 -0
  397. package/src/components/Toolbar/__tests__/Toolbar.test.tsx +2 -0
  398. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +11 -11
  399. package/src/demos/AlertGroup.md +1 -0
  400. package/src/demos/BackToTop.md +1 -0
  401. package/src/demos/Banner.md +5 -4
  402. package/src/demos/CardView/CardView.md +2 -0
  403. package/src/demos/CardView/examples/CardView.tsx +1 -1
  404. package/src/demos/DataList/examples/DataListBasic.tsx +1 -1
  405. package/src/demos/DataList/examples/DataListExpandableControlInToolbar.tsx +1 -1
  406. package/src/demos/DataListDemo.md +1 -0
  407. package/src/demos/Filters/examples/FilterAttributeSearch.tsx +1 -1
  408. package/src/demos/Filters/examples/FilterCheckboxSelect.tsx +1 -1
  409. package/src/demos/Filters/examples/FilterFaceted.tsx +1 -1
  410. package/src/demos/Filters/examples/FilterMixedSelectGroup.tsx +1 -1
  411. package/src/demos/Filters/examples/FilterSameSelectGroup.tsx +1 -1
  412. package/src/demos/Filters/examples/FilterSearchInput.tsx +1 -1
  413. package/src/demos/Filters/examples/FilterSingleSelect.tsx +1 -1
  414. package/src/demos/JumpLinks.md +2 -1
  415. package/src/demos/PrimaryDetail.md +1 -0
  416. package/src/demos/RTL/RTL.md +1 -1
  417. package/src/demos/RTL/examples/{PaginatedTable.jsx → PaginatedTable.tsx} +48 -22
  418. package/src/demos/Tabs.md +5 -2
  419. package/src/demos/Toolbar.md +1 -0
  420. package/src/demos/Wizard/WizardDemo.md +1 -0
  421. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +1 -1
  422. package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +1 -1
  423. package/src/demos/examples/Card/CardStatus.tsx +1 -1
  424. package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +1 -1
  425. package/src/demos/examples/Nav/NavDefault.tsx +1 -1
  426. package/src/demos/examples/Nav/NavExpandable.tsx +1 -1
  427. package/src/demos/examples/Nav/NavHorizontal.tsx +1 -1
  428. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +1 -1
  429. package/src/demos/examples/Nav/NavWithSubnav.tsx +1 -1
  430. package/src/demos/examples/Nav/deprecated/NavTertiary.tsx +1 -1
  431. package/src/demos/examples/PrimaryDetail/PrimaryDetailCardView.tsx +1 -1
  432. package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +1 -1
  433. package/src/demos/examples/PrimaryDetail/PrimaryDetailDataListInCard.tsx +1 -1
  434. package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +1 -1
  435. package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +1 -1
  436. package/src/demos/examples/PrimaryDetail/PrimaryDetailSimpleListInCard.tsx +1 -1
  437. package/src/demos/examples/Tabs/ModalTabs.tsx +1 -1
  438. package/src/demos/examples/Tabs/NestedTabs.tsx +1 -1
  439. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +1 -1
  440. package/src/demos/examples/Tabs/TabsAndTable.tsx +2 -2
  441. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -1
  442. package/src/demos/examples/Wizard/InModal.tsx +1 -1
  443. package/src/demos/examples/Wizard/InPage.tsx +1 -1
  444. package/src/deprecated/components/Select/__tests__/Select.test.tsx +2 -0
  445. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +25 -25
  446. package/src/helpers/GenerateId/GenerateId.ts +17 -3
  447. package/src/helpers/GenerateId/__mocks__/GenerateId.ts +11 -0
  448. package/src/helpers/GenerateId/__tests__/GenerateId.test.tsx +3 -1
  449. package/src/helpers/Popper/Popper.tsx +1 -1
  450. package/src/index.ts +0 -1
  451. package/src/next/components/DualListSelector/DualListSelector.tsx +50 -0
  452. package/src/next/components/DualListSelector/DualListSelectorContext.ts +21 -0
  453. package/src/next/components/DualListSelector/DualListSelectorControl.tsx +66 -0
  454. package/src/next/components/DualListSelector/DualListSelectorControlsWrapper.tsx +87 -0
  455. package/src/next/components/DualListSelector/DualListSelectorList.tsx +57 -0
  456. package/src/next/components/DualListSelector/DualListSelectorListItem.tsx +105 -0
  457. package/src/next/components/DualListSelector/DualListSelectorListWrapper.tsx +124 -0
  458. package/src/next/components/DualListSelector/DualListSelectorPane.tsx +94 -0
  459. package/src/next/components/DualListSelector/DualListSelectorTree.tsx +110 -0
  460. package/src/next/components/DualListSelector/DualListSelectorTreeItem.tsx +184 -0
  461. package/src/next/components/DualListSelector/__tests__/DualListSelector.test.tsx +26 -0
  462. package/src/next/components/DualListSelector/__tests__/__snapshots__/DualListSelector.test.tsx.snap +122 -0
  463. package/src/next/components/DualListSelector/examples/DualListSelector.md +99 -0
  464. package/src/next/components/DualListSelector/examples/DualListSelectorBasic.tsx +157 -0
  465. package/src/next/components/DualListSelector/examples/DualListSelectorBasicSearch.tsx +214 -0
  466. package/src/next/components/DualListSelector/examples/DualListSelectorBasicTooltips.tsx +165 -0
  467. package/src/next/components/DualListSelector/examples/DualListSelectorComplexOptionsActions.tsx +347 -0
  468. package/src/next/components/DualListSelector/examples/DualListSelectorDragDrop.tsx +184 -0
  469. package/src/next/components/DualListSelector/examples/DualListSelectorTree.tsx +380 -0
  470. package/src/next/components/DualListSelector/index.ts +7 -0
  471. package/src/next/components/DualListSelector/treeUtils.ts +81 -0
  472. package/src/next/components/index.ts +1 -0
  473. package/dist/esm/demos/index.d.ts +0 -3
  474. package/dist/esm/demos/index.d.ts.map +0 -1
  475. package/dist/esm/demos/index.js +0 -3
  476. package/dist/esm/demos/index.js.map +0 -1
  477. package/dist/js/demos/index.d.ts +0 -3
  478. package/dist/js/demos/index.d.ts.map +0 -1
  479. package/dist/js/demos/index.js +0 -6
  480. package/dist/js/demos/index.js.map +0 -1
  481. package/src/demos/index.ts +0 -2
@@ -19,7 +19,7 @@ exports[`Drawer expands from bottom 1`] = `
19
19
  </div>
20
20
  <div
21
21
  class="pf-v5-c-drawer__panel"
22
- id="pf-drawer-panel-5"
22
+ id="generated-id"
23
23
  >
24
24
  <div
25
25
  class="pf-v5-c-drawer__body"
@@ -187,11 +187,11 @@ exports[`Drawer has resizable css and color variants 1`] = `
187
187
  </div>
188
188
  <div
189
189
  class="pf-v5-c-drawer__panel pf-m-resizable pf-m-light-200"
190
- id="pf-drawer-panel-6"
190
+ id="generated-id"
191
191
  style="--pf-v5-c-drawer__panel--md--FlexBasis: 300px; --pf-v5-c-drawer__panel--md--FlexBasis--min: 200px; --pf-v5-c-drawer__panel--md--FlexBasis--max: 400px;"
192
192
  >
193
193
  <div
194
- aria-controls="pf-drawer-panel-6"
194
+ aria-controls="generated-id"
195
195
  aria-label="Resize"
196
196
  aria-orientation="vertical"
197
197
  aria-valuemax="100"
@@ -283,7 +283,7 @@ exports[`Drawer isExpanded = false and isInline = false and isStatic = false 1`]
283
283
  <div
284
284
  class="pf-v5-c-drawer__panel"
285
285
  hidden=""
286
- id="pf-drawer-panel-1"
286
+ id="generated-id"
287
287
  />
288
288
  </div>
289
289
  </div>
@@ -310,7 +310,7 @@ exports[`Drawer isExpanded = false and isInline = true and isStatic = false 1`]
310
310
  <div
311
311
  class="pf-v5-c-drawer__panel"
312
312
  hidden=""
313
- id="pf-drawer-panel-3"
313
+ id="generated-id"
314
314
  />
315
315
  </div>
316
316
  </div>
@@ -336,7 +336,7 @@ exports[`Drawer isExpanded = true and isInline = false and isStatic = false 1`]
336
336
  </div>
337
337
  <div
338
338
  class="pf-v5-c-drawer__panel"
339
- id="pf-drawer-panel-0"
339
+ id="generated-id"
340
340
  >
341
341
  <div
342
342
  class="pf-v5-c-drawer__body"
@@ -410,7 +410,7 @@ exports[`Drawer isExpanded = true and isInline = false and isStatic = true 1`] =
410
410
  </div>
411
411
  <div
412
412
  class="pf-v5-c-drawer__panel"
413
- id="pf-drawer-panel-4"
413
+ id="generated-id"
414
414
  >
415
415
  <div
416
416
  class="pf-v5-c-drawer__body"
@@ -484,7 +484,7 @@ exports[`Drawer isExpanded = true and isInline = true and isStatic = false 1`] =
484
484
  </div>
485
485
  <div
486
486
  class="pf-v5-c-drawer__panel"
487
- id="pf-drawer-panel-2"
487
+ id="generated-id"
488
488
  >
489
489
  <div
490
490
  class="pf-v5-c-drawer__body"
@@ -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 (
@@ -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-v5-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-v5-c-form__section"
17
17
  role="group"
18
18
  >
19
19
  <h4
20
20
  class="pf-v5-c-form__section-title"
21
- id="pf-form-section-title1"
21
+ id="generated-id"
22
22
  >
23
23
  Title
24
24
  </h4>
@@ -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-v5-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-v5-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-v5-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-v5-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-v5-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-v5-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-v5-c-button pf-m-plain"
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
@@ -156,8 +156,11 @@ class MenuBase extends React.Component<MenuProps, MenuState> {
156
156
  this.setState({ transitionMoveTarget: null });
157
157
  } else {
158
158
  const nextMenu = current.querySelector('#' + this.props.activeMenu) || current || null;
159
- const nextMenuChildren = Array.from(nextMenu.getElementsByTagName('UL')[0].children);
160
-
159
+ const nextMenuLists = nextMenu.getElementsByTagName('UL');
160
+ if (nextMenuLists.length === 0) {
161
+ return;
162
+ }
163
+ const nextMenuChildren = Array.from(nextMenuLists[0].children);
161
164
  if (!this.state.currentDrilldownMenuId || nextMenu.id !== this.state.currentDrilldownMenuId) {
162
165
  this.setState({ currentDrilldownMenuId: nextMenu.id });
163
166
  } else {
@@ -167,7 +170,6 @@ class MenuBase extends React.Component<MenuProps, MenuState> {
167
170
  const nextTarget = nextMenuChildren.filter(
168
171
  (el) => !(el.classList.contains('pf-m-disabled') || el.classList.contains(styles.divider))
169
172
  )[0].firstChild;
170
-
171
173
  (nextTarget as HTMLElement).focus();
172
174
  (nextTarget as HTMLElement).tabIndex = 0;
173
175
  }
@@ -69,8 +69,8 @@ export const MenuContainer: React.FunctionComponent<MenuContainerProps> = ({
69
69
  };
70
70
 
71
71
  const handleClick = (event: MouseEvent) => {
72
- // toggle was clicked open via keyboard, focus on first menu item
73
- if (isOpen && toggleRef.current?.contains(event.target as Node) && event.detail === 0) {
72
+ // toggle was opened, focus on first menu item
73
+ if (isOpen && toggleRef.current?.contains(event.target as Node)) {
74
74
  setTimeout(() => {
75
75
  const firstElement = menuRef?.current?.querySelector(
76
76
  'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
@@ -3,6 +3,15 @@ import styles from '@patternfly/react-styles/css/components/MenuToggle/menu-togg
3
3
  import { css } from '@patternfly/react-styles';
4
4
  import CaretDownIcon from '@patternfly/react-icons/dist/esm/icons/caret-down-icon';
5
5
  import { BadgeProps } from '../Badge';
6
+ import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
7
+ import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';
8
+ import ExclamationTriangleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon';
9
+
10
+ export enum MenuToggleStatus {
11
+ success = 'success',
12
+ danger = 'danger',
13
+ warning = 'warning'
14
+ }
6
15
 
7
16
  export type MenuToggleElement = HTMLDivElement | HTMLButtonElement;
8
17
 
@@ -37,6 +46,10 @@ export interface MenuToggleProps
37
46
  splitButtonOptions?: SplitButtonOptions;
38
47
  /** Variant styles of the menu toggle */
39
48
  variant?: 'default' | 'plain' | 'primary' | 'plainText' | 'secondary' | 'typeahead';
49
+ /** @beta Status styles of the menu toggle */
50
+ status?: 'success' | 'warning' | 'danger';
51
+ /** Overrides the status icon */
52
+ statusIcon?: React.ReactNode;
40
53
  /** Optional icon or image rendered inside the toggle, before the children content. It is
41
54
  * recommended to wrap most basic icons in our icon component.
42
55
  */
@@ -69,6 +82,8 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
69
82
  isFullWidth,
70
83
  splitButtonOptions,
71
84
  variant,
85
+ status,
86
+ statusIcon,
72
87
  innerRef,
73
88
  onClick,
74
89
  'aria-label': ariaLabel,
@@ -77,8 +92,25 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
77
92
  const isPlain = variant === 'plain';
78
93
  const isPlainText = variant === 'plainText';
79
94
  const isTypeahead = variant === 'typeahead';
95
+
96
+ let _statusIcon = statusIcon;
97
+ if (!statusIcon) {
98
+ switch (status) {
99
+ case MenuToggleStatus.success:
100
+ _statusIcon = <CheckCircleIcon aria-hidden="true" />;
101
+ break;
102
+ case MenuToggleStatus.warning:
103
+ _statusIcon = <ExclamationTriangleIcon aria-hidden="true" />;
104
+ break;
105
+ case MenuToggleStatus.danger:
106
+ _statusIcon = <ExclamationCircleIcon aria-hidden="true" />;
107
+ break;
108
+ }
109
+ }
110
+
80
111
  const toggleControls = (
81
112
  <span className={css(styles.menuToggleControls)}>
113
+ {status !== undefined && <span className={css(styles.menuToggleStatusIcon)}>{_statusIcon}</span>}
82
114
  <span className={css(styles.menuToggleToggleIcon)}>
83
115
  <CaretDownIcon aria-hidden />
84
116
  </span>
@@ -111,6 +143,7 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
111
143
  isExpanded && styles.modifiers.expanded,
112
144
  variant === 'primary' && styles.modifiers.primary,
113
145
  variant === 'secondary' && styles.modifiers.secondary,
146
+ status && styles.modifiers[status],
114
147
  (isPlain || isPlainText) && styles.modifiers.plain,
115
148
  isPlainText && styles.modifiers.text,
116
149
  isFullHeight && styles.modifiers.fullHeight,
@@ -84,7 +84,7 @@ class MenuToggleCheckbox extends React.Component<MenuToggleCheckboxProps, { ouia
84
84
  </span>
85
85
  );
86
86
  return (
87
- <label className={css(styles.check, !children && styles.modifiers.standalone, className)} htmlFor={id}>
87
+ <label className={css(styles.check, !children && styles.modifiers.standalone, className)}>
88
88
  <input
89
89
  className={css(styles.checkInput)}
90
90
  {...(this.calculateChecked() !== undefined && { onChange: this.handleChange })}
@@ -93,7 +93,7 @@ class MenuToggleCheckbox extends React.Component<MenuToggleCheckboxProps, { ouia
93
93
  ref={(elem) => elem && (elem.indeterminate = isChecked === null)}
94
94
  aria-invalid={!isValid}
95
95
  disabled={isDisabled}
96
- {...(defaultChecked !== undefined ? { defaultChecked } : { checked: isChecked })}
96
+ {...(defaultChecked !== undefined ? { defaultChecked } : { checked: this.calculateChecked() })}
97
97
  {...getOUIAProps(
98
98
  MenuToggleCheckbox.displayName,
99
99
  ouiaId !== undefined ? ouiaId : this.state.ouiaStateId,
@@ -57,6 +57,21 @@ describe('menu toggle', () => {
57
57
  expect(asFragment()).toMatchSnapshot();
58
58
  });
59
59
 
60
+ test('shows success status', () => {
61
+ render(<MenuToggle status="success">Toggle</MenuToggle>);
62
+ expect(screen.getByRole('button')).toHaveClass('pf-m-success');
63
+ });
64
+
65
+ test('shows warning status', () => {
66
+ render(<MenuToggle status="warning">Toggle</MenuToggle>);
67
+ expect(screen.getByRole('button')).toHaveClass('pf-m-warning');
68
+ });
69
+
70
+ test('shows danger status', () => {
71
+ render(<MenuToggle status="danger">Toggle</MenuToggle>);
72
+ expect(screen.getByRole('button')).toHaveClass('pf-m-danger');
73
+ });
74
+
60
75
  test('split toggle passes onClick', async () => {
61
76
  const mockClick = jest.fn();
62
77
  const user = userEvent.setup();
@@ -17,7 +17,7 @@ import TimesIcon from '@patternfly/react-icons/dist/esm/icons/times-icon';
17
17
 
18
18
  ### Collapsed toggle
19
19
 
20
- A toggle is collapsed until it is selected by a user.
20
+ A toggle is collapsed until it is selected by a user.
21
21
 
22
22
  ```ts
23
23
  import React from 'react';
@@ -29,7 +29,7 @@ import { MenuToggle } from '@patternfly/react-core';
29
29
 
30
30
  ### Expanded toggle
31
31
 
32
- When a user selects a toggle, it becomes expanded and is styled with a blue underline. To flag expanded toggles, and apply expanded styling, use the `isExpanded` property .
32
+ When a user selects a toggle, it becomes expanded and is styled with a blue underline. To flag expanded toggles, and apply expanded styling, use the `isExpanded` property .
33
33
 
34
34
  ```ts
35
35
  import React from 'react';
@@ -41,7 +41,7 @@ import { MenuToggle } from '@patternfly/react-core';
41
41
 
42
42
  ### Disabled toggle
43
43
 
44
- To disable the selection and expansion of a toggle, use the `isDisabled` property.
44
+ To disable the selection and expansion of a toggle, use the `isDisabled` property.
45
45
 
46
46
  ```ts
47
47
  import React from 'react';
@@ -65,7 +65,7 @@ import { MenuToggle, Badge } from '@patternfly/react-core';
65
65
 
66
66
  ### With icons
67
67
 
68
- To add a recognizable icon to a menu toggle, use the `icon` property. The following example adds a `CogIcon` to the toggle.
68
+ To add a recognizable icon to a menu toggle, use the `icon` property. The following example adds a `CogIcon` to the toggle.
69
69
 
70
70
  For most basic icons, it is recommended to wrap it inside our [icon component](/components/icon).
71
71
 
@@ -111,7 +111,7 @@ import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
111
111
 
112
112
  ### With avatar and text
113
113
 
114
- You can also pass images into the `icon` property. The following example passes in an `<Avatar>` component with an `imgAvatar`.
114
+ You can also pass images into the `icon` property. The following example passes in an `<Avatar>` component with an `imgAvatar`.
115
115
 
116
116
  This can be used alongside a text label that provides more context for the image.
117
117
 
@@ -150,9 +150,9 @@ import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
150
150
 
151
151
  ### Plain toggle with icon
152
152
 
153
- To apply plain styling to a menu toggle with an icon, pass in `variant="plain"`. This will remove the default bottom border and caret. You may pass in an `icon` to serve as the menu toggle. The following example passes in an `EllipsisVIcon`.
153
+ To apply plain styling to a menu toggle with an icon, pass in `variant="plain"`. This will remove the default bottom border and caret. You may pass in an `icon` to serve as the menu toggle. The following example passes in an `EllipsisVIcon`.
154
154
 
155
- If the toggle does not have any visible text content, use the `aria-label` property to provide an accessible name.
155
+ If the toggle does not have any visible text content, use the `aria-label` property to provide an accessible name.
156
156
 
157
157
  ```ts
158
158
  import React from 'react';
@@ -171,6 +171,7 @@ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-ico
171
171
  </MenuToggle>
172
172
  </React.Fragment>
173
173
  ```
174
+
174
175
  ### Plain toggle with text label
175
176
 
176
177
  To apply plain styling to a menu toggle with a text label, pass in `variant="plainText"`. Unlike the “plain” variant, “plainText” adds a caret pointing down in the toggle.
@@ -201,27 +202,30 @@ The following example shows a split button with a `<MenuToggleCheckbox>`.
201
202
  Variant styling can be applied to split button toggles to adjust their appearance for different scenarios. Both "primary" and "secondary" variants can be used with split button toggles.
202
203
 
203
204
  ```ts file='MenuToggleSplitButtonCheckbox.tsx'
205
+
204
206
  ```
205
207
 
206
208
  ### Split button toggle with text label
207
209
 
208
- To display text in a split button menu toggle, add a label to the `items` property of `splitButtonOptions`.
210
+ To display text in a split button menu toggle, add a label to the `items` property of `splitButtonOptions`.
209
211
 
210
212
  ```ts file='MenuToggleSplitButtonCheckboxWithText.tsx'
213
+
211
214
  ```
212
215
 
213
216
  ### Split button toggle with action
214
217
 
215
- To add an action to a split button, pass `variant='action'` into `splitButtonOptions` and add a `<MenuToggleAction>` to the `items` property of `splitButtonOptions`.
218
+ To add an action to a split button, pass `variant='action'` into `splitButtonOptions` and add a `<MenuToggleAction>` to the `items` property of `splitButtonOptions`.
216
219
 
217
220
  Actions may be used with primary and secondary toggle variants.
218
-
221
+
219
222
  ```ts file='MenuToggleSplitButtonAction.tsx'
223
+
220
224
  ```
221
225
 
222
226
  ### Full height toggle
223
227
 
224
- A full height toggle fills the height of its parent. To flag a full height toggle, use the `isFullHeight` property.
228
+ A full height toggle fills the height of its parent. To flag a full height toggle, use the `isFullHeight` property.
225
229
 
226
230
  In the following example, the toggle fills the size of the "80px" `<div>` element that it is within.
227
231
 
@@ -238,7 +242,7 @@ import { MenuToggle } from '@patternfly/react-core';
238
242
 
239
243
  ### Full width toggle
240
244
 
241
- A full width toggle fills the width of its parent. To flag a full width toggle, use the `isFullWidth` property.
245
+ A full width toggle fills the width of its parent. To flag a full width toggle, use the `isFullWidth` property.
242
246
 
243
247
  In the following example, the toggle fills the width of its parent as the window size changes.
244
248
 
@@ -249,7 +253,7 @@ import { MenuToggle } from '@patternfly/react-core';
249
253
  const fullWidth: React.FunctionComponent = () => {
250
254
  return (
251
255
  <MenuToggle isFullWidth aria-label="Full width menu toggle" >
252
- Full width
256
+ Full width
253
257
  </MenuToggle>
254
258
  );
255
259
  }
@@ -262,4 +266,15 @@ To create a typeahead toggle, pass in `variant="typeahead"` to the `<MenuToggle>
262
266
  To create a multiple typeahead toggle, pass a `<TextInputGroup>` component implemented like the [text input group's filter example](/components/text-input-group#filters) as a child of `<MenuToggle>`.
263
267
 
264
268
  ```ts file='MenuToggleTypeahead.tsx'
269
+
270
+ ```
271
+
272
+ ### Status toggle
273
+
274
+ To create a toggle with a status, pass in the `status` property to the `MenuToggle`. The default icon associated with each status may be overridden by using the `statusIcon` property.
275
+
276
+ When the status value is "warning" or "danger", you must include helper text that conveys what is causing the warning/error.
277
+
278
+ ```ts isBeta file='MenuToggleStatus.tsx'
279
+
265
280
  ```
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { MenuToggle, HelperText, HelperTextItem } from '@patternfly/react-core';
3
+
4
+ export const MenuToggleStatus: React.FunctionComponent = () => (
5
+ <React.Fragment>
6
+ <MenuToggle status="success">Success</MenuToggle>
7
+ <br />
8
+ <br />
9
+ <MenuToggle status="warning">Warning</MenuToggle>
10
+ <HelperText>
11
+ <HelperTextItem variant="warning">Warning text that explains the issue.</HelperTextItem>
12
+ </HelperText>
13
+ <br />
14
+ <br />
15
+ <MenuToggle status="danger">Danger</MenuToggle>
16
+ <HelperText>
17
+ <HelperTextItem variant="error">Danger text that explains the issue.</HelperTextItem>
18
+ </HelperText>
19
+ </React.Fragment>
20
+ );
@@ -2,6 +2,8 @@ import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
  import { MultipleFileUpload } from '../MultipleFileUpload';
4
4
 
5
+ jest.mock('../../../helpers/GenerateId/GenerateId');
6
+
5
7
  describe('MultipleFileUpload', () => {
6
8
  test('renders with expected class names when not horizontal', () => {
7
9
  const { asFragment } = render(<MultipleFileUpload>Foo</MultipleFileUpload>);
@@ -3,6 +3,8 @@ import { render } from '@testing-library/react';
3
3
  import { MultipleFileUploadStatus } from '../MultipleFileUploadStatus';
4
4
  import InProgressIcon from '@patternfly/react-icons/dist/esm/icons/in-progress-icon';
5
5
 
6
+ jest.mock('../../../helpers/GenerateId/GenerateId');
7
+
6
8
  describe('MultipleFileUploadStatus', () => {
7
9
  test('renders with expected class names', () => {
8
10
  const { asFragment } = render(<MultipleFileUploadStatus>Foo</MultipleFileUploadStatus>);