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

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 (479) hide show
  1. package/CHANGELOG.md +107 -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/Tabs.md +5 -2
  417. package/src/demos/Toolbar.md +1 -0
  418. package/src/demos/Wizard/WizardDemo.md +1 -0
  419. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +1 -1
  420. package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +1 -1
  421. package/src/demos/examples/Card/CardStatus.tsx +1 -1
  422. package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +1 -1
  423. package/src/demos/examples/Nav/NavDefault.tsx +1 -1
  424. package/src/demos/examples/Nav/NavExpandable.tsx +1 -1
  425. package/src/demos/examples/Nav/NavHorizontal.tsx +1 -1
  426. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +1 -1
  427. package/src/demos/examples/Nav/NavWithSubnav.tsx +1 -1
  428. package/src/demos/examples/Nav/deprecated/NavTertiary.tsx +1 -1
  429. package/src/demos/examples/PrimaryDetail/PrimaryDetailCardView.tsx +1 -1
  430. package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +1 -1
  431. package/src/demos/examples/PrimaryDetail/PrimaryDetailDataListInCard.tsx +1 -1
  432. package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +1 -1
  433. package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +1 -1
  434. package/src/demos/examples/PrimaryDetail/PrimaryDetailSimpleListInCard.tsx +1 -1
  435. package/src/demos/examples/Tabs/ModalTabs.tsx +1 -1
  436. package/src/demos/examples/Tabs/NestedTabs.tsx +1 -1
  437. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +1 -1
  438. package/src/demos/examples/Tabs/TabsAndTable.tsx +2 -2
  439. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -1
  440. package/src/demos/examples/Wizard/InModal.tsx +1 -1
  441. package/src/demos/examples/Wizard/InPage.tsx +1 -1
  442. package/src/deprecated/components/Select/__tests__/Select.test.tsx +2 -0
  443. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +25 -25
  444. package/src/helpers/GenerateId/GenerateId.ts +17 -3
  445. package/src/helpers/GenerateId/__mocks__/GenerateId.ts +11 -0
  446. package/src/helpers/GenerateId/__tests__/GenerateId.test.tsx +3 -1
  447. package/src/helpers/Popper/Popper.tsx +1 -1
  448. package/src/index.ts +0 -1
  449. package/src/next/components/DualListSelector/DualListSelector.tsx +50 -0
  450. package/src/next/components/DualListSelector/DualListSelectorContext.ts +21 -0
  451. package/src/next/components/DualListSelector/DualListSelectorControl.tsx +66 -0
  452. package/src/next/components/DualListSelector/DualListSelectorControlsWrapper.tsx +87 -0
  453. package/src/next/components/DualListSelector/DualListSelectorList.tsx +57 -0
  454. package/src/next/components/DualListSelector/DualListSelectorListItem.tsx +105 -0
  455. package/src/next/components/DualListSelector/DualListSelectorListWrapper.tsx +124 -0
  456. package/src/next/components/DualListSelector/DualListSelectorPane.tsx +94 -0
  457. package/src/next/components/DualListSelector/DualListSelectorTree.tsx +110 -0
  458. package/src/next/components/DualListSelector/DualListSelectorTreeItem.tsx +184 -0
  459. package/src/next/components/DualListSelector/__tests__/DualListSelector.test.tsx +26 -0
  460. package/src/next/components/DualListSelector/__tests__/__snapshots__/DualListSelector.test.tsx.snap +122 -0
  461. package/src/next/components/DualListSelector/examples/DualListSelector.md +99 -0
  462. package/src/next/components/DualListSelector/examples/DualListSelectorBasic.tsx +157 -0
  463. package/src/next/components/DualListSelector/examples/DualListSelectorBasicSearch.tsx +214 -0
  464. package/src/next/components/DualListSelector/examples/DualListSelectorBasicTooltips.tsx +165 -0
  465. package/src/next/components/DualListSelector/examples/DualListSelectorComplexOptionsActions.tsx +347 -0
  466. package/src/next/components/DualListSelector/examples/DualListSelectorDragDrop.tsx +184 -0
  467. package/src/next/components/DualListSelector/examples/DualListSelectorTree.tsx +380 -0
  468. package/src/next/components/DualListSelector/index.ts +7 -0
  469. package/src/next/components/DualListSelector/treeUtils.ts +81 -0
  470. package/src/next/components/index.ts +1 -0
  471. package/dist/esm/demos/index.d.ts +0 -3
  472. package/dist/esm/demos/index.d.ts.map +0 -1
  473. package/dist/esm/demos/index.js +0 -3
  474. package/dist/esm/demos/index.js.map +0 -1
  475. package/dist/js/demos/index.d.ts +0 -3
  476. package/dist/js/demos/index.d.ts.map +0 -1
  477. package/dist/js/demos/index.js +0 -6
  478. package/dist/js/demos/index.js.map +0 -1
  479. package/src/demos/index.ts +0 -2
