@patternfly/react-core 5.0.0-alpha.108 → 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 (367) hide show
  1. package/CHANGELOG.md +6 -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/package.json +1 -1
  46. package/dist/esm/components/DualListSelector/package.json +1 -1
  47. package/dist/esm/components/EmptyState/package.json +1 -1
  48. package/dist/esm/components/ExpandableSection/package.json +1 -1
  49. package/dist/esm/components/FileUpload/FileUploadField.js +2 -2
  50. package/dist/esm/components/FileUpload/FileUploadField.js.map +1 -1
  51. package/dist/esm/components/FileUpload/package.json +1 -1
  52. package/dist/esm/components/Form/package.json +1 -1
  53. package/dist/esm/components/FormControl/FormControlIcon.d.ts +16 -0
  54. package/dist/esm/components/FormControl/FormControlIcon.d.ts.map +1 -0
  55. package/dist/esm/components/FormControl/FormControlIcon.js +18 -0
  56. package/dist/esm/components/FormControl/FormControlIcon.js.map +1 -0
  57. package/dist/esm/components/FormSelect/FormSelect.d.ts +0 -2
  58. package/dist/esm/components/FormSelect/FormSelect.d.ts.map +1 -1
  59. package/dist/esm/components/FormSelect/FormSelect.js +9 -3
  60. package/dist/esm/components/FormSelect/FormSelect.js.map +1 -1
  61. package/dist/esm/components/FormSelect/package.json +1 -1
  62. package/dist/esm/components/HelperText/package.json +1 -1
  63. package/dist/esm/components/Hint/package.json +1 -1
  64. package/dist/esm/components/Icon/package.json +1 -1
  65. package/dist/esm/components/InputGroup/package.json +1 -1
  66. package/dist/esm/components/JumpLinks/package.json +1 -1
  67. package/dist/esm/components/Label/package.json +1 -1
  68. package/dist/esm/components/List/package.json +1 -1
  69. package/dist/esm/components/LoginPage/package.json +1 -1
  70. package/dist/esm/components/Masthead/package.json +1 -1
  71. package/dist/esm/components/Menu/package.json +1 -1
  72. package/dist/esm/components/MenuToggle/package.json +1 -1
  73. package/dist/esm/components/Modal/package.json +1 -1
  74. package/dist/esm/components/MultipleFileUpload/package.json +1 -1
  75. package/dist/esm/components/Nav/package.json +1 -1
  76. package/dist/esm/components/NotificationBadge/package.json +1 -1
  77. package/dist/esm/components/NotificationDrawer/package.json +1 -1
  78. package/dist/esm/components/NumberInput/package.json +1 -1
  79. package/dist/esm/components/OverflowMenu/package.json +1 -1
  80. package/dist/esm/components/Page/package.json +1 -1
  81. package/dist/esm/components/Pagination/package.json +1 -1
  82. package/dist/esm/components/Panel/package.json +1 -1
  83. package/dist/esm/components/Popover/package.json +1 -1
  84. package/dist/esm/components/Progress/package.json +1 -1
  85. package/dist/esm/components/ProgressStepper/package.json +1 -1
  86. package/dist/esm/components/Radio/Radio.d.ts +5 -1
  87. package/dist/esm/components/Radio/Radio.d.ts.map +1 -1
  88. package/dist/esm/components/Radio/Radio.js +3 -3
  89. package/dist/esm/components/Radio/Radio.js.map +1 -1
  90. package/dist/esm/components/Radio/package.json +1 -1
  91. package/dist/esm/components/SearchInput/package.json +1 -1
  92. package/dist/esm/components/Select/package.json +1 -1
  93. package/dist/esm/components/Sidebar/package.json +1 -1
  94. package/dist/esm/components/SimpleList/package.json +1 -1
  95. package/dist/esm/components/Skeleton/package.json +1 -1
  96. package/dist/esm/components/SkipToContent/package.json +1 -1
  97. package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
  98. package/dist/esm/components/Slider/Slider.js +1 -1
  99. package/dist/esm/components/Slider/Slider.js.map +1 -1
  100. package/dist/esm/components/Slider/package.json +1 -1
  101. package/dist/esm/components/Spinner/package.json +1 -1
  102. package/dist/esm/components/Switch/package.json +1 -1
  103. package/dist/esm/components/Tabs/package.json +1 -1
  104. package/dist/esm/components/Text/package.json +1 -1
  105. package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
  106. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  107. package/dist/esm/components/TextArea/TextArea.js +11 -7
  108. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  109. package/dist/esm/components/TextArea/package.json +1 -1
  110. package/dist/esm/components/TextInput/TextInput.d.ts +8 -11
  111. package/dist/esm/components/TextInput/TextInput.d.ts.map +1 -1
  112. package/dist/esm/components/TextInput/TextInput.js +10 -13
  113. package/dist/esm/components/TextInput/TextInput.js.map +1 -1
  114. package/dist/esm/components/TextInput/package.json +1 -1
  115. package/dist/esm/components/TextInputGroup/package.json +1 -1
  116. package/dist/esm/components/Tile/package.json +1 -1
  117. package/dist/esm/components/TimePicker/TimePicker.d.ts.map +1 -1
  118. package/dist/esm/components/TimePicker/TimePicker.js +2 -2
  119. package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
  120. package/dist/esm/components/TimePicker/package.json +1 -1
  121. package/dist/esm/components/Timestamp/package.json +1 -1
  122. package/dist/esm/components/Title/package.json +1 -1
  123. package/dist/esm/components/ToggleGroup/package.json +1 -1
  124. package/dist/esm/components/Toolbar/package.json +1 -1
  125. package/dist/esm/components/Tooltip/package.json +1 -1
  126. package/dist/esm/components/TreeView/TreeViewSearch.d.ts.map +1 -1
  127. package/dist/esm/components/TreeView/TreeViewSearch.js +6 -1
  128. package/dist/esm/components/TreeView/TreeViewSearch.js.map +1 -1
  129. package/dist/esm/components/TreeView/package.json +1 -1
  130. package/dist/esm/components/Truncate/package.json +1 -1
  131. package/dist/esm/components/Wizard/hooks/package.json +1 -1
  132. package/dist/esm/components/Wizard/package.json +1 -1
  133. package/dist/esm/components/package.json +1 -1
  134. package/dist/esm/deprecated/components/ApplicationLauncher/package.json +1 -1
  135. package/dist/esm/deprecated/components/ContextSelector/package.json +1 -1
  136. package/dist/esm/deprecated/components/Dropdown/package.json +1 -1
  137. package/dist/esm/deprecated/components/OptionsMenu/package.json +1 -1
  138. package/dist/esm/deprecated/components/PageHeader/package.json +1 -1
  139. package/dist/esm/deprecated/components/Select/Select.d.ts.map +1 -1
  140. package/dist/esm/deprecated/components/Select/Select.js +16 -18
  141. package/dist/esm/deprecated/components/Select/Select.js.map +1 -1
  142. package/dist/esm/deprecated/components/Select/package.json +1 -1
  143. package/dist/esm/deprecated/components/Wizard/package.json +1 -1
  144. package/dist/esm/deprecated/components/package.json +1 -1
  145. package/dist/esm/deprecated/package.json +1 -1
  146. package/dist/esm/helpers/Popper/thirdparty/popper-core/package.json +1 -1
  147. package/dist/esm/helpers/package.json +1 -1
  148. package/dist/esm/layouts/Bullseye/package.json +1 -1
  149. package/dist/esm/layouts/Flex/package.json +1 -1
  150. package/dist/esm/layouts/Gallery/package.json +1 -1
  151. package/dist/esm/layouts/Grid/package.json +1 -1
  152. package/dist/esm/layouts/Level/package.json +1 -1
  153. package/dist/esm/layouts/Split/package.json +1 -1
  154. package/dist/esm/layouts/Stack/package.json +1 -1
  155. package/dist/esm/layouts/package.json +1 -1
  156. package/dist/esm/next/components/package.json +1 -1
  157. package/dist/esm/next/package.json +1 -1
  158. package/dist/esm/package.json +1 -1
  159. package/dist/js/components/AboutModal/package.json +1 -1
  160. package/dist/js/components/Accordion/package.json +1 -1
  161. package/dist/js/components/ActionList/package.json +1 -1
  162. package/dist/js/components/Alert/package.json +1 -1
  163. package/dist/js/components/Avatar/package.json +1 -1
  164. package/dist/js/components/BackToTop/package.json +1 -1
  165. package/dist/js/components/Backdrop/package.json +1 -1
  166. package/dist/js/components/BackgroundImage/package.json +1 -1
  167. package/dist/js/components/Badge/package.json +1 -1
  168. package/dist/js/components/Banner/package.json +1 -1
  169. package/dist/js/components/Brand/package.json +1 -1
  170. package/dist/js/components/Breadcrumb/package.json +1 -1
  171. package/dist/js/components/Button/package.json +1 -1
  172. package/dist/js/components/CalendarMonth/package.json +1 -1
  173. package/dist/js/components/Card/Card.d.ts +12 -5
  174. package/dist/js/components/Card/Card.d.ts.map +1 -1
  175. package/dist/js/components/Card/Card.js +17 -5
  176. package/dist/js/components/Card/Card.js.map +1 -1
  177. package/dist/js/components/Card/CardHeader.d.ts +30 -0
  178. package/dist/js/components/Card/CardHeader.d.ts.map +1 -1
  179. package/dist/js/components/Card/CardHeader.js +40 -5
  180. package/dist/js/components/Card/CardHeader.js.map +1 -1
  181. package/dist/js/components/Card/CardSelectableActions.d.ts +9 -0
  182. package/dist/js/components/Card/CardSelectableActions.d.ts.map +1 -0
  183. package/dist/js/components/Card/CardSelectableActions.js +14 -0
  184. package/dist/js/components/Card/CardSelectableActions.js.map +1 -0
  185. package/dist/js/components/Card/package.json +1 -1
  186. package/dist/js/components/Checkbox/Checkbox.d.ts +2 -0
  187. package/dist/js/components/Checkbox/Checkbox.d.ts.map +1 -1
  188. package/dist/js/components/Checkbox/Checkbox.js +2 -2
  189. package/dist/js/components/Checkbox/Checkbox.js.map +1 -1
  190. package/dist/js/components/Checkbox/package.json +1 -1
  191. package/dist/js/components/Chip/package.json +1 -1
  192. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +4 -4
  193. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  194. package/dist/js/components/ClipboardCopy/package.json +1 -1
  195. package/dist/js/components/CodeBlock/package.json +1 -1
  196. package/dist/js/components/DataList/package.json +1 -1
  197. package/dist/js/components/DatePicker/package.json +1 -1
  198. package/dist/js/components/DescriptionList/package.json +1 -1
  199. package/dist/js/components/Divider/package.json +1 -1
  200. package/dist/js/components/DragDrop/package.json +1 -1
  201. package/dist/js/components/Drawer/package.json +1 -1
  202. package/dist/js/components/Dropdown/package.json +1 -1
  203. package/dist/js/components/DualListSelector/package.json +1 -1
  204. package/dist/js/components/EmptyState/package.json +1 -1
  205. package/dist/js/components/ExpandableSection/package.json +1 -1
  206. package/dist/js/components/FileUpload/FileUploadField.js +2 -2
  207. package/dist/js/components/FileUpload/FileUploadField.js.map +1 -1
  208. package/dist/js/components/FileUpload/package.json +1 -1
  209. package/dist/js/components/Form/package.json +1 -1
  210. package/dist/js/components/FormControl/FormControlIcon.d.ts +16 -0
  211. package/dist/js/components/FormControl/FormControlIcon.d.ts.map +1 -0
  212. package/dist/js/components/FormControl/FormControlIcon.js +22 -0
  213. package/dist/js/components/FormControl/FormControlIcon.js.map +1 -0
  214. package/dist/js/components/FormSelect/FormSelect.d.ts +0 -2
  215. package/dist/js/components/FormSelect/FormSelect.d.ts.map +1 -1
  216. package/dist/js/components/FormSelect/FormSelect.js +9 -3
  217. package/dist/js/components/FormSelect/FormSelect.js.map +1 -1
  218. package/dist/js/components/FormSelect/package.json +1 -1
  219. package/dist/js/components/HelperText/package.json +1 -1
  220. package/dist/js/components/Hint/package.json +1 -1
  221. package/dist/js/components/Icon/package.json +1 -1
  222. package/dist/js/components/InputGroup/package.json +1 -1
  223. package/dist/js/components/JumpLinks/package.json +1 -1
  224. package/dist/js/components/Label/package.json +1 -1
  225. package/dist/js/components/List/package.json +1 -1
  226. package/dist/js/components/LoginPage/package.json +1 -1
  227. package/dist/js/components/Masthead/package.json +1 -1
  228. package/dist/js/components/Menu/package.json +1 -1
  229. package/dist/js/components/MenuToggle/package.json +1 -1
  230. package/dist/js/components/Modal/package.json +1 -1
  231. package/dist/js/components/MultipleFileUpload/package.json +1 -1
  232. package/dist/js/components/Nav/package.json +1 -1
  233. package/dist/js/components/NotificationBadge/package.json +1 -1
  234. package/dist/js/components/NotificationDrawer/package.json +1 -1
  235. package/dist/js/components/NumberInput/package.json +1 -1
  236. package/dist/js/components/OverflowMenu/package.json +1 -1
  237. package/dist/js/components/Page/package.json +1 -1
  238. package/dist/js/components/Pagination/package.json +1 -1
  239. package/dist/js/components/Panel/package.json +1 -1
  240. package/dist/js/components/Popover/package.json +1 -1
  241. package/dist/js/components/Progress/package.json +1 -1
  242. package/dist/js/components/ProgressStepper/package.json +1 -1
  243. package/dist/js/components/Radio/Radio.d.ts +5 -1
  244. package/dist/js/components/Radio/Radio.d.ts.map +1 -1
  245. package/dist/js/components/Radio/Radio.js +3 -3
  246. package/dist/js/components/Radio/Radio.js.map +1 -1
  247. package/dist/js/components/Radio/package.json +1 -1
  248. package/dist/js/components/SearchInput/package.json +1 -1
  249. package/dist/js/components/Select/package.json +1 -1
  250. package/dist/js/components/Sidebar/package.json +1 -1
  251. package/dist/js/components/SimpleList/package.json +1 -1
  252. package/dist/js/components/Skeleton/package.json +1 -1
  253. package/dist/js/components/SkipToContent/package.json +1 -1
  254. package/dist/js/components/Slider/Slider.d.ts.map +1 -1
  255. package/dist/js/components/Slider/Slider.js +1 -1
  256. package/dist/js/components/Slider/Slider.js.map +1 -1
  257. package/dist/js/components/Slider/package.json +1 -1
  258. package/dist/js/components/Spinner/package.json +1 -1
  259. package/dist/js/components/Switch/package.json +1 -1
  260. package/dist/js/components/Tabs/package.json +1 -1
  261. package/dist/js/components/Text/package.json +1 -1
  262. package/dist/js/components/TextArea/TextArea.d.ts +0 -4
  263. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  264. package/dist/js/components/TextArea/TextArea.js +11 -7
  265. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  266. package/dist/js/components/TextArea/package.json +1 -1
  267. package/dist/js/components/TextInput/TextInput.d.ts +8 -11
  268. package/dist/js/components/TextInput/TextInput.d.ts.map +1 -1
  269. package/dist/js/components/TextInput/TextInput.js +10 -13
  270. package/dist/js/components/TextInput/TextInput.js.map +1 -1
  271. package/dist/js/components/TextInput/package.json +1 -1
  272. package/dist/js/components/TextInputGroup/package.json +1 -1
  273. package/dist/js/components/Tile/package.json +1 -1
  274. package/dist/js/components/TimePicker/TimePicker.d.ts.map +1 -1
  275. package/dist/js/components/TimePicker/TimePicker.js +2 -2
  276. package/dist/js/components/TimePicker/TimePicker.js.map +1 -1
  277. package/dist/js/components/TimePicker/package.json +1 -1
  278. package/dist/js/components/Timestamp/package.json +1 -1
  279. package/dist/js/components/Title/package.json +1 -1
  280. package/dist/js/components/ToggleGroup/package.json +1 -1
  281. package/dist/js/components/Toolbar/package.json +1 -1
  282. package/dist/js/components/Tooltip/package.json +1 -1
  283. package/dist/js/components/TreeView/TreeViewSearch.d.ts.map +1 -1
  284. package/dist/js/components/TreeView/TreeViewSearch.js +6 -1
  285. package/dist/js/components/TreeView/TreeViewSearch.js.map +1 -1
  286. package/dist/js/components/TreeView/package.json +1 -1
  287. package/dist/js/components/Truncate/package.json +1 -1
  288. package/dist/js/components/Wizard/hooks/package.json +1 -1
  289. package/dist/js/components/Wizard/package.json +1 -1
  290. package/dist/js/components/package.json +1 -1
  291. package/dist/js/deprecated/components/ApplicationLauncher/package.json +1 -1
  292. package/dist/js/deprecated/components/ContextSelector/package.json +1 -1
  293. package/dist/js/deprecated/components/Dropdown/package.json +1 -1
  294. package/dist/js/deprecated/components/OptionsMenu/package.json +1 -1
  295. package/dist/js/deprecated/components/PageHeader/package.json +1 -1
  296. package/dist/js/deprecated/components/Select/Select.d.ts.map +1 -1
  297. package/dist/js/deprecated/components/Select/Select.js +16 -18
  298. package/dist/js/deprecated/components/Select/Select.js.map +1 -1
  299. package/dist/js/deprecated/components/Select/package.json +1 -1
  300. package/dist/js/deprecated/components/Wizard/package.json +1 -1
  301. package/dist/js/deprecated/components/package.json +1 -1
  302. package/dist/js/deprecated/package.json +1 -1
  303. package/dist/js/helpers/Popper/thirdparty/popper-core/package.json +1 -1
  304. package/dist/js/helpers/package.json +1 -1
  305. package/dist/js/layouts/Bullseye/package.json +1 -1
  306. package/dist/js/layouts/Flex/package.json +1 -1
  307. package/dist/js/layouts/Gallery/package.json +1 -1
  308. package/dist/js/layouts/Grid/package.json +1 -1
  309. package/dist/js/layouts/Level/package.json +1 -1
  310. package/dist/js/layouts/Split/package.json +1 -1
  311. package/dist/js/layouts/Stack/package.json +1 -1
  312. package/dist/js/layouts/package.json +1 -1
  313. package/dist/js/next/components/package.json +1 -1
  314. package/dist/js/next/package.json +1 -1
  315. package/dist/js/package.json +1 -1
  316. package/dist/umd/react-core.min.js +3 -3
  317. package/package.json +6 -6
  318. package/src/components/Card/Card.tsx +34 -9
  319. package/src/components/Card/CardHeader.tsx +94 -2
  320. package/src/components/Card/CardSelectableActions.tsx +21 -0
  321. package/src/components/Card/__tests__/Card.test.tsx +11 -7
  322. package/src/components/Card/__tests__/__snapshots__/CardHeader.test.tsx.snap +1 -3
  323. package/src/components/Card/examples/Card.md +59 -16
  324. package/src/components/Card/examples/CardClickable.tsx +54 -0
  325. package/src/components/Card/examples/CardClickableSelectable.tsx +94 -0
  326. package/src/components/Card/examples/{CardLegacySelectable.tsx → CardDeprecatedSelectable.tsx} +2 -0
  327. package/src/components/Card/examples/{CardSelectableA11yHighlight.tsx → CardDeprecatedSelectableA11yHighlight.tsx} +1 -1
  328. package/src/components/Card/examples/CardSelectable.tsx +60 -115
  329. package/src/components/Card/examples/CardSingleSelectable.tsx +52 -0
  330. package/src/components/Checkbox/Checkbox.tsx +5 -2
  331. package/src/components/ClipboardCopy/ClipboardCopy.tsx +4 -4
  332. package/src/components/ClipboardCopy/__tests__/Generated/__snapshots__/ClipboardCopy.test.tsx.snap +13 -10
  333. package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +40 -31
  334. package/src/components/FileUpload/FileUploadField.tsx +1 -1
  335. package/src/components/FileUpload/__tests__/__snapshots__/FileUpload.test.tsx.snap +28 -22
  336. package/src/components/FileUpload/__tests__/__snapshots__/FileUploadField.test.tsx.snap +28 -22
  337. package/src/components/FormControl/FormControlIcon.tsx +31 -0
  338. package/src/components/FormSelect/FormSelect.tsx +26 -20
  339. package/src/components/FormSelect/__tests__/FormSelect.test.tsx +2 -2
  340. package/src/components/FormSelect/__tests__/__snapshots__/FormSelect.test.tsx.snap +421 -178
  341. package/src/components/FormSelect/examples/FormSelect.md +7 -6
  342. package/src/components/LoginPage/__tests__/__snapshots__/LoginForm.test.tsx.snap +84 -66
  343. package/src/components/NumberInput/__tests__/__snapshots__/NumberInput.test.tsx.snap +217 -133
  344. package/src/components/Radio/Radio.tsx +7 -2
  345. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +36 -27
  346. package/src/components/Slider/Slider.tsx +0 -1
  347. package/src/components/Slider/_tests_/__snapshots__/Slider.test.tsx.snap +52 -40
  348. package/src/components/TextArea/TextArea.tsx +33 -26
  349. package/src/components/TextArea/__tests__/TextArea.test.tsx +6 -6
  350. package/src/components/TextArea/__tests__/__snapshots__/TextArea.test.tsx.snap +11 -8
  351. package/src/components/TextArea/examples/TextArea.md +8 -6
  352. package/src/components/TextInput/TextInput.tsx +43 -47
  353. package/src/components/TextInput/__tests__/TextInput.test.tsx +2 -2
  354. package/src/components/TextInput/__tests__/__snapshots__/TextInput.test.tsx.snap +130 -72
  355. package/src/components/TextInput/examples/TextInput.md +14 -5
  356. package/src/components/TextInput/examples/TextInputCustomIcon.tsx +30 -0
  357. package/src/components/TextInput/examples/TextInputCustomIconInvalid.tsx +20 -0
  358. package/src/components/TimePicker/TimePicker.tsx +2 -4
  359. package/src/components/TreeView/TreeViewSearch.tsx +9 -9
  360. package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +29 -7
  361. package/src/demos/examples/DateTimePicker/DateTimePicker.tsx +1 -1
  362. package/src/deprecated/components/Select/Select.tsx +21 -25
  363. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +1 -2
  364. package/src/components/FormSelect/examples/FormSelectIconSpriteVariant.tsx +0 -63
  365. package/src/components/TextArea/examples/TextAreaIconSprite.tsx +0 -41
  366. package/src/components/TextInput/examples/TextInputIcon.tsx +0 -39
  367. 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"
