@patternfly/react-core 5.0.0-alpha.104 → 5.0.0-alpha.106

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 (324) hide show
  1. package/CHANGELOG.md +8 -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/CalendarMonth.d.ts.map +1 -1
  16. package/dist/esm/components/CalendarMonth/CalendarMonth.js +27 -25
  17. package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
  18. package/dist/esm/components/CalendarMonth/package.json +1 -1
  19. package/dist/esm/components/Card/package.json +1 -1
  20. package/dist/esm/components/Checkbox/package.json +1 -1
  21. package/dist/esm/components/Chip/package.json +1 -1
  22. package/dist/esm/components/ClipboardCopy/package.json +1 -1
  23. package/dist/esm/components/CodeBlock/package.json +1 -1
  24. package/dist/esm/components/DataList/package.json +1 -1
  25. package/dist/esm/components/DatePicker/DatePicker.d.ts.map +1 -1
  26. package/dist/esm/components/DatePicker/DatePicker.js +8 -6
  27. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  28. package/dist/esm/components/DatePicker/package.json +1 -1
  29. package/dist/esm/components/DescriptionList/package.json +1 -1
  30. package/dist/esm/components/Divider/package.json +1 -1
  31. package/dist/esm/components/DragDrop/package.json +1 -1
  32. package/dist/esm/components/Drawer/package.json +1 -1
  33. package/dist/esm/components/Dropdown/package.json +1 -1
  34. package/dist/esm/components/DualListSelector/package.json +1 -1
  35. package/dist/esm/components/EmptyState/package.json +1 -1
  36. package/dist/esm/components/ExpandableSection/package.json +1 -1
  37. package/dist/esm/components/FileUpload/FileUploadField.d.ts.map +1 -1
  38. package/dist/esm/components/FileUpload/FileUploadField.js +8 -5
  39. package/dist/esm/components/FileUpload/FileUploadField.js.map +1 -1
  40. package/dist/esm/components/FileUpload/package.json +1 -1
  41. package/dist/esm/components/Form/package.json +1 -1
  42. package/dist/esm/components/FormSelect/package.json +1 -1
  43. package/dist/esm/components/HelperText/package.json +1 -1
  44. package/dist/esm/components/Hint/package.json +1 -1
  45. package/dist/esm/components/Icon/package.json +1 -1
  46. package/dist/esm/components/InputGroup/InputGroup.d.ts.map +1 -1
  47. package/dist/esm/components/InputGroup/InputGroup.js +48 -9
  48. package/dist/esm/components/InputGroup/InputGroup.js.map +1 -1
  49. package/dist/esm/components/InputGroup/InputGroupItem.d.ts +17 -0
  50. package/dist/esm/components/InputGroup/InputGroupItem.d.ts.map +1 -0
  51. package/dist/esm/components/InputGroup/InputGroupItem.js +10 -0
  52. package/dist/esm/components/InputGroup/InputGroupItem.js.map +1 -0
  53. package/dist/esm/components/InputGroup/index.d.ts +1 -0
  54. package/dist/esm/components/InputGroup/index.d.ts.map +1 -1
  55. package/dist/esm/components/InputGroup/index.js +1 -0
  56. package/dist/esm/components/InputGroup/index.js.map +1 -1
  57. package/dist/esm/components/InputGroup/package.json +1 -1
  58. package/dist/esm/components/JumpLinks/package.json +1 -1
  59. package/dist/esm/components/Label/package.json +1 -1
  60. package/dist/esm/components/List/package.json +1 -1
  61. package/dist/esm/components/LoginPage/LoginForm.d.ts.map +1 -1
  62. package/dist/esm/components/LoginPage/LoginForm.js +4 -3
  63. package/dist/esm/components/LoginPage/LoginForm.js.map +1 -1
  64. package/dist/esm/components/LoginPage/package.json +1 -1
  65. package/dist/esm/components/Masthead/package.json +1 -1
  66. package/dist/esm/components/Menu/package.json +1 -1
  67. package/dist/esm/components/MenuToggle/package.json +1 -1
  68. package/dist/esm/components/Modal/package.json +1 -1
  69. package/dist/esm/components/MultipleFileUpload/package.json +1 -1
  70. package/dist/esm/components/Nav/package.json +1 -1
  71. package/dist/esm/components/NotificationBadge/package.json +1 -1
  72. package/dist/esm/components/NotificationDrawer/package.json +1 -1
  73. package/dist/esm/components/NumberInput/NumberInput.d.ts.map +1 -1
  74. package/dist/esm/components/NumberInput/NumberInput.js +11 -8
  75. package/dist/esm/components/NumberInput/NumberInput.js.map +1 -1
  76. package/dist/esm/components/NumberInput/package.json +1 -1
  77. package/dist/esm/components/OverflowMenu/package.json +1 -1
  78. package/dist/esm/components/Page/package.json +1 -1
  79. package/dist/esm/components/Pagination/package.json +1 -1
  80. package/dist/esm/components/Panel/package.json +1 -1
  81. package/dist/esm/components/Popover/package.json +1 -1
  82. package/dist/esm/components/Progress/package.json +1 -1
  83. package/dist/esm/components/ProgressStepper/package.json +1 -1
  84. package/dist/esm/components/Radio/package.json +1 -1
  85. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  86. package/dist/esm/components/SearchInput/SearchInput.js +15 -10
  87. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  88. package/dist/esm/components/SearchInput/package.json +1 -1
  89. package/dist/esm/components/Select/package.json +1 -1
  90. package/dist/esm/components/Sidebar/package.json +1 -1
  91. package/dist/esm/components/SimpleList/package.json +1 -1
  92. package/dist/esm/components/Skeleton/package.json +1 -1
  93. package/dist/esm/components/SkipToContent/package.json +1 -1
  94. package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
  95. package/dist/esm/components/Slider/Slider.js +4 -5
  96. package/dist/esm/components/Slider/Slider.js.map +1 -1
  97. package/dist/esm/components/Slider/package.json +1 -1
  98. package/dist/esm/components/Spinner/package.json +1 -1
  99. package/dist/esm/components/Switch/package.json +1 -1
  100. package/dist/esm/components/Tabs/package.json +1 -1
  101. package/dist/esm/components/Text/package.json +1 -1
  102. package/dist/esm/components/TextArea/package.json +1 -1
  103. package/dist/esm/components/TextInput/package.json +1 -1
  104. package/dist/esm/components/TextInputGroup/package.json +1 -1
  105. package/dist/esm/components/Tile/package.json +1 -1
  106. package/dist/esm/components/TimePicker/TimePicker.d.ts.map +1 -1
  107. package/dist/esm/components/TimePicker/TimePicker.js +5 -4
  108. package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
  109. package/dist/esm/components/TimePicker/package.json +1 -1
  110. package/dist/esm/components/Timestamp/package.json +1 -1
  111. package/dist/esm/components/Title/package.json +1 -1
  112. package/dist/esm/components/ToggleGroup/package.json +1 -1
  113. package/dist/esm/components/Toolbar/package.json +1 -1
  114. package/dist/esm/components/Tooltip/package.json +1 -1
  115. package/dist/esm/components/TreeView/package.json +1 -1
  116. package/dist/esm/components/Truncate/package.json +1 -1
  117. package/dist/esm/components/Wizard/hooks/package.json +1 -1
  118. package/dist/esm/components/Wizard/package.json +1 -1
  119. package/dist/esm/components/package.json +1 -1
  120. package/dist/esm/deprecated/components/ApplicationLauncher/package.json +1 -1
  121. package/dist/esm/deprecated/components/ContextSelector/package.json +1 -1
  122. package/dist/esm/deprecated/components/Dropdown/package.json +1 -1
  123. package/dist/esm/deprecated/components/OptionsMenu/package.json +1 -1
  124. package/dist/esm/deprecated/components/PageHeader/package.json +1 -1
  125. package/dist/esm/deprecated/components/Select/package.json +1 -1
  126. package/dist/esm/deprecated/components/Wizard/package.json +1 -1
  127. package/dist/esm/deprecated/components/package.json +1 -1
  128. package/dist/esm/deprecated/package.json +1 -1
  129. package/dist/esm/helpers/Popper/thirdparty/popper-core/package.json +1 -1
  130. package/dist/esm/helpers/package.json +1 -1
  131. package/dist/esm/layouts/Bullseye/package.json +1 -1
  132. package/dist/esm/layouts/Flex/package.json +1 -1
  133. package/dist/esm/layouts/Gallery/package.json +1 -1
  134. package/dist/esm/layouts/Grid/package.json +1 -1
  135. package/dist/esm/layouts/Level/package.json +1 -1
  136. package/dist/esm/layouts/Split/package.json +1 -1
  137. package/dist/esm/layouts/Stack/package.json +1 -1
  138. package/dist/esm/layouts/package.json +1 -1
  139. package/dist/esm/next/components/package.json +1 -1
  140. package/dist/esm/next/package.json +1 -1
  141. package/dist/esm/package.json +1 -1
  142. package/dist/js/components/AboutModal/package.json +1 -1
  143. package/dist/js/components/Accordion/package.json +1 -1
  144. package/dist/js/components/ActionList/package.json +1 -1
  145. package/dist/js/components/Alert/package.json +1 -1
  146. package/dist/js/components/Avatar/package.json +1 -1
  147. package/dist/js/components/BackToTop/package.json +1 -1
  148. package/dist/js/components/Backdrop/package.json +1 -1
  149. package/dist/js/components/BackgroundImage/package.json +1 -1
  150. package/dist/js/components/Badge/package.json +1 -1
  151. package/dist/js/components/Banner/package.json +1 -1
  152. package/dist/js/components/Brand/package.json +1 -1
  153. package/dist/js/components/Breadcrumb/package.json +1 -1
  154. package/dist/js/components/Button/package.json +1 -1
  155. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  156. package/dist/js/components/CalendarMonth/CalendarMonth.js +26 -24
  157. package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
  158. package/dist/js/components/CalendarMonth/package.json +1 -1
  159. package/dist/js/components/Card/package.json +1 -1
  160. package/dist/js/components/Checkbox/package.json +1 -1
  161. package/dist/js/components/Chip/package.json +1 -1
  162. package/dist/js/components/ClipboardCopy/package.json +1 -1
  163. package/dist/js/components/CodeBlock/package.json +1 -1
  164. package/dist/js/components/DataList/package.json +1 -1
  165. package/dist/js/components/DatePicker/DatePicker.d.ts.map +1 -1
  166. package/dist/js/components/DatePicker/DatePicker.js +8 -6
  167. package/dist/js/components/DatePicker/DatePicker.js.map +1 -1
  168. package/dist/js/components/DatePicker/package.json +1 -1
  169. package/dist/js/components/DescriptionList/package.json +1 -1
  170. package/dist/js/components/Divider/package.json +1 -1
  171. package/dist/js/components/DragDrop/package.json +1 -1
  172. package/dist/js/components/Drawer/package.json +1 -1
  173. package/dist/js/components/Dropdown/package.json +1 -1
  174. package/dist/js/components/DualListSelector/package.json +1 -1
  175. package/dist/js/components/EmptyState/package.json +1 -1
  176. package/dist/js/components/ExpandableSection/package.json +1 -1
  177. package/dist/js/components/FileUpload/FileUploadField.d.ts.map +1 -1
  178. package/dist/js/components/FileUpload/FileUploadField.js +7 -4
  179. package/dist/js/components/FileUpload/FileUploadField.js.map +1 -1
  180. package/dist/js/components/FileUpload/package.json +1 -1
  181. package/dist/js/components/Form/package.json +1 -1
  182. package/dist/js/components/FormSelect/package.json +1 -1
  183. package/dist/js/components/HelperText/package.json +1 -1
  184. package/dist/js/components/Hint/package.json +1 -1
  185. package/dist/js/components/Icon/package.json +1 -1
  186. package/dist/js/components/InputGroup/InputGroup.d.ts.map +1 -1
  187. package/dist/js/components/InputGroup/InputGroup.js +48 -9
  188. package/dist/js/components/InputGroup/InputGroup.js.map +1 -1
  189. package/dist/js/components/InputGroup/InputGroupItem.d.ts +17 -0
  190. package/dist/js/components/InputGroup/InputGroupItem.d.ts.map +1 -0
  191. package/dist/js/components/InputGroup/InputGroupItem.js +14 -0
  192. package/dist/js/components/InputGroup/InputGroupItem.js.map +1 -0
  193. package/dist/js/components/InputGroup/index.d.ts +1 -0
  194. package/dist/js/components/InputGroup/index.d.ts.map +1 -1
  195. package/dist/js/components/InputGroup/index.js +1 -0
  196. package/dist/js/components/InputGroup/index.js.map +1 -1
  197. package/dist/js/components/InputGroup/package.json +1 -1
  198. package/dist/js/components/JumpLinks/package.json +1 -1
  199. package/dist/js/components/Label/package.json +1 -1
  200. package/dist/js/components/List/package.json +1 -1
  201. package/dist/js/components/LoginPage/LoginForm.d.ts.map +1 -1
  202. package/dist/js/components/LoginPage/LoginForm.js +3 -2
  203. package/dist/js/components/LoginPage/LoginForm.js.map +1 -1
  204. package/dist/js/components/LoginPage/package.json +1 -1
  205. package/dist/js/components/Masthead/package.json +1 -1
  206. package/dist/js/components/Menu/package.json +1 -1
  207. package/dist/js/components/MenuToggle/package.json +1 -1
  208. package/dist/js/components/Modal/package.json +1 -1
  209. package/dist/js/components/MultipleFileUpload/package.json +1 -1
  210. package/dist/js/components/Nav/package.json +1 -1
  211. package/dist/js/components/NotificationBadge/package.json +1 -1
  212. package/dist/js/components/NotificationDrawer/package.json +1 -1
  213. package/dist/js/components/NumberInput/NumberInput.d.ts.map +1 -1
  214. package/dist/js/components/NumberInput/NumberInput.js +10 -7
  215. package/dist/js/components/NumberInput/NumberInput.js.map +1 -1
  216. package/dist/js/components/NumberInput/package.json +1 -1
  217. package/dist/js/components/OverflowMenu/package.json +1 -1
  218. package/dist/js/components/Page/package.json +1 -1
  219. package/dist/js/components/Pagination/package.json +1 -1
  220. package/dist/js/components/Panel/package.json +1 -1
  221. package/dist/js/components/Popover/package.json +1 -1
  222. package/dist/js/components/Progress/package.json +1 -1
  223. package/dist/js/components/ProgressStepper/package.json +1 -1
  224. package/dist/js/components/Radio/package.json +1 -1
  225. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  226. package/dist/js/components/SearchInput/SearchInput.js +14 -9
  227. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  228. package/dist/js/components/SearchInput/package.json +1 -1
  229. package/dist/js/components/Select/package.json +1 -1
  230. package/dist/js/components/Sidebar/package.json +1 -1
  231. package/dist/js/components/SimpleList/package.json +1 -1
  232. package/dist/js/components/Skeleton/package.json +1 -1
  233. package/dist/js/components/SkipToContent/package.json +1 -1
  234. package/dist/js/components/Slider/Slider.d.ts.map +1 -1
  235. package/dist/js/components/Slider/Slider.js +3 -4
  236. package/dist/js/components/Slider/Slider.js.map +1 -1
  237. package/dist/js/components/Slider/package.json +1 -1
  238. package/dist/js/components/Spinner/package.json +1 -1
  239. package/dist/js/components/Switch/package.json +1 -1
  240. package/dist/js/components/Tabs/package.json +1 -1
  241. package/dist/js/components/Text/package.json +1 -1
  242. package/dist/js/components/TextArea/package.json +1 -1
  243. package/dist/js/components/TextInput/package.json +1 -1
  244. package/dist/js/components/TextInputGroup/package.json +1 -1
  245. package/dist/js/components/Tile/package.json +1 -1
  246. package/dist/js/components/TimePicker/TimePicker.d.ts.map +1 -1
  247. package/dist/js/components/TimePicker/TimePicker.js +4 -3
  248. package/dist/js/components/TimePicker/TimePicker.js.map +1 -1
  249. package/dist/js/components/TimePicker/package.json +1 -1
  250. package/dist/js/components/Timestamp/package.json +1 -1
  251. package/dist/js/components/Title/package.json +1 -1
  252. package/dist/js/components/ToggleGroup/package.json +1 -1
  253. package/dist/js/components/Toolbar/package.json +1 -1
  254. package/dist/js/components/Tooltip/package.json +1 -1
  255. package/dist/js/components/TreeView/package.json +1 -1
  256. package/dist/js/components/Truncate/package.json +1 -1
  257. package/dist/js/components/Wizard/hooks/package.json +1 -1
  258. package/dist/js/components/Wizard/package.json +1 -1
  259. package/dist/js/components/package.json +1 -1
  260. package/dist/js/deprecated/components/ApplicationLauncher/package.json +1 -1
  261. package/dist/js/deprecated/components/ContextSelector/package.json +1 -1
  262. package/dist/js/deprecated/components/Dropdown/package.json +1 -1
  263. package/dist/js/deprecated/components/OptionsMenu/package.json +1 -1
  264. package/dist/js/deprecated/components/PageHeader/package.json +1 -1
  265. package/dist/js/deprecated/components/Select/package.json +1 -1
  266. package/dist/js/deprecated/components/Wizard/package.json +1 -1
  267. package/dist/js/deprecated/components/package.json +1 -1
  268. package/dist/js/deprecated/package.json +1 -1
  269. package/dist/js/helpers/Popper/thirdparty/popper-core/package.json +1 -1
  270. package/dist/js/helpers/package.json +1 -1
  271. package/dist/js/layouts/Bullseye/package.json +1 -1
  272. package/dist/js/layouts/Flex/package.json +1 -1
  273. package/dist/js/layouts/Gallery/package.json +1 -1
  274. package/dist/js/layouts/Grid/package.json +1 -1
  275. package/dist/js/layouts/Level/package.json +1 -1
  276. package/dist/js/layouts/Split/package.json +1 -1
  277. package/dist/js/layouts/Stack/package.json +1 -1
  278. package/dist/js/layouts/package.json +1 -1
  279. package/dist/js/next/components/package.json +1 -1
  280. package/dist/js/next/package.json +1 -1
  281. package/dist/js/package.json +1 -1
  282. package/dist/umd/react-core.min.js +2 -2
  283. package/package.json +2 -2
  284. package/src/components/Alert/examples/AlertGroupAsync.tsx +11 -6
  285. package/src/components/Alert/examples/AlertGroupMultipleDynamic.tsx +7 -4
  286. package/src/components/Alert/examples/AlertGroupSingularDynamic.tsx +17 -10
  287. package/src/components/Alert/examples/AlertGroupSingularDynamicOverflow.tsx +17 -10
  288. package/src/components/Alert/examples/AlertGroupToast.tsx +17 -10
  289. package/src/components/Alert/examples/AlertGroupToastOverflowCapture.tsx +17 -10
  290. package/src/components/CalendarMonth/CalendarMonth.tsx +61 -57
  291. package/src/components/DatePicker/DatePicker.tsx +27 -23
  292. package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +121 -97
  293. package/src/components/FileUpload/FileUploadField.tsx +32 -26
  294. package/src/components/FileUpload/__tests__/__snapshots__/FileUpload.test.tsx.snap +47 -35
  295. package/src/components/FileUpload/__tests__/__snapshots__/FileUploadField.test.tsx.snap +46 -34
  296. package/src/components/InputGroup/InputGroup.tsx +50 -14
  297. package/src/components/InputGroup/InputGroupItem.tsx +44 -0
  298. package/src/components/InputGroup/__tests__/InputGroup.test.tsx +25 -12
  299. package/src/components/InputGroup/examples/InputGroup.md +2 -1
  300. package/src/components/InputGroup/examples/InputGroupBasic.tsx +35 -16
  301. package/src/components/InputGroup/examples/InputGroupWithDropdown.tsx +33 -26
  302. package/src/components/InputGroup/examples/InputGroupWithPopover.tsx +54 -40
  303. package/src/components/InputGroup/examples/InputGroupWithSiblings.tsx +57 -22
  304. package/src/components/InputGroup/examples/InputGroupWithTextarea.tsx +9 -5
  305. package/src/components/InputGroup/index.ts +1 -0
  306. package/src/components/LoginPage/LoginForm.tsx +13 -9
  307. package/src/components/LoginPage/__tests__/__snapshots__/LoginForm.test.tsx.snap +39 -31
  308. package/src/components/NumberInput/NumberInput.tsx +42 -36
  309. package/src/components/NumberInput/__tests__/__snapshots__/NumberInput.test.tsx.snap +904 -748
  310. package/src/components/SearchInput/SearchInput.tsx +29 -25
  311. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +475 -423
  312. package/src/components/Slider/Slider.tsx +9 -6
  313. package/src/components/Slider/_tests_/__snapshots__/Slider.test.tsx.snap +44 -28
  314. package/src/components/TimePicker/TimePicker.tsx +15 -13
  315. package/src/demos/Button.md +1 -1
  316. package/src/demos/Card/Card.md +30 -41
  317. package/src/demos/Card/CardData.jsx +62 -0
  318. package/src/demos/ComposableMenu/examples/ComposableContextSelector.tsx +20 -15
  319. package/src/demos/DatePicker/examples/DateTimePickerInModal.tsx +15 -3
  320. package/src/demos/DateTimePicker.md +22 -23
  321. package/src/demos/PasswordGenerator.md +22 -17
  322. package/src/demos/PrimaryDetail.md +58 -53
  323. package/src/demos/examples/DateTimePicker/DateTimePicker.tsx +12 -9
  324. package/src/deprecated/components/ContextSelector/__tests__/__snapshots__/ContextSelector.test.tsx.snap +100 -84