@@ -9,10 +9,10 @@ exports[`MultipleFileUploadStatus renders custom class names 1`] = `
9
9
  class="pf-v5-c-expandable-section pf-m-expanded"
10
10
  >
11
11
  <button
12
- aria-controls="pf-expandable-section-1-content"
12
+ aria-controls="generated-id-content"
13
13
  aria-expanded="true"
14
14
  class="pf-v5-c-expandable-section__toggle"
15
- id="pf-expandable-section-1-toggle"
15
+ id="generated-id-toggle"
16
16
  type="button"
17
17
  >
18
18
  <span
@@ -48,9 +48,9 @@ exports[`MultipleFileUploadStatus renders custom class names 1`] = `
48
48
  </span>
49
49
  </button>
50
50
  <div
51
- aria-labelledby="pf-expandable-section-1-toggle"
51
+ aria-labelledby="generated-id-toggle"
52
52
  class="pf-v5-c-expandable-section__content"
53
- id="pf-expandable-section-1-content"
53
+ id="generated-id-content"
54
54
  role="region"
55
55
  >
56
56
  <ul
@@ -74,10 +74,10 @@ exports[`MultipleFileUploadStatus renders status toggle icon 1`] = `
74
74
  class="pf-v5-c-expandable-section pf-m-expanded"
75
75
  >
76
76
  <button
77
- aria-controls="pf-expandable-section-3-content"
77
+ aria-controls="generated-id-content"
78
78
  aria-expanded="true"
79
79
  class="pf-v5-c-expandable-section__toggle"
80
- id="pf-expandable-section-3-toggle"
80
+ id="generated-id-toggle"
81
81
  type="button"
82
82
  >
83
83
  <span
@@ -127,9 +127,9 @@ exports[`MultipleFileUploadStatus renders status toggle icon 1`] = `
127
127
  </span>
128
128
  </button>
129
129
  <div
130
- aria-labelledby="pf-expandable-section-3-toggle"
130
+ aria-labelledby="generated-id-toggle"
131
131
  class="pf-v5-c-expandable-section__content"
132
- id="pf-expandable-section-3-content"
132
+ id="generated-id-content"
133
133
  role="region"
134
134
  >
135
135
  <ul
@@ -153,10 +153,10 @@ exports[`MultipleFileUploadStatus renders status toggle text 1`] = `
153
153
  class="pf-v5-c-expandable-section pf-m-expanded"
154
154
  >
155
155
  <button
156
- aria-controls="pf-expandable-section-2-content"
156
+ aria-controls="generated-id-content"
157
157
  aria-expanded="true"
158
158
  class="pf-v5-c-expandable-section__toggle"
159
- id="pf-expandable-section-2-toggle"
159
+ id="generated-id-toggle"
160
160
  type="button"
161
161
  >
162
162
  <span
@@ -194,9 +194,9 @@ exports[`MultipleFileUploadStatus renders status toggle text 1`] = `
194
194
  </span>
195
195
  </button>
196
196
  <div
197
- aria-labelledby="pf-expandable-section-2-toggle"
197
+ aria-labelledby="generated-id-toggle"
198
198
  class="pf-v5-c-expandable-section__content"
199
- id="pf-expandable-section-2-content"
199
+ id="generated-id-content"
200
200
  role="region"
201
201
  >
202
202
  <ul
