@patternfly/react-core 5.0.0-alpha.107 → 5.0.0-alpha.109

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 (424) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/esm/components/AboutModal/package.json +1 -1
  3. package/dist/esm/components/Accordion/package.json +1 -1
  4. package/dist/esm/components/ActionList/package.json +1 -1
  5. package/dist/esm/components/Alert/package.json +1 -1
  6. package/dist/esm/components/Avatar/package.json +1 -1
  7. package/dist/esm/components/BackToTop/package.json +1 -1
  8. package/dist/esm/components/Backdrop/package.json +1 -1
  9. package/dist/esm/components/BackgroundImage/package.json +1 -1
  10. package/dist/esm/components/Badge/package.json +1 -1
  11. package/dist/esm/components/Banner/package.json +1 -1
  12. package/dist/esm/components/Brand/package.json +1 -1
  13. package/dist/esm/components/Breadcrumb/package.json +1 -1
  14. package/dist/esm/components/Button/package.json +1 -1
  15. package/dist/esm/components/CalendarMonth/package.json +1 -1
  16. package/dist/esm/components/Card/Card.d.ts +12 -5
  17. package/dist/esm/components/Card/Card.d.ts.map +1 -1
  18. package/dist/esm/components/Card/Card.js +17 -5
  19. package/dist/esm/components/Card/Card.js.map +1 -1
  20. package/dist/esm/components/Card/CardHeader.d.ts +30 -0
  21. package/dist/esm/components/Card/CardHeader.d.ts.map +1 -1
  22. package/dist/esm/components/Card/CardHeader.js +40 -5
  23. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  24. package/dist/esm/components/Card/CardSelectableActions.d.ts +9 -0
  25. package/dist/esm/components/Card/CardSelectableActions.d.ts.map +1 -0
  26. package/dist/esm/components/Card/CardSelectableActions.js +10 -0
  27. package/dist/esm/components/Card/CardSelectableActions.js.map +1 -0
  28. package/dist/esm/components/Card/package.json +1 -1
  29. package/dist/esm/components/Checkbox/Checkbox.d.ts +2 -0
  30. package/dist/esm/components/Checkbox/Checkbox.d.ts.map +1 -1
  31. package/dist/esm/components/Checkbox/Checkbox.js +2 -2
  32. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  33. package/dist/esm/components/Checkbox/package.json +1 -1
  34. package/dist/esm/components/Chip/package.json +1 -1
  35. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +4 -4
  36. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  37. package/dist/esm/components/ClipboardCopy/package.json +1 -1
  38. package/dist/esm/components/CodeBlock/package.json +1 -1
  39. package/dist/esm/components/DataList/package.json +1 -1
  40. package/dist/esm/components/DatePicker/package.json +1 -1
  41. package/dist/esm/components/DescriptionList/package.json +1 -1
  42. package/dist/esm/components/Divider/package.json +1 -1
  43. package/dist/esm/components/DragDrop/package.json +1 -1
  44. package/dist/esm/components/Drawer/package.json +1 -1
  45. package/dist/esm/components/Dropdown/Dropdown.d.ts +11 -3
  46. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  47. package/dist/esm/components/Dropdown/Dropdown.js +11 -5
  48. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  49. package/dist/esm/components/Dropdown/package.json +1 -1
  50. package/dist/esm/components/DualListSelector/package.json +1 -1
  51. package/dist/esm/components/EmptyState/package.json +1 -1
  52. package/dist/esm/components/ExpandableSection/package.json +1 -1
  53. package/dist/esm/components/FileUpload/FileUploadField.js +2 -2
  54. package/dist/esm/components/FileUpload/FileUploadField.js.map +1 -1
  55. package/dist/esm/components/FileUpload/package.json +1 -1
  56. package/dist/esm/components/Form/package.json +1 -1
  57. package/dist/esm/components/FormControl/FormControlIcon.d.ts +16 -0
  58. package/dist/esm/components/FormControl/FormControlIcon.d.ts.map +1 -0
  59. package/dist/esm/components/FormControl/FormControlIcon.js +18 -0
  60. package/dist/esm/components/FormControl/FormControlIcon.js.map +1 -0
  61. package/dist/esm/components/FormSelect/FormSelect.d.ts +0 -2
  62. package/dist/esm/components/FormSelect/FormSelect.d.ts.map +1 -1
  63. package/dist/esm/components/FormSelect/FormSelect.js +9 -3
  64. package/dist/esm/components/FormSelect/FormSelect.js.map +1 -1
  65. package/dist/esm/components/FormSelect/package.json +1 -1
  66. package/dist/esm/components/HelperText/package.json +1 -1
  67. package/dist/esm/components/Hint/package.json +1 -1
  68. package/dist/esm/components/Icon/package.json +1 -1
  69. package/dist/esm/components/InputGroup/package.json +1 -1
  70. package/dist/esm/components/JumpLinks/package.json +1 -1
  71. package/dist/esm/components/Label/package.json +1 -1
  72. package/dist/esm/components/List/package.json +1 -1
  73. package/dist/esm/components/LoginPage/package.json +1 -1
  74. package/dist/esm/components/Masthead/package.json +1 -1
  75. package/dist/esm/components/Menu/package.json +1 -1
  76. package/dist/esm/components/MenuToggle/package.json +1 -1
  77. package/dist/esm/components/Modal/package.json +1 -1
  78. package/dist/esm/components/MultipleFileUpload/package.json +1 -1
  79. package/dist/esm/components/Nav/package.json +1 -1
  80. package/dist/esm/components/NotificationBadge/package.json +1 -1
  81. package/dist/esm/components/NotificationDrawer/package.json +1 -1
  82. package/dist/esm/components/NumberInput/package.json +1 -1
  83. package/dist/esm/components/OverflowMenu/package.json +1 -1
  84. package/dist/esm/components/Page/package.json +1 -1
  85. package/dist/esm/components/Pagination/package.json +1 -1
  86. package/dist/esm/components/Panel/package.json +1 -1
  87. package/dist/esm/components/Popover/package.json +1 -1
  88. package/dist/esm/components/Progress/package.json +1 -1
  89. package/dist/esm/components/ProgressStepper/package.json +1 -1
  90. package/dist/esm/components/Radio/Radio.d.ts +5 -1
  91. package/dist/esm/components/Radio/Radio.d.ts.map +1 -1
  92. package/dist/esm/components/Radio/Radio.js +3 -3
  93. package/dist/esm/components/Radio/Radio.js.map +1 -1
  94. package/dist/esm/components/Radio/package.json +1 -1
  95. package/dist/esm/components/SearchInput/package.json +1 -1
  96. package/dist/esm/components/Select/Select.d.ts +31 -5
  97. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  98. package/dist/esm/components/Select/Select.js +16 -10
  99. package/dist/esm/components/Select/Select.js.map +1 -1
  100. package/dist/esm/components/Select/SelectGroup.d.ts +3 -0
  101. package/dist/esm/components/Select/SelectGroup.d.ts.map +1 -1
  102. package/dist/esm/components/Select/SelectGroup.js.map +1 -1
  103. package/dist/esm/components/Select/SelectOption.d.ts +14 -1
  104. package/dist/esm/components/Select/SelectOption.d.ts.map +1 -1
  105. package/dist/esm/components/Select/SelectOption.js +4 -3
  106. package/dist/esm/components/Select/SelectOption.js.map +1 -1
  107. package/dist/esm/components/Select/package.json +1 -1
  108. package/dist/esm/components/Sidebar/package.json +1 -1
  109. package/dist/esm/components/SimpleList/package.json +1 -1
  110. package/dist/esm/components/Skeleton/package.json +1 -1
  111. package/dist/esm/components/SkipToContent/package.json +1 -1
  112. package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
  113. package/dist/esm/components/Slider/Slider.js +1 -1
  114. package/dist/esm/components/Slider/Slider.js.map +1 -1
  115. package/dist/esm/components/Slider/package.json +1 -1
  116. package/dist/esm/components/Spinner/package.json +1 -1
  117. package/dist/esm/components/Switch/package.json +1 -1
  118. package/dist/esm/components/Tabs/package.json +1 -1
  119. package/dist/esm/components/Text/package.json +1 -1
  120. package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
  121. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  122. package/dist/esm/components/TextArea/TextArea.js +11 -7
  123. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  124. package/dist/esm/components/TextArea/package.json +1 -1
  125. package/dist/esm/components/TextInput/TextInput.d.ts +8 -11
  126. package/dist/esm/components/TextInput/TextInput.d.ts.map +1 -1
  127. package/dist/esm/components/TextInput/TextInput.js +10 -13
  128. package/dist/esm/components/TextInput/TextInput.js.map +1 -1
  129. package/dist/esm/components/TextInput/package.json +1 -1
  130. package/dist/esm/components/TextInputGroup/package.json +1 -1
  131. package/dist/esm/components/Tile/package.json +1 -1
  132. package/dist/esm/components/TimePicker/TimePicker.d.ts.map +1 -1
  133. package/dist/esm/components/TimePicker/TimePicker.js +2 -2
  134. package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
  135. package/dist/esm/components/TimePicker/package.json +1 -1
  136. package/dist/esm/components/Timestamp/package.json +1 -1
  137. package/dist/esm/components/Title/package.json +1 -1
  138. package/dist/esm/components/ToggleGroup/package.json +1 -1
  139. package/dist/esm/components/Toolbar/package.json +1 -1
  140. package/dist/esm/components/Tooltip/package.json +1 -1
  141. package/dist/esm/components/TreeView/TreeViewSearch.d.ts.map +1 -1
  142. package/dist/esm/components/TreeView/TreeViewSearch.js +6 -1
  143. package/dist/esm/components/TreeView/TreeViewSearch.js.map +1 -1
  144. package/dist/esm/components/TreeView/package.json +1 -1
  145. package/dist/esm/components/Truncate/package.json +1 -1
  146. package/dist/esm/components/Wizard/hooks/package.json +1 -1
  147. package/dist/esm/components/Wizard/package.json +1 -1
  148. package/dist/esm/components/package.json +1 -1
  149. package/dist/esm/deprecated/components/ApplicationLauncher/package.json +1 -1
  150. package/dist/esm/deprecated/components/ContextSelector/package.json +1 -1
  151. package/dist/esm/deprecated/components/Dropdown/package.json +1 -1
  152. package/dist/esm/deprecated/components/OptionsMenu/package.json +1 -1
  153. package/dist/esm/deprecated/components/PageHeader/package.json +1 -1
  154. package/dist/esm/deprecated/components/Select/Select.d.ts.map +1 -1
  155. package/dist/esm/deprecated/components/Select/Select.js +16 -18
  156. package/dist/esm/deprecated/components/Select/Select.js.map +1 -1
  157. package/dist/esm/deprecated/components/Select/package.json +1 -1
  158. package/dist/esm/deprecated/components/Wizard/package.json +1 -1
  159. package/dist/esm/deprecated/components/package.json +1 -1
  160. package/dist/esm/deprecated/package.json +1 -1
  161. package/dist/esm/helpers/Popper/Popper.d.ts +1 -1
  162. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  163. package/dist/esm/helpers/Popper/thirdparty/popper-core/package.json +1 -1
  164. package/dist/esm/helpers/package.json +1 -1
  165. package/dist/esm/layouts/Bullseye/package.json +1 -1
  166. package/dist/esm/layouts/Flex/package.json +1 -1
  167. package/dist/esm/layouts/Gallery/package.json +1 -1
  168. package/dist/esm/layouts/Grid/package.json +1 -1
  169. package/dist/esm/layouts/Level/package.json +1 -1
  170. package/dist/esm/layouts/Split/package.json +1 -1
  171. package/dist/esm/layouts/Stack/package.json +1 -1
  172. package/dist/esm/layouts/package.json +1 -1
  173. package/dist/esm/next/components/package.json +1 -1
  174. package/dist/esm/next/package.json +1 -1
  175. package/dist/esm/package.json +1 -1
  176. package/dist/js/components/AboutModal/package.json +1 -1
  177. package/dist/js/components/Accordion/package.json +1 -1
  178. package/dist/js/components/ActionList/package.json +1 -1
  179. package/dist/js/components/Alert/package.json +1 -1
  180. package/dist/js/components/Avatar/package.json +1 -1
  181. package/dist/js/components/BackToTop/package.json +1 -1
  182. package/dist/js/components/Backdrop/package.json +1 -1
  183. package/dist/js/components/BackgroundImage/package.json +1 -1
  184. package/dist/js/components/Badge/package.json +1 -1
  185. package/dist/js/components/Banner/package.json +1 -1
  186. package/dist/js/components/Brand/package.json +1 -1
  187. package/dist/js/components/Breadcrumb/package.json +1 -1
  188. package/dist/js/components/Button/package.json +1 -1
  189. package/dist/js/components/CalendarMonth/package.json +1 -1
  190. package/dist/js/components/Card/Card.d.ts +12 -5
  191. package/dist/js/components/Card/Card.d.ts.map +1 -1
  192. package/dist/js/components/Card/Card.js +17 -5
  193. package/dist/js/components/Card/Card.js.map +1 -1
  194. package/dist/js/components/Card/CardHeader.d.ts +30 -0
  195. package/dist/js/components/Card/CardHeader.d.ts.map +1 -1
  196. package/dist/js/components/Card/CardHeader.js +40 -5
  197. package/dist/js/components/Card/CardHeader.js.map +1 -1
  198. package/dist/js/components/Card/CardSelectableActions.d.ts +9 -0
  199. package/dist/js/components/Card/CardSelectableActions.d.ts.map +1 -0
  200. package/dist/js/components/Card/CardSelectableActions.js +14 -0
  201. package/dist/js/components/Card/CardSelectableActions.js.map +1 -0
  202. package/dist/js/components/Card/package.json +1 -1
  203. package/dist/js/components/Checkbox/Checkbox.d.ts +2 -0
  204. package/dist/js/components/Checkbox/Checkbox.d.ts.map +1 -1
  205. package/dist/js/components/Checkbox/Checkbox.js +2 -2
  206. package/dist/js/components/Checkbox/Checkbox.js.map +1 -1
  207. package/dist/js/components/Checkbox/package.json +1 -1
  208. package/dist/js/components/Chip/package.json +1 -1
  209. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +4 -4
  210. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  211. package/dist/js/components/ClipboardCopy/package.json +1 -1
  212. package/dist/js/components/CodeBlock/package.json +1 -1
  213. package/dist/js/components/DataList/package.json +1 -1
  214. package/dist/js/components/DatePicker/package.json +1 -1
  215. package/dist/js/components/DescriptionList/package.json +1 -1
  216. package/dist/js/components/Divider/package.json +1 -1
  217. package/dist/js/components/DragDrop/package.json +1 -1
  218. package/dist/js/components/Drawer/package.json +1 -1
  219. package/dist/js/components/Dropdown/Dropdown.d.ts +11 -3
  220. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  221. package/dist/js/components/Dropdown/Dropdown.js +11 -5
  222. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  223. package/dist/js/components/Dropdown/package.json +1 -1
  224. package/dist/js/components/DualListSelector/package.json +1 -1
  225. package/dist/js/components/EmptyState/package.json +1 -1
  226. package/dist/js/components/ExpandableSection/package.json +1 -1
  227. package/dist/js/components/FileUpload/FileUploadField.js +2 -2
  228. package/dist/js/components/FileUpload/FileUploadField.js.map +1 -1
  229. package/dist/js/components/FileUpload/package.json +1 -1
  230. package/dist/js/components/Form/package.json +1 -1
  231. package/dist/js/components/FormControl/FormControlIcon.d.ts +16 -0
  232. package/dist/js/components/FormControl/FormControlIcon.d.ts.map +1 -0
  233. package/dist/js/components/FormControl/FormControlIcon.js +22 -0
  234. package/dist/js/components/FormControl/FormControlIcon.js.map +1 -0
  235. package/dist/js/components/FormSelect/FormSelect.d.ts +0 -2
  236. package/dist/js/components/FormSelect/FormSelect.d.ts.map +1 -1
  237. package/dist/js/components/FormSelect/FormSelect.js +9 -3
  238. package/dist/js/components/FormSelect/FormSelect.js.map +1 -1
  239. package/dist/js/components/FormSelect/package.json +1 -1
  240. package/dist/js/components/HelperText/package.json +1 -1
  241. package/dist/js/components/Hint/package.json +1 -1
  242. package/dist/js/components/Icon/package.json +1 -1
  243. package/dist/js/components/InputGroup/package.json +1 -1
  244. package/dist/js/components/JumpLinks/package.json +1 -1
  245. package/dist/js/components/Label/package.json +1 -1
  246. package/dist/js/components/List/package.json +1 -1
  247. package/dist/js/components/LoginPage/package.json +1 -1
  248. package/dist/js/components/Masthead/package.json +1 -1
  249. package/dist/js/components/Menu/package.json +1 -1
  250. package/dist/js/components/MenuToggle/package.json +1 -1
  251. package/dist/js/components/Modal/package.json +1 -1
  252. package/dist/js/components/MultipleFileUpload/package.json +1 -1
  253. package/dist/js/components/Nav/package.json +1 -1
  254. package/dist/js/components/NotificationBadge/package.json +1 -1
  255. package/dist/js/components/NotificationDrawer/package.json +1 -1
  256. package/dist/js/components/NumberInput/package.json +1 -1
  257. package/dist/js/components/OverflowMenu/package.json +1 -1
  258. package/dist/js/components/Page/package.json +1 -1
  259. package/dist/js/components/Pagination/package.json +1 -1
  260. package/dist/js/components/Panel/package.json +1 -1
  261. package/dist/js/components/Popover/package.json +1 -1
  262. package/dist/js/components/Progress/package.json +1 -1
  263. package/dist/js/components/ProgressStepper/package.json +1 -1
  264. package/dist/js/components/Radio/Radio.d.ts +5 -1
  265. package/dist/js/components/Radio/Radio.d.ts.map +1 -1
  266. package/dist/js/components/Radio/Radio.js +3 -3
  267. package/dist/js/components/Radio/Radio.js.map +1 -1
  268. package/dist/js/components/Radio/package.json +1 -1
  269. package/dist/js/components/SearchInput/package.json +1 -1
  270. package/dist/js/components/Select/Select.d.ts +31 -5
  271. package/dist/js/components/Select/Select.d.ts.map +1 -1
  272. package/dist/js/components/Select/Select.js +16 -10
  273. package/dist/js/components/Select/Select.js.map +1 -1
  274. package/dist/js/components/Select/SelectGroup.d.ts +3 -0
  275. package/dist/js/components/Select/SelectGroup.d.ts.map +1 -1
  276. package/dist/js/components/Select/SelectGroup.js.map +1 -1
  277. package/dist/js/components/Select/SelectOption.d.ts +14 -1
  278. package/dist/js/components/Select/SelectOption.d.ts.map +1 -1
  279. package/dist/js/components/Select/SelectOption.js +4 -4
  280. package/dist/js/components/Select/SelectOption.js.map +1 -1
  281. package/dist/js/components/Select/package.json +1 -1
  282. package/dist/js/components/Sidebar/package.json +1 -1
  283. package/dist/js/components/SimpleList/package.json +1 -1
  284. package/dist/js/components/Skeleton/package.json +1 -1
  285. package/dist/js/components/SkipToContent/package.json +1 -1
  286. package/dist/js/components/Slider/Slider.d.ts.map +1 -1
  287. package/dist/js/components/Slider/Slider.js +1 -1
  288. package/dist/js/components/Slider/Slider.js.map +1 -1
  289. package/dist/js/components/Slider/package.json +1 -1
  290. package/dist/js/components/Spinner/package.json +1 -1
  291. package/dist/js/components/Switch/package.json +1 -1
  292. package/dist/js/components/Tabs/package.json +1 -1
  293. package/dist/js/components/Text/package.json +1 -1
  294. package/dist/js/components/TextArea/TextArea.d.ts +0 -4
  295. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  296. package/dist/js/components/TextArea/TextArea.js +11 -7
  297. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  298. package/dist/js/components/TextArea/package.json +1 -1
  299. package/dist/js/components/TextInput/TextInput.d.ts +8 -11
  300. package/dist/js/components/TextInput/TextInput.d.ts.map +1 -1
  301. package/dist/js/components/TextInput/TextInput.js +10 -13
  302. package/dist/js/components/TextInput/TextInput.js.map +1 -1
  303. package/dist/js/components/TextInput/package.json +1 -1
  304. package/dist/js/components/TextInputGroup/package.json +1 -1
  305. package/dist/js/components/Tile/package.json +1 -1
  306. package/dist/js/components/TimePicker/TimePicker.d.ts.map +1 -1
  307. package/dist/js/components/TimePicker/TimePicker.js +2 -2
  308. package/dist/js/components/TimePicker/TimePicker.js.map +1 -1
  309. package/dist/js/components/TimePicker/package.json +1 -1
  310. package/dist/js/components/Timestamp/package.json +1 -1
  311. package/dist/js/components/Title/package.json +1 -1
  312. package/dist/js/components/ToggleGroup/package.json +1 -1
  313. package/dist/js/components/Toolbar/package.json +1 -1
  314. package/dist/js/components/Tooltip/package.json +1 -1
  315. package/dist/js/components/TreeView/TreeViewSearch.d.ts.map +1 -1
  316. package/dist/js/components/TreeView/TreeViewSearch.js +6 -1
  317. package/dist/js/components/TreeView/TreeViewSearch.js.map +1 -1
  318. package/dist/js/components/TreeView/package.json +1 -1
  319. package/dist/js/components/Truncate/package.json +1 -1
  320. package/dist/js/components/Wizard/hooks/package.json +1 -1
  321. package/dist/js/components/Wizard/package.json +1 -1
  322. package/dist/js/components/package.json +1 -1
  323. package/dist/js/deprecated/components/ApplicationLauncher/package.json +1 -1
  324. package/dist/js/deprecated/components/ContextSelector/package.json +1 -1
  325. package/dist/js/deprecated/components/Dropdown/package.json +1 -1
  326. package/dist/js/deprecated/components/OptionsMenu/package.json +1 -1
  327. package/dist/js/deprecated/components/PageHeader/package.json +1 -1
  328. package/dist/js/deprecated/components/Select/Select.d.ts.map +1 -1
  329. package/dist/js/deprecated/components/Select/Select.js +16 -18
  330. package/dist/js/deprecated/components/Select/Select.js.map +1 -1
  331. package/dist/js/deprecated/components/Select/package.json +1 -1
  332. package/dist/js/deprecated/components/Wizard/package.json +1 -1
  333. package/dist/js/deprecated/components/package.json +1 -1
  334. package/dist/js/deprecated/package.json +1 -1
  335. package/dist/js/helpers/Popper/Popper.d.ts +1 -1
  336. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  337. package/dist/js/helpers/Popper/thirdparty/popper-core/package.json +1 -1
  338. package/dist/js/helpers/package.json +1 -1
  339. package/dist/js/layouts/Bullseye/package.json +1 -1
  340. package/dist/js/layouts/Flex/package.json +1 -1
  341. package/dist/js/layouts/Gallery/package.json +1 -1
  342. package/dist/js/layouts/Grid/package.json +1 -1
  343. package/dist/js/layouts/Level/package.json +1 -1
  344. package/dist/js/layouts/Split/package.json +1 -1
  345. package/dist/js/layouts/Stack/package.json +1 -1
  346. package/dist/js/layouts/package.json +1 -1
  347. package/dist/js/next/components/package.json +1 -1
  348. package/dist/js/next/package.json +1 -1
  349. package/dist/js/package.json +1 -1
  350. package/dist/umd/react-core.min.js +2 -2
  351. package/package.json +6 -6
  352. package/src/components/Card/Card.tsx +34 -9
  353. package/src/components/Card/CardHeader.tsx +94 -2
  354. package/src/components/Card/CardSelectableActions.tsx +21 -0
  355. package/src/components/Card/__tests__/Card.test.tsx +11 -7
  356. package/src/components/Card/__tests__/__snapshots__/CardHeader.test.tsx.snap +1 -3
  357. package/src/components/Card/examples/Card.md +59 -16
  358. package/src/components/Card/examples/CardClickable.tsx +54 -0
  359. package/src/components/Card/examples/CardClickableSelectable.tsx +94 -0
  360. package/src/components/Card/examples/{CardLegacySelectable.tsx → CardDeprecatedSelectable.tsx} +2 -0
  361. package/src/components/Card/examples/{CardSelectableA11yHighlight.tsx → CardDeprecatedSelectableA11yHighlight.tsx} +1 -1
  362. package/src/components/Card/examples/CardSelectable.tsx +60 -115
  363. package/src/components/Card/examples/CardSingleSelectable.tsx +52 -0
  364. package/src/components/Checkbox/Checkbox.tsx +5 -2
  365. package/src/components/ClipboardCopy/ClipboardCopy.tsx +4 -4
  366. package/src/components/ClipboardCopy/__tests__/Generated/__snapshots__/ClipboardCopy.test.tsx.snap +13 -10
  367. package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +67 -60
  368. package/src/components/Dropdown/Dropdown.tsx +25 -11
  369. package/src/components/Dropdown/examples/Dropdown.md +10 -1
  370. package/src/components/Dropdown/examples/DropdownBasic.tsx +2 -6
  371. package/src/components/Dropdown/examples/DropdownWithDescriptions.tsx +2 -6
  372. package/src/components/Dropdown/examples/DropdownWithGroups.tsx +2 -6
  373. package/src/components/Dropdown/examples/DropdownWithKebabToggle.tsx +2 -6
  374. package/src/components/FileUpload/FileUploadField.tsx +1 -1
  375. package/src/components/FileUpload/__tests__/__snapshots__/FileUpload.test.tsx.snap +28 -22
  376. package/src/components/FileUpload/__tests__/__snapshots__/FileUploadField.test.tsx.snap +28 -22
  377. package/src/components/FormControl/FormControlIcon.tsx +31 -0
  378. package/src/components/FormSelect/FormSelect.tsx +26 -20
  379. package/src/components/FormSelect/__tests__/FormSelect.test.tsx +2 -2
  380. package/src/components/FormSelect/__tests__/__snapshots__/FormSelect.test.tsx.snap +421 -178
  381. package/src/components/FormSelect/examples/FormSelect.md +7 -6
  382. package/src/components/LoginPage/__tests__/__snapshots__/LoginForm.test.tsx.snap +84 -66
  383. package/src/components/NumberInput/__tests__/__snapshots__/NumberInput.test.tsx.snap +217 -133
  384. package/src/components/Radio/Radio.tsx +7 -2
  385. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +36 -27
  386. package/src/components/Select/Select.tsx +62 -24
  387. package/src/components/Select/SelectGroup.tsx +3 -0
  388. package/src/components/Select/SelectOption.tsx +22 -2
  389. package/src/components/Select/examples/Select.md +49 -2
  390. package/src/components/Select/examples/SelectBasic.tsx +27 -17
  391. package/src/components/Select/examples/SelectCheckbox.tsx +1 -3
  392. package/src/components/Select/examples/SelectFooter.tsx +57 -0
  393. package/src/components/Select/examples/SelectGrouped.tsx +14 -6
  394. package/src/components/Select/examples/SelectMultiTypeahead.tsx +7 -12
  395. package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +204 -0
  396. package/src/components/Select/examples/SelectMultiTypeaheadCreatable.tsx +222 -0
  397. package/src/components/Select/examples/SelectOptionVariations.tsx +70 -0
  398. package/src/components/Select/examples/SelectTypeahead.tsx +13 -13
  399. package/src/components/Select/examples/SelectTypeaheadCreatable.tsx +220 -0
  400. package/src/components/Select/examples/SelectViewMore.tsx +146 -0
  401. package/src/components/Slider/Slider.tsx +0 -1
  402. package/src/components/Slider/_tests_/__snapshots__/Slider.test.tsx.snap +52 -40
  403. package/src/components/TextArea/TextArea.tsx +33 -26
  404. package/src/components/TextArea/__tests__/TextArea.test.tsx +6 -6
  405. package/src/components/TextArea/__tests__/__snapshots__/TextArea.test.tsx.snap +11 -8
  406. package/src/components/TextArea/examples/TextArea.md +8 -6
  407. package/src/components/TextInput/TextInput.tsx +43 -47
  408. package/src/components/TextInput/__tests__/TextInput.test.tsx +2 -2
  409. package/src/components/TextInput/__tests__/__snapshots__/TextInput.test.tsx.snap +130 -72
  410. package/src/components/TextInput/examples/TextInput.md +14 -5
  411. package/src/components/TextInput/examples/TextInputCustomIcon.tsx +30 -0
  412. package/src/components/TextInput/examples/TextInputCustomIconInvalid.tsx +20 -0
  413. package/src/components/TimePicker/TimePicker.tsx +2 -4
  414. package/src/components/TreeView/TreeViewSearch.tsx +9 -9
  415. package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +29 -7
  416. package/src/demos/ComposableMenu/ComposableMenu.md +14 -0
  417. package/src/demos/examples/DateTimePicker/DateTimePicker.tsx +1 -1
  418. package/src/deprecated/components/Select/Select.tsx +21 -25
  419. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +1 -2
  420. package/src/helpers/Popper/Popper.tsx +1 -1
  421. package/src/components/FormSelect/examples/FormSelectIconSpriteVariant.tsx +0 -63
  422. package/src/components/TextArea/examples/TextAreaIconSprite.tsx +0 -41
  423. package/src/components/TextInput/examples/TextInputIcon.tsx +0 -39
  424. package/src/components/TextInput/examples/TextInputIconSprite.tsx +0 -63
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Card, CardTitle, CardBody } from '@patternfly/react-core';
3
3
 