@@ -12,34 +12,42 @@ exports[`With popover opened 1`] = `
12
12
  <div
13
13
  class="pf-v5-c-input-group"
14
14
  >
15
- <input
16
- aria-invalid="false"
17
- aria-label="Date picker"
18
- class="pf-v5-c-form-control"
19
- data-ouia-component-id="OUIA-Generated-TextInputBase-4"
20
- data-ouia-component-type="PF4/TextInput"
21
- data-ouia-safe="true"
22
- placeholder="YYYY-MM-DD"
23
- type="text"
24
- value=""
25
- />
26
- <button
27
- aria-label="Toggle date picker"
28
- class="pf-v5-c-button pf-m-control"
29
- type="button"
15
+ <div
16
+ class="pf-v5-c-input-group__item pf-m-fill"
17
+ >
18
+ <input
19
+ aria-invalid="false"
20
+ aria-label="Date picker"
21
+ 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
+ />
29
+ </div>
30
+ <div
31
+ class="pf-v5-c-input-group__item"
30
32
  >
31
- <svg
32
- aria-hidden="true"
33
- class="pf-v5-svg"
34
- fill="currentColor"
35
- role="img"
36
- viewBox="0 0 448 512"
33
+ <button
34
+ aria-label="Toggle date picker"
35
+ class="pf-v5-c-button pf-m-control"
36
+ type="button"
37
37
  >
38
- <path
39
- d="M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"
40
- />
41
- </svg>
42
- </button>
38
+ <svg
39
+ aria-hidden="true"
40
+ class="pf-v5-svg"
41
+ fill="currentColor"
42
+ role="img"
43
+ viewBox="0 0 448 512"
44
+ >
45
+ <path
46
+ d="M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"
47
+ />
48
+ </svg>
49
+ </button>
50
+ </div>
43
51
  </div>
44
52
  </div>
45
53
  <div
@@ -95,61 +103,69 @@ exports[`With popover opened 1`] = `
95
103
  class="pf-v5-c-input-group"