@@ -220,10 +220,10 @@ exports[`MultipleFileUploadStatus renders with expected class names 1`] = `
220
220
  class="pf-v5-c-expandable-section pf-m-expanded"
221
221
  >
222
222
  <button
223
- aria-controls="pf-expandable-section-0-content"
223
+ aria-controls="generated-id-content"
224
224
  aria-expanded="true"
225
225
  class="pf-v5-c-expandable-section__toggle"
226
- id="pf-expandable-section-0-toggle"
226
+ id="generated-id-toggle"
227
227
  type="button"
228
228
  >
229
229
  <span
@@ -259,9 +259,9 @@ exports[`MultipleFileUploadStatus renders with expected class names 1`] = `
259
259
  </span>
260
260
  </button>
261
261
  <div
262
- aria-labelledby="pf-expandable-section-0-toggle"
262
+ aria-labelledby="generated-id-toggle"
263
263
  class="pf-v5-c-expandable-section__content"
264
- id="pf-expandable-section-0-content"
264
+ id="generated-id-content"
265
265
  role="region"
266
266
  >
267
267
  <ul
@@ -124,10 +124,8 @@ export const PaginationOptionsMenu: React.FunctionComponent<PaginationOptionsMen
124
124
  };
125
125
 
126
126
  const handleClick = (event: MouseEvent) => {
127
- // If the event is on the toggle and was fired via keyboard 'click', focus the first
128
- // non-disabled menu item
129
- // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
130
- if (event.detail === 0 && isOpen && toggleRef.current?.contains(event.target as Node)) {
127
+ // Focus the first non-disabled menu item on toggle 'click'
128
+ if (isOpen && toggleRef.current?.contains(event.target as Node)) {
131
129
  setTimeout(() => {
132
130
  const firstElement = menuRef?.current?.querySelector('li button:not(:disabled)');
133
131
  firstElement && (firstElement as HTMLElement).focus();
@@ -75,6 +75,8 @@ export interface SearchInputProps extends Omit<React.HTMLProps<HTMLDivElement>,
75
75
  hasWordsAttrLabel?: React.ReactNode;
76
76
  /** A suggestion for autocompleting. */
77
77
  hint?: string;
78
+ /** Id for the search input */
79
+ searchInputId?: string;
78
80
  /** @hide A reference object to attach to the input box. */
79
81
  innerRef?: React.RefObject<any>;
80
82
  /** A flag for controlling the open state of a custom advanced search implementation. */
@@ -126,6 +128,7 @@ export interface SearchInputProps extends Omit<React.HTMLProps<HTMLDivElement>,
126
128
 
127
129
  const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
128
130
  className,
131
+ searchInputId,
129
132
  value = '',
130
133
  attributes = [] as string[],
131
134
  formAdditionalItems,
@@ -298,6 +301,7 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
298
301
  onKeyDown={onEnter}
299
302
  onChange={onChangeHandler}
300
303
  name={name}
304
+ inputId={searchInputId}
301
305
  />
302
306
  {(renderUtilities || areUtilitiesDisplayed) && (
303
307
  <TextInputGroupUtilities>
@@ -11,6 +11,7 @@ import badgeStyles from '@patternfly/react-styles/css/components/Badge/badge';
11
11
  import textInputGroupStyles from '@patternfly/react-styles/css/components/TextInputGroup/text-input-group';
12
12
 
13
13
  jest.mock('../../../helpers/OUIA/ouia');
14
+ jest.mock('../../../helpers/GenerateId/GenerateId');
14
15
 
15
16
  const props = {
16
17
  onChange: jest.fn(),
@@ -364,7 +364,7 @@ exports[`SearchInput advanced search with custom attributes 1`] = `
364
364
  >
365
365
  <label
366
366
  class="pf-v5-c-form__label"
367
- for="pf-random-id-2"
367
+ for="generated-id"
368
368
  >
369
369
  <span
370
370
  class="pf-v5-c-form__label-text"
@@ -382,7 +382,7 @@ exports[`SearchInput advanced search with custom attributes 1`] = `
382
382
  >
383
383
  <input
384
384
  aria-invalid="false"
385
- id="pf-random-id-2"
385
+ id="generated-id"
386
386
  type="text"
387
387
  value=""
388
388
  />
@@ -70,6 +70,12 @@ export interface SelectProps extends MenuProps, OUIAProps {
70
70
  role?: string;
71
71
  /** Additional properties to pass to the popper */
72
72
  popperProps?: SelectPopperProps;
73
+ /** Height of the select menu */
74
+ menuHeight?: string;
75
+ /** Maximum height of select menu */
76
+ maxMenuHeight?: string;
77
+ /** Indicates if the select menu should be scrollable */
78
+ isScrollable?: boolean;
73
79
  }
74
80
 
75
81
  const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
@@ -87,6 +93,9 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
87
93
  zIndex = 9999,
88
94
  role = 'listbox',
89
95
  popperProps,
96
+ menuHeight,
97
+ maxMenuHeight,
98
+ isScrollable,
90
99
  ...props
91
100
  }: SelectProps & OUIAProps) => {
92
101
  const localMenuRef = React.useRef<HTMLDivElement>();
@@ -115,8 +124,8 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
115
124
  };
116
125
 
117
126
  const handleClick = (event: MouseEvent) => {
118
- // toggle was clicked open via keyboard, focus on first menu item
119
- if (isOpen && toggleRef.current?.contains(event.target as Node) && event.detail === 0) {
127
+ // toggle was opened, focus on first menu item
128
+ if (isOpen && toggleRef.current?.contains(event.target as Node)) {
120
129
  setTimeout(() => {
121
130
  const firstElement = menuRef?.current?.querySelector('li button:not(:disabled),li input:not(:disabled)');
122
131
  firstElement && (firstElement as HTMLElement).focus();
@@ -151,6 +160,7 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
151
160
  }}
152
161
  isPlain={isPlain}
153
162
  selected={selected}
163
+ isScrollable={isScrollable}
154
164
  {...getOUIAProps(
155
165
  Select.displayName,
156
166
  props.ouiaId !== undefined ? props.ouiaId : getDefaultOUIAId(Select.displayName),
@@ -158,7 +168,9 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
158
168
  )}
159
169
  {...props}
160
170
  >
161
- <MenuContent>{children}</MenuContent>
171
+ <MenuContent menuHeight={menuHeight} maxMenuHeight={maxMenuHeight}>
172
+ {children}
173
+ </MenuContent>
162
174
  </Menu>
163
175
  );
164
176
  return (
@@ -15,7 +15,10 @@ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
15
15
 
16
16
  Select builds off of the menu component suite to adapt commonly used properties and functions to create a select menu. See the [menu documentation](/components/menus/menu) for a full list of properties that may be used to further customize a select menu. View the [custom menu examples](/components/menus/custom-menus) to see examples of fully functional select menus.
17
17
 
18
+ For use cases that do not require a lot of customization, there are various template components available to use in the `@react-templates` package. These templates have a streamlined API and logic, making them easier to set up and use, but are limited in scope and flexibility. See the [templates page](/components/menus/select/react-templates) for details.
19
+
18
20
  ### Single select
21
+
19
22
  To let users select a single item from a list, use a single select menu.
20
23
 
21
24
  You can add multiple `<SelectOption>` components to build out a list of menu items. For each select option, pass a relevant option label to the `value` property.
@@ -28,30 +31,42 @@ To disable the select menu toggle, use the `isDisabled` property. In the followi
28
31
 
29
32
  ### Select option variants
30
33
 
31
- The following example showcases different option variants and customizations that are commonly used in a select menu.
34
+ The following example showcases different option variants and customizations that are commonly used in a select menu.
32
35
 
33
- To create these variants, you can pass different properties into a `<SelectOption>` component.
36
+ To create these variants, you can pass different properties into a `<SelectOption>` component.
34
37
 
35
- This example provides examples of:
38
+ This example provides examples of:
36
39
 
37
40
  - An option with a description, which is created by using the `description` property.
38
- - An option with a link, which is created by passing a URL into the `to` property. For external links, use the `isExternalLink` property so that the option is styled with an outbound link icon.
39
- - An option with an icon, which is created by using the `icon` property.
40
- - An option that is disabled by using the `isDisabled` property.
41
+ - An option with a link, which is created by passing a URL into the `to` property. For external links, use the `isExternalLink` property so that the option is styled with an outbound link icon.
42
+ - An option with an icon, which is created by using the `icon` property.
43
+ - An option that is disabled by using the `isDisabled` property.
41
44
 
42
45
  ```ts file="./SelectOptionVariations.tsx"
43
46
 
44
47
  ```
45
48
 
46
49
  ### With grouped items
50
+
47
51
  To group related select options together, use 1 or more `<SelectGroup>` components and title each group using the `label` property.
48
52
 
49
53
  ```ts file="./SelectGrouped.tsx"
50
54
 
51
55
  ```
52
56
 
57
+ ### With validation
58
+
59
+ To create a toggle with a status, pass in `status` to the `MenuToggle`. The default icon associated with each status may be overridden by using the `statusIcon` property.
60
+
61
+ When the status value is "warning" or "danger", you must include helper text that conveys what is causing the warning/error.
62
+
63
+ ```ts isBeta file="./SelectValidated.tsx"
64
+
65
+ ```
66
+
53
67
  ### Checkbox select
54
- To let users select multiple list options via checkbox input, use a checkbox select.
68
+
69
+ To let users select multiple list options via checkbox input, use a checkbox select.
55
70
 
56
71
  To create a checkbox select, pass `role="menu"` to the `<Select>`, and `hasCheckbox` into each `<SelectOption>` component. To indicate that an option is selected, use the `isSelected` property.
57
72
 
@@ -62,6 +77,7 @@ By default, the menu toggle will display a badge to indicate the number of items
62
77
  ```
63
78
 
64
79
  ### Typeahead
80
+
65
81
  Typeahead is a select variant that replaces the typical button toggle for opening the select menu with a text input and button toggle combo. As a user enters characters into the text input, the menu options will be filtered to match.
66
82
 
67
83
  To make a typeahead, pass `variant=typeahead` into the `<MenuToggle>` component and link an `onClick` function to the `<TextInputGroupMain>` component.
@@ -71,7 +87,8 @@ To make a typeahead, pass `variant=typeahead` into the `<MenuToggle>` component
71
87
  ```
72
88
 
73
89
  ### Typeahead with create option
74
- If a user enters a value into a typeahead select menu that does not exist, you can allow them to create an option of that value.
90
+
91
+ If a user enters a value into a typeahead select menu that does not exist, you can allow them to create an option of that value.
75
92
 
76
93
  To enable the creation ability, pass a predetermined `value` into a `<SelectOption>` component. You can use the `placeholder` property to change the default text shown in the text input.
77
94
 
@@ -82,6 +99,7 @@ The following example outlines the code implementation required to create a work
82
99
  ```
83
100
 
84
101
  ### Multiple typeahead with chips
102
+
85
103
  A multiple typeahead can be used to allow users to select multiple options from a list. Additionally, you can render a chip group to be placed in the select toggle.
86
104
 
87
105
  When more items than the allowed limit are selected, overflowing items will be hidden under a "more" button. The following example hides items after more than 3 are selected. To show hidden items, select the “more” button. Select "show less" to hide extra items again.
@@ -91,6 +109,7 @@ When more items than the allowed limit are selected, overflowing items will be h
91
109
  ```
92
110
 
93
111
  ### Multiple typeahead with create option
112
+
94
113
  If the text that is entered into a typeahead doesn't match a menu item, users can choose to create a new option that matches the text input. You can also combine this create functionality with a chip group to display created items as chips."
95
114
 
96
115
  ```ts file="./SelectMultiTypeaheadCreatable.tsx"
@@ -98,13 +117,14 @@ If the text that is entered into a typeahead doesn't match a menu item, users ca
98
117
  ```
99
118
 
100
119
  ### Multiple typeahead with checkboxes
120
+
101
121
  By default, a multiple typeahead select allows you to select multiple menu items, placing a checkmark beside selected items. Like basic checkbox select menus, you can add checkboxes to your menu items. This approach may be more accurate and comprehensive for more complex menu scenarios like filtering.
102
122
 
103
123
  ```ts file="./SelectMultiTypeaheadCheckbox.tsx"
104
124
 
105
125
  ```
106
126
 
107
- ### With view more
127
+ ### With view more
108
128
 
109
129
  To reduce the processing load for long select lists, you can add a "View more" action to load additional items.
110
130
 
@@ -118,7 +138,6 @@ The following example shows 3 items before the "View more" link, but you can adj
118
138
 
119
139
  You can add a `<MenuFooter>` component to a select menu to hold additional actions that users can take on menu items, through elements such as link buttons. A footer will be placed beneath a divider at the end of the select menu.
120
140
 
121
-
122
141
  ```ts file="./SelectFooter.tsx"
123
142
 
124
- ```
143
+ ```
@@ -44,7 +44,12 @@ export const SelectMultiTypeaheadCheckbox: React.FunctionComponent = () => {
44
44
  // When no options are found after filtering, display 'No results found'
45
45
  if (!newSelectOptions.length) {
46
46
  newSelectOptions = [
47
- { isDisabled: false, children: `No results found for "${inputValue}"`, value: 'no results' }
47
+ {
48
+ isDisabled: false,
49
+ children: `No results found for "${inputValue}"`,
50
+ value: 'no results',
51
+ hasCheckbox: false
52
+ }
48
53
  ];
49
54
  }
50
55
 
@@ -0,0 +1,74 @@
1
+ import React from 'react';
2
+ import {
3
+ Select,
4
+ SelectOption,
5
+ SelectList,
6
+ MenuToggle,
7
+ MenuToggleElement,
8
+ MenuToggleStatus,
9
+ HelperText,
10
+ HelperTextItem
11
+ } from '@patternfly/react-core';
12
+
13
+ export const SelectValidated: React.FunctionComponent = () => {
14
+ const [isOpen, setIsOpen] = React.useState(false);
15
+ const [selected, setSelected] = React.useState<string>('Select a value');
16
+ const [status, setStatus] = React.useState<MenuToggleStatus>();
17
+
18
+ const onToggleClick = () => {
19
+ setIsOpen(!isOpen);
20
+ };
21
+
22
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {
23
+ // eslint-disable-next-line no-console
24
+ console.log('selected', value);
25
+
26
+ setSelected(value as string);
27
+ setStatus((value as string).toLowerCase() as MenuToggleStatus);
28
+ setIsOpen(false);
29
+ };
30
+
31
+ const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
32
+ <MenuToggle
33
+ ref={toggleRef}
34
+ onClick={onToggleClick}
35
+ isExpanded={isOpen}
36
+ style={
37
+ {
38
+ width: '200px'
39
+ } as React.CSSProperties
40
+ }
41
+ status={status}
42
+ >
43
+ {selected}
44
+ </MenuToggle>
45
+ );
46
+
47
+ return (
48
+ <React.Fragment>
49
+ <Select
50
+ id="single-select"
51
+ isOpen={isOpen}
52
+ selected={selected}
53
+ onSelect={onSelect}
54
+ onOpenChange={(isOpen) => setIsOpen(isOpen)}
55
+ toggle={toggle}
56
+ shouldFocusToggleOnSelect
57
+ >
58
+ <SelectList>
59
+ <SelectOption value="Success">Success</SelectOption>
60
+ <SelectOption value="Warning">Warning</SelectOption>
61
+ <SelectOption value="Danger">Danger</SelectOption>
62
+ </SelectList>
63
+ </Select>
64
+ {(status === MenuToggleStatus.warning || status === MenuToggleStatus.danger) && (
65
+ <HelperText isLiveRegion>
66
+ <HelperTextItem variant={status === MenuToggleStatus.warning ? 'warning' : 'error'}>
67
+ {status === MenuToggleStatus.warning && 'Warning text that explains the issue.'}
68
+ {status === MenuToggleStatus.danger && 'Danger text that explains the issue.'}
69
+ </HelperTextItem>
70
+ </HelperText>
71
+ )}
72
+ </React.Fragment>
73
+ );
74
+ };
@@ -7,6 +7,8 @@ import { TabTitleIcon } from '../TabTitleIcon';
7
7
  import { TabContent } from '../TabContent';
8
8
  import { TabContentBody } from '../TabContentBody';
9
9
 
10
+ jest.mock('../../../helpers/GenerateId/GenerateId');
11
+
10
12
  test('should render simple tabs', () => {
11
13
  const { asFragment } = render(
12
14
  <Tabs id="simpleTabs">
@@ -408,12 +408,12 @@ exports[`should render expandable vertical tabs 1`] = `
408
408
  >
409
409
  <button
410
410
  aria-disabled="false"
411
- aria-labelledby="pf-random-id-0-text pf-random-id-0-button"
411
+ aria-labelledby="generated-id-text generated-id-button"
412
412
  class="pf-v5-c-button pf-m-plain"
413
413
  data-ouia-component-id="OUIA-Generated-Button-plain-3"
414
414
  data-ouia-component-type="PF5/Button"
415
415
  data-ouia-safe="true"
416
- id="pf-random-id-0-button"
416
+ id="generated-id-button"
417
417
  type="button"
418
418
  >
419
419
  <span
@@ -436,7 +436,7 @@ exports[`should render expandable vertical tabs 1`] = `
436
436
  </span>
437
437
  <span
438
438
  class="pf-v5-c-tabs__toggle-text"
439
- id="pf-random-id-0-text"
439
+ id="generated-id-text"
440
440
  >
441
441
  toggle
442
442
  </span>
@@ -36,10 +36,6 @@ export interface TextAreaProps extends Omit<HTMLProps<HTMLTextAreaElement>, 'onC
36
36
  value?: string | number;
37
37
  /** A callback for when the text area value changes. */
38
38
  onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>, value: string) => void;
39
- /** Callback function when text area is focused */
40
- onFocus?: (event?: React.FocusEvent<HTMLTextAreaElement>) => void;
41
- /** Callback function when text area is blurred (focus leaves) */
42
- onBlur?: (event?: React.FocusEvent<HTMLTextAreaElement>) => void;
43
39
  /** Sets the orientation to limit the resize to */
44
40
  resizeOrientation?: 'horizontal' | 'vertical' | 'both';
45
41
  /** Custom flag to show that the text area requires an associated id or aria-label. */
@@ -53,6 +53,8 @@ export interface TextInputGroupMainProps extends Omit<React.HTMLProps<HTMLDivEle
53
53
  isExpanded?: boolean;
54
54
  /** @beta The id of the element(s) controlled by the input. Required if role has a value of "combobox". */
55
55
  'aria-controls'?: string;
56
+ /** The id of the input element */
57
+ inputId?: string;
56
58
  }
57
59
 
58
60
  const TextInputGroupMainBase: React.FunctionComponent<TextInputGroupMainProps> = ({
@@ -73,6 +75,7 @@ const TextInputGroupMainBase: React.FunctionComponent<TextInputGroupMainProps> =
73
75
  role,
74
76
  isExpanded,
75
77
  'aria-controls': ariaControls,
78
+ inputId,
76
79
  ...props
77
80
  }: TextInputGroupMainProps) => {
78
81
  const { isDisabled } = React.useContext(TextInputGroupContext);
@@ -94,6 +97,7 @@ const TextInputGroupMainBase: React.FunctionComponent<TextInputGroupMainProps> =
94
97
  disabled
95
98
  aria-hidden="true"
96
99
  value={hint}
100
+ id={inputId}
97
101
  />
98
102
  )}
99
103
  {icon && <span className={css(styles.textInputGroupIcon)}>{icon}</span>}
@@ -110,6 +114,7 @@ const TextInputGroupMainBase: React.FunctionComponent<TextInputGroupMainProps> =
110
114
  placeholder={inputPlaceHolder}
111
115
  name={name}
112
116
  aria-activedescendant={ariaActivedescendant}
117
+ id={inputId}
113
118
  {...(role && { role })}
114
119
  {...(isExpanded !== undefined && { 'aria-expanded': isExpanded })}
115
120
  {...(ariaControls && { 'aria-controls': ariaControls })}
@@ -109,6 +109,14 @@ describe('TextInputGroupMain', () => {
109
109
  expect(inputValue).toBeVisible();
110
110
  });
111
111
 
112
+ it('passes the inputId prop to the input', () => {
113
+ render(<TextInputGroupMain inputId="input-id">Test</TextInputGroupMain>);
114
+
115
+ const input = screen.getByRole('textbox');
116
+
117
+ expect(input).toHaveAttribute('id', 'input-id');
118
+ });
119
+
112
120
  it('passes the placeholder prop to the input', () => {
113
121
  render(<TextInputGroupMain placeholder="placeholder text">Test</TextInputGroupMain>);
114
122
 
@@ -10,6 +10,8 @@ import { ToolbarFilter } from '../ToolbarFilter';
10
10
  import { ToolbarGroup } from '../ToolbarGroup';
11
11
  import { Button } from '../../Button/Button';
12
12
 
13
+ jest.mock('../../../helpers/GenerateId/GenerateId');
14
+
13
15
  describe('Toolbar', () => {
14
16
  it('should render inset', () => {
15
17
  const items = (
@@ -103,7 +103,7 @@ exports[`Toolbar should render with custom chip content 1`] = `
103
103
  class="pf-v5-c-toolbar__item pf-m-chip-group"
104
104
  >
105
105
  <div
106
- aria-labelledby="pf-random-id-0"
106
+ aria-labelledby="generated-id"
107
107
  class="pf-v5-c-chip-group pf-m-category"
108
108
  data-ouia-component-type="PF5/ChipGroup"
109
109
  data-ouia-safe="true"
@@ -114,12 +114,12 @@ exports[`Toolbar should render with custom chip content 1`] = `
114
114
  >
115
115
  <span
116
116
  class="pf-v5-c-chip-group__label"
117
- id="pf-random-id-0"
117
+ id="generated-id"
118
118
  >
119
119
  Status
120
120
  </span>
121
121
  <ul
122
- aria-labelledby="pf-random-id-0"
122
+ aria-labelledby="generated-id"
123
123
  class="pf-v5-c-chip-group__list"
124
124
  role="list"
125
125
  >
@@ -137,7 +137,7 @@ exports[`Toolbar should render with custom chip content 1`] = `
137
137
  >
138
138
  <span
139
139
  class="pf-v5-c-chip__text"
140
- id="pf-random-id-1"
140
+ id="generated-id"
141
141
  >
142
142
  New
143
143
  </span>
@@ -148,12 +148,12 @@ exports[`Toolbar should render with custom chip content 1`] = `
148
148
  <button
149
149
  aria-disabled="false"
150
150
  aria-label="close"
151
- aria-labelledby="remove_pf-random-id-1 pf-random-id-1"
151
+ aria-labelledby="remove_generated-id generated-id"
152
152
  class="pf-v5-c-button pf-m-plain"
153
153
  data-ouia-component-id="close"
154
154
  data-ouia-component-type="PF5/Button"
155
155
  data-ouia-safe="true"
156
- id="remove_pf-random-id-1"
156
+ id="remove_generated-id"
157
157
  type="button"
158
158
  >
159
159
  <svg
@@ -187,7 +187,7 @@ exports[`Toolbar should render with custom chip content 1`] = `
187
187
  >
188
188
  <span
189
189
  class="pf-v5-c-chip__text"
190
- id="pf-random-id-2"
190
+ id="generated-id"
191
191
  >
192
192
  Pending
193
193
  </span>
@@ -198,12 +198,12 @@ exports[`Toolbar should render with custom chip content 1`] = `
198
198
  <button
199
199
  aria-disabled="false"
200
200
  aria-label="close"
201
- aria-labelledby="remove_pf-random-id-2 pf-random-id-2"
201
+ aria-labelledby="remove_generated-id generated-id"
202
202
  class="pf-v5-c-button pf-m-plain"
203
203
  data-ouia-component-id="close"
204
204
  data-ouia-component-type="PF5/Button"
205
205
  data-ouia-safe="true"
206
- id="remove_pf-random-id-2"
206
+ id="remove_generated-id"
207
207
  type="button"
208
208
  >
209
209
  <svg
@@ -231,12 +231,12 @@ exports[`Toolbar should render with custom chip content 1`] = `
231
231
  <button
232
232
  aria-disabled="false"
233
233
  aria-label="Close chip group"
234
- aria-labelledby="remove_group_pf-random-id-0 pf-random-id-0"
234
+ aria-labelledby="remove_group_generated-id generated-id"
235
235
  class="pf-v5-c-button pf-m-plain"
236
236
  data-ouia-component-id="Close chip group"
237
237
  data-ouia-component-type="PF5/Button"
238
238
  data-ouia-safe="true"
239
- id="remove_group_pf-random-id-0"
239
+ id="remove_group_generated-id"
240
240
  type="button"
241
241
  >
242
242
  <svg
@@ -6,6 +6,7 @@ section: components
6
6
  import { useEffect } from 'react';
7
7
  import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
8
8
  import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
9
+ import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper';
9
10
 
10
11
  ## Demos
11
12
 
@@ -2,6 +2,7 @@
2
2
  id: Back to top
3
3
  section: components
4
4
  ---
5
+ import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper';
5
6
 
6
7
  ## Demos
7
8