4
- export const CardSelectableA11yHighlight: React.FunctionComponent = () => {
4
+ export const CardLegacySelectableA11yHighlight: React.FunctionComponent = () => {
5
5
  const [selected, setSelected] = React.useState<string>('');
6
6
 
7
7
  const onKeyDown = (event: React.KeyboardEvent) => {
@@ -1,129 +1,74 @@
1
1
  import React from 'react';
2
- import {
3
- Card,
4
- CardHeader,
5
- CardTitle,
6
- CardBody,
7
- Dropdown,
8
- DropdownList,
9
- DropdownItem,
10
- MenuToggle,
11
- MenuToggleElement,
12
- Divider
13
- } from '@patternfly/react-core';
14
- import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
2
+ import { Card, CardHeader, CardTitle, CardBody } from '@patternfly/react-core';
15
3
 
16
- export const CardSelectable: React.FunctionComponent = () => {
17
- const [selected, setSelected] = React.useState<string>('');
18
- const [isKebabOpen, setIsKebabOpen] = React.useState<boolean>(false);
4
+ export const SelectableCard: React.FunctionComponent = () => {
5
+ const [isChecked1, setIsChecked1] = React.useState(false);
6
+ const [isChecked2, setIsChecked2] = React.useState(false);
7
+ const [isChecked3, setIsChecked3] = React.useState(false);
19
8
 
20
- const onKeyDown = (event: React.KeyboardEvent) => {
21
- if (event.target !== event.currentTarget) {
22
- return;
23
- }
24
- if ([' ', 'Enter'].includes(event.key)) {
25
- event.preventDefault();
26
- const newSelected = event.currentTarget.id === selected ? '' : event.currentTarget.id;
27
- setSelected(newSelected);
28
- }
29
- };
9
+ const id1 = 'selectable-card-input-1';
10
+ const id2 = 'selectable-card-input-2';
11
+ const id3 = 'selectable-card-input-3';
30
12
 
31
- const onClick = (event: React.MouseEvent) => {
32
- const newSelected = event.currentTarget.id === selected ? '' : event.currentTarget.id;
33
- setSelected(newSelected);
34
- };
13
+ const onChange = (event: React.FormEvent<HTMLInputElement>, checked: boolean) => {
14
+ const name = event.currentTarget.name;
35
15
 
36
- const onChange = (_event: React.FormEvent<HTMLInputElement>, labelledById: string) => {
37
- const newSelected = labelledById === selected ? '' : labelledById;
38
- setSelected(newSelected);
39
- };
40
-
41
- const onToggle = (event: React.MouseEvent | undefined) => {
42
- event?.stopPropagation();
43
- setIsKebabOpen(!isKebabOpen);
44
- };
45
-
46
- const onSelect = (event: React.MouseEvent | undefined) => {
47
- event?.stopPropagation();
48
- setIsKebabOpen(false);
16
+ switch (name) {
17
+ case id1:
18
+ setIsChecked1(checked);
19
+ break;
20
+ case id2:
21
+ setIsChecked2(checked);
22
+ break;
23
+ case id3:
24
+ setIsChecked3(checked);
25
+ break;
26
+ }
49
27
  };
50
28
 
51
- const dropdownItems = (
52
- <>
53
- <DropdownItem key="action">Action</DropdownItem>
54
- {/* Prevent default onClick functionality for example purposes */}
55
- <DropdownItem key="link" to="#" onClick={(event: any) => event.preventDefault()}>
56
- Link
57
- </DropdownItem>
58
- <DropdownItem key="disabled action" isDisabled>
59
- Disabled Action
60
- </DropdownItem>
61
- <DropdownItem key="disabled link" isDisabled to="#" onClick={(event: any) => event.preventDefault()}>
62
- Disabled Link
63
- </DropdownItem>
64
- <Divider component="li" key="separator" />
65
- <DropdownItem key="separated action">Separated Action</DropdownItem>
66
- <DropdownItem key="separated link" to="#" onClick={(event: any) => event.preventDefault()}>
67
- Separated Link
68
- </DropdownItem>
69
- </>
70
- );
71
-
72
- const headerActions = (
73
- <>
74
- <Dropdown
75
- onSelect={onSelect}
76
- toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
77
- <MenuToggle
78
- ref={toggleRef}
79
- isExpanded={isKebabOpen}
80
- onClick={onToggle}
81
- variant="plain"
82
- aria-label="Card selectable example kebab toggle"
83
- >
84
- <EllipsisVIcon aria-hidden="true" />
85
- </MenuToggle>
86
- )}
87
- isOpen={isKebabOpen}
88
- onOpenChange={(isOpen: boolean) => setIsKebabOpen(isOpen)}
89
- >
90
- <DropdownList>{dropdownItems}</DropdownList>
91
- </Dropdown>
92
- </>
93
- );
94
-
95
29
  return (
96
30
  <React.Fragment>
97
- <Card
98
- id="selectable-first-card"
99
- onKeyDown={onKeyDown}
100
- onClick={onClick}
101
- hasSelectableInput
102
- onSelectableInputChange={onChange}
103
- isSelectableRaised
104
- isSelected={selected === 'selectable-first-card'}
105
- >
106
- <CardHeader actions={{ actions: headerActions }} />
107
- <CardTitle>First card</CardTitle>
108
- <CardBody>This is a selectable card. Click me to select me. Click again to deselect me.</CardBody>
31
+ <Card id="selectable-card-example-1" isSelectable>
32
+ <CardHeader
33
+ selectableActions={{
34
+ selectableActionId: id1,
35
+ selectableActionAriaLabelledby: 'selectable-card-example-1',
36
+ name: id1,
37
+ isChecked: isChecked1,
38
+ onChange
39
+ }}
40
+ >
41
+ <CardTitle>First card</CardTitle>
42
+ </CardHeader>
43
+ <CardBody>This card is selectable.</CardBody>
109
44
  </Card>
110
- <br />
111
- <Card
112
- id="selectable-second-card"
113
- onKeyDown={onKeyDown}
114
- onClick={onClick}
115
- hasSelectableInput
116
- onSelectableInputChange={onChange}
117
- isSelectableRaised
118
- isSelected={selected === 'selectable-second-card'}
119
- >
120
- <CardTitle>Second card</CardTitle>
121
- <CardBody>This is a selectable card. Click me to select me. Click again to deselect me.</CardBody>
45
+ <Card id="selectable-card-example-2" isSelectable>
46
+ <CardHeader
47
+ selectableActions={{
48
+ selectableActionId: id2,
49
+ selectableActionAriaLabelledby: 'selectable-card-example-2',
50
+ name: id2,
51
+ isChecked: isChecked2,
52
+ onChange
53
+ }}
54
+ >
55
+ <CardTitle>Second card</CardTitle>
56
+ </CardHeader>
57
+ <CardBody>This card is selectable.</CardBody>
122
58
  </Card>
123
- <br />
124
- <Card id="selectable-third-card" isSelectableRaised isDisabledRaised hasSelectableInput>
125
- <CardTitle>Third card</CardTitle>
126
- <CardBody>This is a raised but disabled card.</CardBody>
59
+ <Card id="selectable-card-example-3" isSelectable isDisabled>
60
+ <CardHeader
61
+ selectableActions={{
62
+ selectableActionId: id3,
63
+ selectableActionAriaLabelledby: 'selectable-card-example-3',
64
+ name: id3,
65
+ isChecked: isChecked3,
66
+ onChange
67
+ }}
68
+ >
69
+ <CardTitle>Third card</CardTitle>
70
+ </CardHeader>
71
+ <CardBody>This card is selectable but disabled.</CardBody>
127
72
  </Card>
128
73
  </React.Fragment>
129
74
  );
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+ import { Card, CardHeader, CardTitle, CardBody } from '@patternfly/react-core';
3
+
4
+ export const SingleSelectableCard: React.FunctionComponent = () => {
5
+ const id1 = 'single-selectable-card-input-1';
6
+ const id2 = 'single-selectable-card-input-2';
7
+ const id3 = 'single-selectable-card-input-3';
8
+
9
+ return (
10
+ <React.Fragment>
11
+ <Card id="single-selectable-card-example-1" isSelectable>
12
+ <CardHeader
13
+ selectableActions={{
14
+ selectableActionId: id1,
15
+ selectableActionAriaLabelledby: 'single-selectable-card-example-1',
16
+ name: 'single-selectable-card-example',
17
+ variant: 'single'
18
+ }}
19
+ >
20
+ <CardTitle>First card</CardTitle>
21
+ </CardHeader>
22
+ <CardBody>This card is single selectable.</CardBody>
23
+ </Card>
24
+ <Card id="single-selectable-card-example-2" isSelectable>
25
+ <CardHeader
26
+ selectableActions={{
27
+ selectableActionId: id2,
28
+ selectableActionAriaLabelledby: 'single-selectable-card-example-2',
29
+ name: 'single-selectable-card-example',
30
+ variant: 'single'
31
+ }}
32
+ >
33
+ <CardTitle>Second card</CardTitle>
34
+ </CardHeader>
35
+ <CardBody>This card is single selectable.</CardBody>
36
+ </Card>
37
+ <Card id="single-selectable-card-example-3" isSelectable isDisabled>
38
+ <CardHeader
39
+ selectableActions={{
40
+ selectableActionId: id3,
41
+ selectableActionAriaLabelledby: 'single-selectable-card-example-3',
42
+ name: 'single-selectable-card-example',
43
+ variant: 'single'
44
+ }}
45
+ >
46
+ <CardTitle>Third card</CardTitle>
47
+ </CardHeader>
48
+ <CardBody>This card is single selectable but disabled.</CardBody>
49
+ </Card>
50
+ </React.Fragment>
51
+ );
52
+ };
@@ -10,6 +10,8 @@ export interface CheckboxProps
10
10
  OUIAProps {
11
11
  /** Additional classes added to the checkbox. */
12
12
  className?: string;
13
+ /** Additional classed added to the radio input */
14
+ inputClassName?: string;
13
15
  /** Flag to show if the checkbox selection is valid or invalid. */
14
16
  isValid?: boolean;
15
17
  /** Flag to show if the checkbox is disabled. */
@@ -74,6 +76,7 @@ export class Checkbox extends React.Component<CheckboxProps, CheckboxState> {
74
76
  const {
75
77
  'aria-label': ariaLabel,
76
78
  className,
79
+ inputClassName,
77
80
  onChange,
78
81
  isValid,
79
82
  isDisabled,
@@ -109,14 +112,14 @@ export class Checkbox extends React.Component<CheckboxProps, CheckboxState> {
109
112
  <Component className={css(styles.check, !label && styles.modifiers.standalone, className)}>
110
113
  <input
111
114
  {...props}
112
- className={css(styles.checkInput)}
115
+ className={css(styles.checkInput, inputClassName)}
113
116
  type="checkbox"
114
117
  onChange={this.handleChange}
115
118
  aria-invalid={!isValid}
116
119
  aria-label={ariaLabel}
117
120
  disabled={isDisabled}
118
121
  required={isRequired}
119
- ref={elem => elem && (elem.indeterminate = isChecked === null)}
122
+ ref={(elem) => elem && (elem.indeterminate = isChecked === null)}
120
123
  {...checkedProps}
121
124
  {...getOUIAProps(Checkbox.displayName, ouiaId !== undefined ? ouiaId : this.state.ouiaStateId, ouiaSafe)}
122
125
  />
@@ -131,7 +131,7 @@ export class ClipboardCopy extends React.Component<ClipboardCopyProps, Clipboard
131
131
 
132
132
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
133
133
  expandContent = (_event: React.MouseEvent<Element, MouseEvent>) => {
134
- this.setState(prevState => ({
134
+ this.setState((prevState) => ({
135
135
  expanded: !prevState.expanded
136
136
  }));
137
137
  };
@@ -183,7 +183,7 @@ export class ClipboardCopy extends React.Component<ClipboardCopyProps, Clipboard
183
183
  >
184
184
  {variant === 'inline-compact' && (
185
185
  <GenerateId prefix="">
186
- {id => (
186
+ {(id) => (
187
187
  <React.Fragment>
188
188
  {!isCode && (
189
189
  <span className={css(styles.clipboardCopyText)} id={`${textIdPrefix}${id}`}>
@@ -223,7 +223,7 @@ export class ClipboardCopy extends React.Component<ClipboardCopyProps, Clipboard
223
223
  )}
224
224
  {variant !== 'inline-compact' && (
225
225
  <GenerateId prefix="">
226
- {id => (
226
+ {(id) => (
227
227
  <React.Fragment>
228
228
  <div className={css(styles.clipboardCopyGroup)}>
229
229
  {variant === 'expansion' && (
@@ -237,7 +237,7 @@ export class ClipboardCopy extends React.Component<ClipboardCopyProps, Clipboard
237
237
  />
238
238
  )}
239
239
  <TextInput
240
- isReadOnly={isReadOnly || this.state.expanded}
240
+ readOnlyVariant={isReadOnly || this.state.expanded ? 'default' : undefined}
241
241
  onChange={this.updateText}
242
242
  value={this.state.text as string | number}
243
243
  id={`text-input-${id}`}
@@ -10,17 +10,20 @@ exports[`ClipboardCopy should match snapshot (auto-generated) 1`] = `
10
10
  <div
11
11
  class="pf-v5-c-clipboard-copy__group"
12
12
  >
13
- <input
14
- aria-invalid="false"
15
- aria-label="'Copyable input'"
13
+ <div
16
14
  class="pf-v5-c-form-control"
17
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
18
- data-ouia-component-type="PF4/TextInput"
19
- data-ouia-safe="true"
20
- id="text-input-0"
21
- type="text"
22
- value="[object Object]"
23
- />
15
+ >
16
+ <input
17
+ aria-invalid="false"
18
+ aria-label="'Copyable input'"
19
+ data-ouia-component-id="OUIA-Generated-TextInputBase-1"
20
+ data-ouia-component-type="PF4/TextInput"
21
+ data-ouia-safe="true"
22
+ id="text-input-0"
23
+ type="text"
24
+ value="[object Object]"
25
+ />
26
+ </div>
24
27
  <button
25
28
  aria-disabled="false"
26
29
  aria-label="'Copy to clipboard'"
@@ -15,17 +15,20 @@ exports[`With popover opened 1`] = `
15
15
  <div
16
16
  class="pf-v5-c-input-group__item pf-m-fill"
17
17
  >
18
- <input
19
- aria-invalid="false"
20
- aria-label="Date picker"
18
+ <div
21
19
  class="pf-v5-c-form-control"
22
- data-ouia-component-id="OUIA-Generated-TextInputBase-4"
23
- data-ouia-component-type="PF4/TextInput"
24
- data-ouia-safe="true"
25
- placeholder="YYYY-MM-DD"
26
- type="text"
27
- value=""
28
- />
20
+ >
21
+ <input
22
+ aria-invalid="false"
23
+ aria-label="Date picker"
24
+ data-ouia-component-id="OUIA-Generated-TextInputBase-4"
25
+ data-ouia-component-type="PF4/TextInput"
26
+ data-ouia-safe="true"
27
+ placeholder="YYYY-MM-DD"
28
+ type="text"
29
+ value=""
30
+ />
31
+ </div>
29
32
  </div>
30
33
  <div
31
34
  class="pf-v5-c-input-group__item"
@@ -114,39 +117,37 @@ exports[`With popover opened 1`] = `
114
117
  >
115
118
  Month
116
119
  </span>
117
- <div>
118
- <button
119
- aria-expanded="false"
120
- class="pf-v5-c-menu-toggle"
121
- style="width: 140px;"
122
- type="button"
120
+ <button
121
+ aria-expanded="false"
122
+ class="pf-v5-c-menu-toggle"
123
+ style="width: 140px;"
124
+ type="button"
125
+ >
126
+ <span
127
+ class="pf-v5-c-menu-toggle__text"
128
+ >
129
+ December
130
+ </span>
131
+ <span
132
+ class="pf-v5-c-menu-toggle__controls"
123
133
  >
124
134
  <span
125
- class="pf-v5-c-menu-toggle__text"
126
- >
127
- December
128
- </span>
129
- <span
130
- class="pf-v5-c-menu-toggle__controls"
135
+ class="pf-v5-c-menu-toggle__toggle-icon"
131
136
  >
132
- <span
133
- class="pf-v5-c-menu-toggle__toggle-icon"
137
+ <svg
138
+ aria-hidden="true"
139
+ class="pf-v5-svg"
140
+ fill="currentColor"
141
+ role="img"
142
+ viewBox="0 0 320 512"
134
143
  >
135
- <svg
136
- aria-hidden="true"
137
- class="pf-v5-svg"
138
- fill="currentColor"
139
- role="img"
140
- viewBox="0 0 320 512"
141
- >
142
- <path
143
- d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"
144
- />
145
- </svg>
146
- </span>
144
+ <path
145
+ d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"
146
+ />
147
+ </svg>
147
148
  </span>
148
- </button>
149
- </div>
149
+ </span>
150
+ </button>
150
151
  </div>
151
152
  </div>
152
153
  <div
@@ -155,16 +156,19 @@ exports[`With popover opened 1`] = `
155
156
  <div
156
157
  class="pf-v5-c-calendar-month__header-year"
157
158
  >
158
- <input
159
- aria-invalid="false"
160
- aria-label="Select year"
159
+ <div
161
160
  class="pf-v5-c-form-control"
162
- data-ouia-component-id="OUIA-Generated-TextInputBase-5"
163
- data-ouia-component-type="PF4/TextInput"
164
- data-ouia-safe="true"
165
- type="number"
166
- value="1969"
167
- />
161
+ >
162
+ <input
163
+ aria-invalid="false"
164
+ aria-label="Select year"
165
+ data-ouia-component-id="OUIA-Generated-TextInputBase-5"
166
+ data-ouia-component-type="PF4/TextInput"
167
+ data-ouia-safe="true"
168
+ type="number"
169
+ value="1969"
170
+ />
171
+ </div>
168
172
  </div>
169
173
  </div>
170
174
  </div>
@@ -774,18 +778,21 @@ exports[`disabled date picker 1`] = `
774
778
  <div
775
779
  class="pf-v5-c-input-group__item pf-m-fill"
776
780
  >
777
- <input
778
- aria-invalid="false"
779
- aria-label="disabled date picker"
780
- class="pf-v5-c-form-control"
781
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
782
- data-ouia-component-type="PF4/TextInput"
783
- data-ouia-safe="true"
784
- disabled=""
785
- placeholder="YYYY-MM-DD"
786
- type="text"
787
- value="2020-11-20"
788
- />
781
+ <div
782
+ class="pf-v5-c-form-control pf-m-disabled"
783
+ >
784
+ <input
785
+ aria-invalid="false"
786
+ aria-label="disabled date picker"
787
+ data-ouia-component-id="OUIA-Generated-TextInputBase-1"
788
+ data-ouia-component-type="PF4/TextInput"
789
+ data-ouia-safe="true"
790
+ disabled=""
791
+ placeholder="YYYY-MM-DD"
792
+ type="text"
793
+ value="2020-11-20"
794
+ />
795
+ </div>
789
796
  </div>
790
797
  <div
791
798
  class="pf-v5-c-input-group__item"
@@ -813,4 +820,4 @@ exports[`disabled date picker 1`] = `
813
820
  </div>
814
821
  </div>
815
822
  </DocumentFragment>
816
- `;
823
+ `;
@@ -19,6 +19,13 @@ export interface DropdownPopperProps {
19
19
  enableFlip?: boolean;
20
20
  }
21
21
 
22
+ export interface DropdownToggleProps {
23
+ /** Dropdown toggle node. */
24
+ toggleNode: React.ReactNode;
25
+ /** Reference to the toggle. */
26
+ toggleRef?: React.RefObject<HTMLButtonElement>;
27
+ }
28
+
22
29
  /**
23
30
  * See the Menu documentation for additional props that may be passed.
24
31
  */
@@ -27,16 +34,14 @@ export interface DropdownProps extends MenuProps, OUIAProps {
27
34
  children?: React.ReactNode;
28
35
  /** Classes applied to root element of dropdown. */
29
36
  className?: string;
30
- /** Renderer for a custom dropdown toggle. Forwards a ref to the toggle. */
31
- toggle: (toggleRef: React.RefObject<any>) => React.ReactNode;
37
+ /** Dropdown toggle. The toggle should either be a renderer function which forwards the given toggle ref, or a direct ReactNode that should be passed along with the toggleRef property. */
38
+ toggle: DropdownToggleProps | ((toggleRef: React.RefObject<any>) => React.ReactNode);
32
39
  /** Flag to indicate if menu is opened.*/
33
40
  isOpen?: boolean;
41
+ /** Flag indicating the toggle should be focused after a selection. If this use case is too restrictive, the optional toggleRef property with a node toggle may be used to control focus. */
42
+ shouldFocusToggleOnSelect?: boolean;
34
43
  /** Function callback called when user selects item. */
35
- onSelect?: (
36
- event?: React.MouseEvent<Element, MouseEvent>,
37
- itemId?: string | number,
38
- toggleRef?: React.RefObject<any>
39
- ) => void;
44
+ onSelect?: (event?: React.MouseEvent<Element, MouseEvent>, itemId?: string | number) => void;
40
45
  /** Callback to allow the dropdown component to change the open state of the menu.
41
46
  * Triggered by clicking outside of the menu, or by pressing either tab or escape. */
42
47
  onOpenChange?: (isOpen: boolean) => void;
@@ -62,6 +67,7 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
62
67
  onSelect,
63
68
  isOpen,
64
69
  toggle,
70
+ shouldFocusToggleOnSelect = false,
65
71
  onOpenChange,
66
72
  isPlain,
67
73
  isScrollable,
@@ -73,10 +79,15 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
73
79
  ...props
74
80
  }: DropdownProps) => {
75
81
  const localMenuRef = React.useRef<HTMLDivElement>();
76
- const toggleRef = React.useRef<HTMLButtonElement>();
82
+ const localToggleRef = React.useRef<HTMLButtonElement>();
77
83
  const ouiaProps = useOUIAProps(Dropdown.displayName, ouiaId, ouiaSafe);
78
84
 
79
85
  const menuRef = (innerRef as React.RefObject<HTMLDivElement>) || localMenuRef;
86
+ const toggleRef =
87
+ typeof toggle === 'function' || (typeof toggle !== 'function' && !toggle.toggleRef)
88
+ ? localToggleRef
89
+ : (toggle?.toggleRef as React.RefObject<HTMLButtonElement>);
90
+
80
91
  React.useEffect(() => {
81
92
  const handleMenuKeys = (event: KeyboardEvent) => {
82
93
  // Close the menu on tab or escape if onOpenChange is provided
@@ -119,13 +130,16 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
119
130
  window.removeEventListener('keydown', handleMenuKeys);
120
131
  window.removeEventListener('click', handleClick);
121
132
  };
122
- }, [isOpen, menuRef, onOpenChange]);
133
+ }, [isOpen, menuRef, toggleRef, onOpenChange]);
123
134
 
124
135
  const menu = (
125
136
  <Menu
126
137
  className={css(className)}
127
138
  ref={menuRef}
128
- onSelect={(event, itemId) => onSelect && onSelect(event, itemId, toggleRef)}
139
+ onSelect={(event, itemId) => {
140
+ onSelect && onSelect(event, itemId);
141
+ shouldFocusToggleOnSelect && toggleRef.current.focus();
142
+ }}
129
143
  isPlain={isPlain}
130
144
  isScrollable={isScrollable}
131
145
  {...props}
@@ -136,7 +150,7 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
136
150
  );
137
151
  return (
138
152
  <Popper
139
- trigger={toggle(toggleRef)}
153
+ trigger={typeof toggle === 'function' ? toggle(toggleRef) : toggle.toggleNode}
140
154
  triggerRef={toggleRef}
141
155
  popper={menu}
142
156
  popperRef={menuRef}
@@ -3,7 +3,16 @@ id: Dropdown
3
3
  section: components
4
4
  subsection: menus
5
5
  cssPrefix: pf-c-menu
6
- propComponents: ['Dropdown', DropdownGroup, 'DropdownItem', 'DropdownList', 'MenuToggle', 'DropdownPopperProps']
6
+ propComponents:
7
+ [
8
+ 'Dropdown',
9
+ 'DropdownGroup',
10
+ 'DropdownItem',
11
+ 'DropdownList',
12
+ 'MenuToggle',
13
+ 'DropdownToggleProps',
14
+ 'DropdownPopperProps'
15
+ ]
7
16
  ---
8
17
 
9
18
  import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
@@ -8,15 +8,10 @@ export const DropdownBasic: React.FunctionComponent = () => {
8
8
  setIsOpen(!isOpen);
9
9
  };
10
10
 
11
- const onSelect = (
12
- _event: React.MouseEvent<Element, MouseEvent> | undefined,
13
- itemId: string | number | undefined,
14
- toggleRef: React.RefObject<any>
15
- ) => {
11
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: string | number | undefined) => {
16
12
  // eslint-disable-next-line no-console
17
13
  console.log('selected', itemId);
18
14
  setIsOpen(false);
19
- toggleRef?.current.focus();
20
15
  };
21
16
 
22
17
  return (
@@ -30,6 +25,7 @@ export const DropdownBasic: React.FunctionComponent = () => {
30
25
  </MenuToggle>
31
26
  )}
32
27
  ouiaId="BasicDropdown"
28
+ shouldFocusToggleOnSelect
33
29
  >
34
30
  <DropdownList>
35
31
  <DropdownItem itemId={0} key="action">