96
104
  >
97
105
  <div
98
- class="pf-v5-c-calendar-month__header-month"
106
+ class="pf-v5-c-input-group__item pf-m-fill"
99
107
  >
100
- <span
101
- hidden=""
102
- id="unique_id_mock"
108
+ <div
109
+ class="pf-v5-c-calendar-month__header-month"
103
110
  >
104
- Month
105
- </span>
106
- <div>
107
- <button
108
- aria-expanded="false"
109
- class="pf-v5-c-menu-toggle"
110
- style="width: 140px;"
111
- type="button"
111
+ <span
112
+ hidden=""
113
+ id="unique_id_mock"
112
114
  >
113
- <span
114
- class="pf-v5-c-menu-toggle__text"
115
- >
116
- December
117
- </span>
118
- <span
119
- class="pf-v5-c-menu-toggle__controls"
115
+ Month
116
+ </span>
117
+ <div>
118
+ <button
119
+ aria-expanded="false"
120
+ class="pf-v5-c-menu-toggle"
121
+ style="width: 140px;"
122
+ type="button"
120
123
  >
121
124
  <span
122
- class="pf-v5-c-menu-toggle__toggle-icon"
125
+ class="pf-v5-c-menu-toggle__text"
123
126
  >
124
- <svg
125
- aria-hidden="true"
126
- class="pf-v5-svg"
127
- fill="currentColor"
128
- role="img"
129
- viewBox="0 0 320 512"
127
+ December
128
+ </span>
129
+ <span
130
+ class="pf-v5-c-menu-toggle__controls"
131
+ >
132
+ <span
133
+ class="pf-v5-c-menu-toggle__toggle-icon"
130
134
  >