@@ -153,16 +156,19 @@ exports[`With popover opened 1`] = `
153
156
  <div
154
157
  class="pf-v5-c-calendar-month__header-year"
155
158
  >
156
- <input
157
- aria-invalid="false"
158
- aria-label="Select year"
159
+ <div
159
160
  class="pf-v5-c-form-control"
160
- data-ouia-component-id="OUIA-Generated-TextInputBase-5"
161
- data-ouia-component-type="PF4/TextInput"
162
- data-ouia-safe="true"
163
- type="number"
164
- value="1969"
165
- />
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>
166
172
  </div>
167
173
  </div>
168
174
  </div>
@@ -772,18 +778,21 @@ exports[`disabled date picker 1`] = `
772
778
  <div
773
779
  class="pf-v5-c-input-group__item pf-m-fill"
774
780
  >
775
- <input
776
- aria-invalid="false"
777
- aria-label="disabled date picker"
778
- class="pf-v5-c-form-control"
779
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
780
- data-ouia-component-type="PF4/TextInput"
781
- data-ouia-safe="true"
782
- disabled=""
783
- placeholder="YYYY-MM-DD"
784
- type="text"
785
- value="2020-11-20"
786
- />
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>
787
796
  </div>
788
797
  <div
789
798
  class="pf-v5-c-input-group__item"