131
- <path
132
- 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"
133
- />
134
- </svg>
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>
135
147
  </span>
136
- </span>
137
- </button>
148
+ </button>
149
+ </div>
138
150
  </div>
139
151
  </div>
140
152
  <div
141
- class="pf-v5-c-calendar-month__header-year"
153
+ class="pf-v5-c-input-group__item"
142
154
  >
143
- <input
144
- aria-invalid="false"
145
- aria-label="Select year"
146
- class="pf-v5-c-form-control"
147
- data-ouia-component-id="OUIA-Generated-TextInputBase-5"
148
- data-ouia-component-type="PF4/TextInput"
149
- data-ouia-safe="true"
150
- type="number"
151
- value="1969"
152
- />
155
+ <div
156
+ class="pf-v5-c-calendar-month__header-year"
157
+ >
158
+ <input
159
+ aria-invalid="false"
160
+ aria-label="Select year"
161
+ 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
+ />
168
+ </div>
153
169
  </div>
154
170
  </div>
155
171
  <div
@@ -755,36 +771,44 @@ exports[`disabled date picker 1`] = `
755
771
  <div
756
772
  class="pf-v5-c-input-group"
757
773
  >
758
- <input
759
- aria-invalid="false"
760
- aria-label="disabled date picker"
761
- class="pf-v5-c-form-control"
762
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
763
- data-ouia-component-type="PF4/TextInput"
764
- data-ouia-safe="true"
765
- disabled=""
766
- placeholder="YYYY-MM-DD"
767
- type="text"
768
- value="2020-11-20"
769
- />
770
- <button
771
- aria-label="Toggle date picker"
772
- class="pf-v5-c-button pf-m-control"
773
- disabled=""
774
- type="button"
774
+ <div
775
+ class="pf-v5-c-input-group__item pf-m-fill"
775
776
  >
776
- <svg
777
- aria-hidden="true"
778
- class="pf-v5-svg"
779
- fill="currentColor"
780
- role="img"
781
- viewBox="0 0 448 512"
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
+ />
789
+ </div>
790
+ <div
791
+ class="pf-v5-c-input-group__item"
792
+ >
793
+ <button
794
+ aria-label="Toggle date picker"
795
+ class="pf-v5-c-button pf-m-control"
796
+ disabled=""
797
+ type="button"
782
798
  >
783
- <path
784
- d="M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"
785
- />
786
- </svg>
787
- </button>
799
+ <svg
800
+ aria-hidden="true"
801
+ class="pf-v5-svg"
802
+ fill="currentColor"
803
+ role="img"
804
+ viewBox="0 0 448 512"
805
+ >
806
+ <path
807
+ d="M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"
808
+ />
809
+ </svg>
810
+ </button>
811
+ </div>
788
812
  </div>
789
813
  </div>
790
814
  </div>
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import styles from '@patternfly/react-styles/css/components/FileUpload/file-upload';
3
3
  import { css } from '@patternfly/react-styles';
4
- import { InputGroup } from '../InputGroup';
4
+ import { InputGroup, InputGroupItem } from '../InputGroup';
5
5
  import { TextInput } from '../TextInput';
6
6
  import { Button, ButtonVariant } from '../Button';
7
7
  import { TextArea, TextAreResizeOrientation } from '../TextArea';
@@ -130,31 +130,37 @@ export const FileUploadField: React.FunctionComponent<FileUploadFieldProps> = ({
130
130
  >
131
131
  <div className={styles.fileUploadFileSelect}>
132
132
  <InputGroup>
133
- <TextInput
134
- isReadOnly // Always read-only regardless of isReadOnly prop (which is just for the TextArea)
135
- isDisabled={isDisabled}
136
- id={`${id}-filename`}
137
- name={`${id}-filename`}
138
- aria-label={filenameAriaLabel}
139
- placeholder={filenamePlaceholder}
140
- aria-describedby={`${id}-browse-button`}
141
- value={filename}
142
- />
143
- <Button
144
- id={`${id}-browse-button`}
145
- variant={ButtonVariant.control}
146
- onClick={onBrowseButtonClick}
147
- isDisabled={isDisabled}
148
- >
149
- {browseButtonText}
150
- </Button>
151
- <Button
152
- variant={ButtonVariant.control}
153
- isDisabled={isDisabled || isClearButtonDisabled}
154
- onClick={onClearButtonClick}
155
- >
156
- {clearButtonText}
157
- </Button>
133
+ <InputGroupItem isFill>
134
+ <TextInput
135
+ isReadOnly // Always read-only regardless of isReadOnly prop (which is just for the TextArea)
136
+ isDisabled={isDisabled}
137
+ id={`${id}-filename`}
138
+ name={`${id}-filename`}
139
+ aria-label={filenameAriaLabel}
140
+ placeholder={filenamePlaceholder}
141
+ aria-describedby={`${id}-browse-button`}
142
+ value={filename}
143
+ />
144
+ </InputGroupItem>
145
+ <InputGroupItem>
146
+ <Button
147
+ id={`${id}-browse-button`}
148
+ variant={ButtonVariant.control}
149
+ onClick={onBrowseButtonClick}
150
+ isDisabled={isDisabled}
151
+ >
152
+ {browseButtonText}
153
+ </Button>
154
+ </InputGroupItem>
155
+ <InputGroupItem>
156
+ <Button
157
+ variant={ButtonVariant.control}
158
+ isDisabled={isDisabled || isClearButtonDisabled}
159
+ onClick={onClearButtonClick}
160
+ >
161
+ {clearButtonText}
162
+ </Button>
163
+ </InputGroupItem>
158
164
  </InputGroup>
159
165
  </div>
160
166
  <div className={styles.fileUploadFileDetails}>
@@ -12,43 +12,55 @@ exports[`simple fileupload 1`] = `
12
12
  <div
13
13
  class="pf-v5-c-input-group"
14
14
  >
15
- <input
16
- aria-describedby="simple-text-file-browse-button"
17
- aria-invalid="false"
18
- aria-label="Drag a file here or browse to upload"
19
- class="pf-v5-c-form-control"
20
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
21
- data-ouia-component-type="PF4/TextInput"
22
- data-ouia-safe="true"
23
- id="simple-text-file-filename"
24
- name="simple-text-file-filename"
25
- placeholder="Drag a file here or browse to upload"
26
- readonly=""
27
- type="text"
28
- value=""
29
- />
30
- <button
31
- aria-disabled="false"
32
- class="pf-v5-c-button pf-m-control"
33
- data-ouia-component-id="OUIA-Generated-Button-control-1"
34
- data-ouia-component-type="PF4/Button"
35
- data-ouia-safe="true"
36
- id="simple-text-file-browse-button"
37
- type="button"
15
+ <div
16
+ class="pf-v5-c-input-group__item pf-m-fill"
38
17
  >
39
- Browse...
40
- </button>
41
- <button
42
- aria-disabled="true"
43
- class="pf-v5-c-button pf-m-control pf-m-disabled"
44
- data-ouia-component-id="OUIA-Generated-Button-control-2"
45
- data-ouia-component-type="PF4/Button"
46
- data-ouia-safe="true"
47
- disabled=""
48
- type="button"
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
+ />
33
+ </div>
34
+ <div
35
+ class="pf-v5-c-input-group__item"
49
36
  >