@@ -132,7 +132,7 @@ export const FileUploadField: React.FunctionComponent<FileUploadFieldProps> = ({
132
132
  <InputGroup>
133
133
  <InputGroupItem isFill>
134
134
  <TextInput
135
- isReadOnly // Always read-only regardless of isReadOnly prop (which is just for the TextArea)
135
+ readOnlyVariant="plain" // Always read-only regardless of isReadOnly prop (which is just for the TextArea)
136
136
  isDisabled={isDisabled}
137
137
  id={`${id}-filename`}
138
138
  name={`${id}-filename`}
@@ -15,21 +15,24 @@ exports[`simple fileupload 1`] = `
15
15
  <div
16
16
  class="pf-v5-c-input-group__item pf-m-fill"
17
17
  >
18
- <input
19
- aria-describedby="simple-text-file-browse-button"
20
- aria-invalid="false"
21
- aria-label="Drag a file here or browse to upload"
22
- class="pf-v5-c-form-control"
23
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
24
- data-ouia-component-type="PF4/TextInput"
25
- data-ouia-safe="true"
26
- id="simple-text-file-filename"
27
- name="simple-text-file-filename"
28
- placeholder="Drag a file here or browse to upload"
29
- readonly=""
30
- type="text"
31
- value=""
32
- />
18
+ <div
19
+ class="pf-v5-c-form-control pf-m-readonly pf-m-plain"
20
+ >
21
+ <input
22
+ aria-describedby="simple-text-file-browse-button"
23
+ aria-invalid="false"
24
+ aria-label="Drag a file here or browse to upload"
25
+ data-ouia-component-id="OUIA-Generated-TextInputBase-1"
26
+ data-ouia-component-type="PF4/TextInput"
27
+ data-ouia-safe="true"
28
+ id="simple-text-file-filename"
29
+ name="simple-text-file-filename"
30
+ placeholder="Drag a file here or browse to upload"
31
+ readonly=""
32
+ type="text"
33
+ value=""
34
+ />
35
+ </div>
33
36
  </div>
34
37
  <div
35
38
  class="pf-v5-c-input-group__item"
@@ -66,14 +69,17 @@ exports[`simple fileupload 1`] = `
66
69
  <div
67
70
  class="pf-v5-c-file-upload__file-details"
68
71
  >
69
- <textarea
70
- aria-invalid="false"
71
- aria-label="File upload"
72
+ <div
72
73
  class="pf-v5-c-form-control pf-m-resize-vertical"
73
- id="simple-text-file"
74
- name="simple-text-file"
75
- placeholder=""
76
- />
74
+ >
75
+ <textarea
76
+ aria-invalid="false"
77
+ aria-label="File upload"
78
+ id="simple-text-file"
79
+ name="simple-text-file"
80
+ placeholder=""
81
+ />
82
+ </div>
77
83
  </div>
78
84
  <input
79
85
  style="display: none;"
@@ -14,21 +14,24 @@ exports[`simple fileuploadfield 1`] = `
14
14
  <div
15
15
  class="pf-v5-c-input-group__item pf-m-fill"
16
16
  >
17
- <input
18
- aria-describedby="custom-file-upload-browse-button"
19
- aria-invalid="false"
20
- aria-label="Do something custom with this!"
21
- class="pf-v5-c-form-control"
22
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
23
- data-ouia-component-type="PF4/TextInput"
24
- data-ouia-safe="true"
25
- id="custom-file-upload-filename"
26
- name="custom-file-upload-filename"
27
- placeholder="Do something custom with this!"
28
- readonly=""
29
- type="text"
30
- value=""
31
- />
17
+ <div
18
+ class="pf-v5-c-form-control pf-m-readonly pf-m-plain"
19
+ >
20
+ <input
21
+ aria-describedby="custom-file-upload-browse-button"
22
+ aria-invalid="false"
23
+ aria-label="Do something custom with this!"
24
+ data-ouia-component-id="OUIA-Generated-TextInputBase-1"
25
+ data-ouia-component-type="PF4/TextInput"
26
+ data-ouia-safe="true"
27
+ id="custom-file-upload-filename"
28
+ name="custom-file-upload-filename"
29
+ placeholder="Do something custom with this!"
30
+ readonly=""
31
+ type="text"
32
+ value=""
33
+ />
34
+ </div>
32
35
  </div>
33
36
  <div
34
37
  class="pf-v5-c-input-group__item"
@@ -64,14 +67,17 @@ exports[`simple fileuploadfield 1`] = `
64
67
  <div
65
68
  class="pf-v5-c-file-upload__file-details"
66
69
  >
67
- <textarea
68
- aria-invalid="false"
69
- aria-label="File upload"
70
+ <div
70
71
  class="pf-v5-c-form-control pf-m-resize-vertical"
71
- id="custom-file-upload"
72
- name="custom-file-upload"
73
- placeholder=""
74
- />
72
+ >
73
+ <textarea
74
+ aria-invalid="false"
75
+ aria-label="File upload"
76
+ id="custom-file-upload"
77
+ name="custom-file-upload"
78
+ placeholder=""
79
+ />
80
+ </div>
75
81
  </div>
76
82
  <p>
77
83
  A custom preview of the uploaded file can be passed as children
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import styles from '@patternfly/react-styles/css/components/FormControl/form-control';
3
+ import { css } from '@patternfly/react-styles';
4
+ import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
5
+ import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';
6
+ import ExclamationTriangleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon';
7
+
8
+ export const statusIcons = {
9
+ success: CheckCircleIcon,
10
+ error: ExclamationCircleIcon,
11
+ warning: ExclamationTriangleIcon
12
+ };
13
+
14
+ export interface FormControlIconProps extends React.HTMLProps<HTMLDivElement> {
15
+ /** Additional class names added to the text input icon wrapper. */
16
+ className?: string;
17
+ /** A custom icon to render instead of a status icon. */
18
+ customIcon?: React.ReactNode;
19
+ /** The status icon to render. */
20
+ status?: 'success' | 'error' | 'warning';
21
+ }
22
+
23
+ export const FormControlIcon = ({ status, customIcon, className, ...props }: FormControlIconProps) => {
24
+ const StatusIcon = status && statusIcons[status];
25
+
26
+ return (
27
+ <div className={css(styles.formControlIcon, status && styles.modifiers.status, className)} {...props}>
28
+ {customIcon || <StatusIcon />}
29
+ </div>
30
+ );
31
+ };