50
- Clear
51
- </button>
37
+ <button
38
+ aria-disabled="false"
39
+ class="pf-v5-c-button pf-m-control"
40
+ data-ouia-component-id="OUIA-Generated-Button-control-1"
41
+ data-ouia-component-type="PF4/Button"
42
+ data-ouia-safe="true"
43
+ id="simple-text-file-browse-button"
44
+ type="button"
45
+ >
46
+ Browse...
47
+ </button>
48
+ </div>
49
+ <div
50
+ class="pf-v5-c-input-group__item"
51
+ >
52
+ <button
53
+ aria-disabled="true"
54
+ class="pf-v5-c-button pf-m-control pf-m-disabled"
55
+ data-ouia-component-id="OUIA-Generated-Button-control-2"
56
+ data-ouia-component-type="PF4/Button"
57
+ data-ouia-safe="true"
58
+ disabled=""
59
+ type="button"
60
+ >
61
+ Clear
62
+ </button>
63
+ </div>
52
64
  </div>
53
65
  </div>
54
66
  <div
@@ -11,42 +11,54 @@ exports[`simple fileuploadfield 1`] = `
11
11
  <div
12
12
  class="pf-v5-c-input-group"
13
13
  >
14
- <input
15
- aria-describedby="custom-file-upload-browse-button"
16
- aria-invalid="false"
17
- aria-label="Do something custom with this!"
18
- class="pf-v5-c-form-control"
19
- data-ouia-component-id="OUIA-Generated-TextInputBase-1"
20
- data-ouia-component-type="PF4/TextInput"
21
- data-ouia-safe="true"
22
- id="custom-file-upload-filename"
23
- name="custom-file-upload-filename"
24
- placeholder="Do something custom with this!"
25
- readonly=""
26
- type="text"
27
- value=""
28
- />
29
- <button
30
- aria-disabled="false"
31
- class="pf-v5-c-button pf-m-control"
32
- data-ouia-component-id="OUIA-Generated-Button-control-1"
33
- data-ouia-component-type="PF4/Button"
34
- data-ouia-safe="true"
35
- id="custom-file-upload-browse-button"
36
- type="button"
14
+ <div
15
+ class="pf-v5-c-input-group__item pf-m-fill"
37
16
  >
38
- Browse...
39
- </button>
40
- <button
41
- aria-disabled="false"
42
- class="pf-v5-c-button pf-m-control"
43
- data-ouia-component-id="OUIA-Generated-Button-control-2"
44
- data-ouia-component-type="PF4/Button"
45
- data-ouia-safe="true"
46
- type="button"
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
+ />
32
+ </div>
33
+ <div
34
+ class="pf-v5-c-input-group__item"
47
35
  >
48
- Clear
49
- </button>
36
+ <button
37
+ aria-disabled="false"
38
+ class="pf-v5-c-button pf-m-control"
39
+ data-ouia-component-id="OUIA-Generated-Button-control-1"
40
+ data-ouia-component-type="PF4/Button"
41
+ data-ouia-safe="true"
42
+ id="custom-file-upload-browse-button"
43
+ type="button"
44
+ >
45
+ Browse...
46
+ </button>
47
+ </div>
48
+ <div
49
+ class="pf-v5-c-input-group__item"
50
+ >
51
+ <button
52
+ aria-disabled="false"
53
+ class="pf-v5-c-button pf-m-control"
54
+ data-ouia-component-id="OUIA-Generated-Button-control-2"
55
+ data-ouia-component-type="PF4/Button"
56
+ data-ouia-safe="true"
57
+ type="button"
58
+ >
59
+ Clear
60
+ </button>
61
+ </div>
50
62
  </div>
51
63
  </div>
52
64
  <div
@@ -20,25 +20,61 @@ export const InputGroupBase: React.FunctionComponent<InputGroupProps> = ({
20
20
  innerRef,
21
21
  ...props
22
22
  }: InputGroupProps) => {
23
- const formCtrls = [FormSelect, TextArea, TextInput].map((comp) => comp.displayName);
24
- const idItem = React.Children.toArray(children).find(
25
- (child: any) => !formCtrls.includes(child.type.displayName) && child.props.id
26
- ) as React.ReactElement<{ id: string }>;
27
-
23
+ const getIdItem = () => {
24
+ const getChildId = (_children: any) =>
25
+ React.Children.toArray(_children).find(
26
+ (_child: any) => !formCtrls.includes(_child?.type?.displayName) && _child?.props?.id
27
+ );
28
+ let childId = getChildId(children);
29
+ if (childId) {
30
+ return childId;
31
+ }
32
+ React.Children.toArray(children).find((child: any) => {
33
+ const _childId = getChildId(child.props.children);
34
+ if (_childId) {
35
+ childId = _childId;
36
+ return true;
37
+ }
38
+ });
39
+ return childId;
40
+ };
41
+ const formCtrls = [FormSelect, TextArea, TextInput].map(comp => comp.displayName);
42
+ const idItem = getIdItem() as React.ReactElement<{ id: string }>;
28
43
  const ref = React.useRef(null);
29
44
  const inputGroupRef = innerRef || ref;
30
45
 
46
+ const childrenWithId = React.Children.map(children, (child: any) => {
47
+ if (child?.type.displayName === 'InputGroupItem') {
48
+ const newChildren = React.Children.map(child.props.children, _child => {
49
+ if (!_child.props) {
50
+ return _child;
51
+ }
52
+ if (_child.props['aria-describedby']) {
53
+ return _child;
54
+ }
55
+ if (!formCtrls.includes(_child.type.displayName)) {
56
+ return _child;
57
+ }
58
+ return React.cloneElement(_child, {
59
+ 'aria-describedby': _child.props['aria-describedby'] === '' ? undefined : idItem?.props?.id
60
+ });
61
+ });
62
+ return React.cloneElement(child, {}, newChildren);
63
+ }
64
+
65
+ if (child?.props['aria-describedby']) {
66
+ return child;
67
+ }
68
+ if (!formCtrls.includes(child?.type.displayName)) {
69
+ return child;
70
+ }
71
+ return React.cloneElement(child, {
72
+ 'aria-describedby': child.props['aria-describedby'] === '' ? undefined : idItem?.props?.id
73
+ });
74
+ });
31
75
  return (
32
76
  <div ref={inputGroupRef} className={css(styles.inputGroup, className)} {...props}>
33
- {idItem
34
- ? React.Children.map(children, (child: any) =>
35
- !formCtrls.includes(child.type.displayName) || child.props['aria-describedby']
36
- ? child
37
- : React.cloneElement(child, {
38
- 'aria-describedby': child.props['aria-describedby'] === '' ? undefined : idItem.props.id
39
- })
40
- )
41
- : children}
77
+ {idItem ? childrenWithId : children}
42
78
  </div>
43
79
  );
44
80
  };
@@ -0,0 +1,44 @@
1
+ import * as React from 'react';
2
+ import styles from '@patternfly/react-styles/css/components/InputGroup/input-group';
3
+ import { css } from '@patternfly/react-styles';
4
+
5
+ export interface InputGroupItemProps extends React.HTMLProps<HTMLDivElement> {
6
+ /** Additional classes added to the input group item. */
7
+ className?: string;
8
+ /** Content rendered inside the input group item. */
9
+ children: React.ReactNode;
10
+ /** Enables box styling to the input group item */
11
+ isBox?: boolean;
12
+ /** Flag to indicate if the input group item is plain. */
13
+ isPlain?: boolean;
14
+ /** Flag to indicate if the input group item should fill the available horizontal space */
15
+ isFill?: boolean;
16
+ /** Flag to indicate if the input group item is disabled. */
17
+ isDisabled?: boolean;
18
+
19
+ }
20
+
21
+ export const InputGroupItem: React.FunctionComponent<InputGroupItemProps> = ({
22
+ className = '',
23
+ children,
24
+ isFill = false,
25
+ isBox = false,
26
+ isPlain,
27
+ isDisabled,
28
+ ...props
29
+ }: InputGroupItemProps) => (
30
+ <div
31
+ className={css(
32
+ styles.inputGroupItem,
33
+ isFill && styles.modifiers.fill,
34
+ isBox && styles.modifiers.box,
35
+ isPlain && styles.modifiers.plain,
36
+ isDisabled && styles.modifiers.disabled,
37
+ className
38
+ )}
39
+ {...props}
40
+ >
41
+ {children}
42
+ </div>
43
+ );
44
+ InputGroupItem.displayName = 'InputGroupItem';