@patternfly/react-core 6.0.0 → 6.1.0-prerelease.10

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 (304) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Content/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/TimePicker/package.json +1 -1
  74. package/dist/dynamic/components/Timestamp/package.json +1 -1
  75. package/dist/dynamic/components/Title/package.json +1 -1
  76. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  77. package/dist/dynamic/components/Toolbar/package.json +1 -1
  78. package/dist/dynamic/components/Tooltip/package.json +1 -1
  79. package/dist/dynamic/components/TreeView/package.json +1 -1
  80. package/dist/dynamic/components/Truncate/package.json +1 -1
  81. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/package.json +1 -1
  83. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/dynamic-modules.json +1 -0
  115. package/dist/esm/components/Dropdown/Dropdown.d.ts +2 -0
  116. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  117. package/dist/esm/components/Dropdown/Dropdown.js +12 -3
  118. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  119. package/dist/esm/components/Menu/MenuContainer.d.ts +2 -0
  120. package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
  121. package/dist/esm/components/Menu/MenuContainer.js +21 -4
  122. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  123. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts +1 -1
  124. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
  125. package/dist/esm/components/Modal/Modal.d.ts +2 -2
  126. package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
  127. package/dist/esm/components/Modal/Modal.js +13 -20
  128. package/dist/esm/components/Modal/Modal.js.map +1 -1
  129. package/dist/esm/components/Modal/ModalContent.d.ts +2 -0
  130. package/dist/esm/components/Modal/ModalContent.d.ts.map +1 -1
  131. package/dist/esm/components/Modal/ModalContent.js +2 -2
  132. package/dist/esm/components/Modal/ModalContent.js.map +1 -1
  133. package/dist/esm/components/Select/Select.d.ts +4 -0
  134. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  135. package/dist/esm/components/Select/Select.js +12 -3
  136. package/dist/esm/components/Select/Select.js.map +1 -1
  137. package/dist/esm/components/Toolbar/ToolbarFilter.d.ts.map +1 -1
  138. package/dist/esm/components/Toolbar/ToolbarFilter.js +4 -2
  139. package/dist/esm/components/Toolbar/ToolbarFilter.js.map +1 -1
  140. package/dist/esm/demos/DashboardHeader.d.ts.map +1 -1
  141. package/dist/esm/demos/DashboardHeader.js +2 -4
  142. package/dist/esm/demos/DashboardHeader.js.map +1 -1
  143. package/dist/esm/deprecated/components/Modal/Modal.d.ts +2 -2
  144. package/dist/esm/deprecated/components/Modal/Modal.d.ts.map +1 -1
  145. package/dist/esm/deprecated/components/Modal/Modal.js +13 -20
  146. package/dist/esm/deprecated/components/Modal/Modal.js.map +1 -1
  147. package/dist/esm/deprecated/components/Modal/ModalContent.d.ts +2 -0
  148. package/dist/esm/deprecated/components/Modal/ModalContent.d.ts.map +1 -1
  149. package/dist/esm/deprecated/components/Modal/ModalContent.js +2 -2
  150. package/dist/esm/deprecated/components/Modal/ModalContent.js.map +1 -1
  151. package/dist/esm/helpers/KeyboardHandler.d.ts +7 -0
  152. package/dist/esm/helpers/KeyboardHandler.d.ts.map +1 -1
  153. package/dist/esm/helpers/KeyboardHandler.js +25 -0
  154. package/dist/esm/helpers/KeyboardHandler.js.map +1 -1
  155. package/dist/esm/layouts/Split/Split.d.ts +4 -4
  156. package/dist/esm/layouts/Split/Split.d.ts.map +1 -1
  157. package/dist/esm/layouts/Split/SplitItem.d.ts +5 -3
  158. package/dist/esm/layouts/Split/SplitItem.d.ts.map +1 -1
  159. package/dist/esm/layouts/Split/SplitItem.js +3 -2
  160. package/dist/esm/layouts/Split/SplitItem.js.map +1 -1
  161. package/dist/esm/layouts/Stack/Stack.d.ts +3 -3
  162. package/dist/esm/layouts/Stack/Stack.d.ts.map +1 -1
  163. package/dist/esm/layouts/Stack/StackItem.d.ts +5 -3
  164. package/dist/esm/layouts/Stack/StackItem.d.ts.map +1 -1
  165. package/dist/esm/layouts/Stack/StackItem.js +3 -2
  166. package/dist/esm/layouts/Stack/StackItem.js.map +1 -1
  167. package/dist/js/components/Dropdown/Dropdown.d.ts +2 -0
  168. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  169. package/dist/js/components/Dropdown/Dropdown.js +11 -2
  170. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  171. package/dist/js/components/Menu/MenuContainer.d.ts +2 -0
  172. package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
  173. package/dist/js/components/Menu/MenuContainer.js +22 -5
  174. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  175. package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts +1 -1
  176. package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
  177. package/dist/js/components/Modal/Modal.d.ts +2 -2
  178. package/dist/js/components/Modal/Modal.d.ts.map +1 -1
  179. package/dist/js/components/Modal/Modal.js +13 -20
  180. package/dist/js/components/Modal/Modal.js.map +1 -1
  181. package/dist/js/components/Modal/ModalContent.d.ts +2 -0
  182. package/dist/js/components/Modal/ModalContent.d.ts.map +1 -1
  183. package/dist/js/components/Modal/ModalContent.js +2 -2
  184. package/dist/js/components/Modal/ModalContent.js.map +1 -1
  185. package/dist/js/components/Select/Select.d.ts +4 -0
  186. package/dist/js/components/Select/Select.d.ts.map +1 -1
  187. package/dist/js/components/Select/Select.js +11 -2
  188. package/dist/js/components/Select/Select.js.map +1 -1
  189. package/dist/js/components/Toolbar/ToolbarFilter.d.ts.map +1 -1
  190. package/dist/js/components/Toolbar/ToolbarFilter.js +4 -2
  191. package/dist/js/components/Toolbar/ToolbarFilter.js.map +1 -1
  192. package/dist/js/demos/DashboardHeader.d.ts.map +1 -1
  193. package/dist/js/demos/DashboardHeader.js +2 -4
  194. package/dist/js/demos/DashboardHeader.js.map +1 -1
  195. package/dist/js/deprecated/components/Modal/Modal.d.ts +2 -2
  196. package/dist/js/deprecated/components/Modal/Modal.d.ts.map +1 -1
  197. package/dist/js/deprecated/components/Modal/Modal.js +13 -20
  198. package/dist/js/deprecated/components/Modal/Modal.js.map +1 -1
  199. package/dist/js/deprecated/components/Modal/ModalContent.d.ts +2 -0
  200. package/dist/js/deprecated/components/Modal/ModalContent.d.ts.map +1 -1
  201. package/dist/js/deprecated/components/Modal/ModalContent.js +2 -2
  202. package/dist/js/deprecated/components/Modal/ModalContent.js.map +1 -1
  203. package/dist/js/helpers/KeyboardHandler.d.ts +7 -0
  204. package/dist/js/helpers/KeyboardHandler.d.ts.map +1 -1
  205. package/dist/js/helpers/KeyboardHandler.js +27 -1
  206. package/dist/js/helpers/KeyboardHandler.js.map +1 -1
  207. package/dist/js/layouts/Split/Split.d.ts +4 -4
  208. package/dist/js/layouts/Split/Split.d.ts.map +1 -1
  209. package/dist/js/layouts/Split/SplitItem.d.ts +5 -3
  210. package/dist/js/layouts/Split/SplitItem.d.ts.map +1 -1
  211. package/dist/js/layouts/Split/SplitItem.js +3 -2
  212. package/dist/js/layouts/Split/SplitItem.js.map +1 -1
  213. package/dist/js/layouts/Stack/Stack.d.ts +3 -3
  214. package/dist/js/layouts/Stack/Stack.d.ts.map +1 -1
  215. package/dist/js/layouts/Stack/StackItem.d.ts +5 -3
  216. package/dist/js/layouts/Stack/StackItem.d.ts.map +1 -1
  217. package/dist/js/layouts/Stack/StackItem.js +3 -2
  218. package/dist/js/layouts/Stack/StackItem.js.map +1 -1
  219. package/dist/umd/assets/{output-DPVTymX-.css → output-K5btXEZY.css} +11135 -11097
  220. package/dist/umd/react-core.min.js +4 -4
  221. package/helpers/package.json +1 -1
  222. package/layouts/package.json +1 -1
  223. package/next/package.json +1 -1
  224. package/package.json +9 -9
  225. package/src/components/ActionList/examples/ActionListSingleGroup.tsx +2 -3
  226. package/src/components/Card/examples/CardExpandable.tsx +2 -3
  227. package/src/components/Card/examples/CardExpandableWithIcon.tsx +2 -3
  228. package/src/components/Card/examples/CardHeaderInCardHead.tsx +2 -3
  229. package/src/components/Card/examples/CardOnlyActionsInCardHead.tsx +2 -3
  230. package/src/components/Card/examples/CardWithImageAndActions.tsx +2 -3
  231. package/src/components/Checkbox/examples/CheckboxReversed.tsx +1 -1
  232. package/src/components/DataList/examples/DataList.md +16 -4
  233. package/src/components/DataList/examples/DataListActions.tsx +2 -3
  234. package/src/components/DataList/examples/DataListCheckboxes.tsx +6 -9
  235. package/src/components/DataList/examples/DataListClickableRows.tsx +4 -6
  236. package/src/components/DataList/examples/DataListExpandable.tsx +6 -9
  237. package/src/components/DataList/examples/DataListMixedExpandable.tsx +6 -9
  238. package/src/components/DataList/examples/DataListWidthModifiers.tsx +4 -6
  239. package/src/components/Dropdown/Dropdown.tsx +13 -1
  240. package/src/components/Dropdown/examples/DropdownWithKebabToggle.tsx +2 -3
  241. package/src/components/DualListSelector/examples/DualListSelector.md +16 -14
  242. package/src/components/DualListSelector/examples/DualListSelectorComplexOptionsActions.tsx +4 -6
  243. package/src/components/DualListSelector/examples/DualListSelectorTree.tsx +33 -32
  244. package/src/components/FileUpload/__tests__/__snapshots__/FileUpload.test.tsx.snap +1 -1
  245. package/src/components/Hint/examples/HintBasicWithTitle.tsx +2 -3
  246. package/src/components/Hint/examples/HintBasicWithoutTitle.tsx +2 -3
  247. package/src/components/Label/examples/LabelGroupEditableAddModal.tsx +2 -2
  248. package/src/components/Menu/MenuContainer.tsx +24 -3
  249. package/src/components/MenuToggle/MenuToggleCheckbox.tsx +1 -1
  250. package/src/components/MenuToggle/examples/MenuToggle.md +4 -16
  251. package/src/components/Modal/Modal.tsx +13 -18
  252. package/src/components/Modal/ModalContent.tsx +4 -1
  253. package/src/components/Modal/__tests__/Modal.test.tsx +45 -0
  254. package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUpload.test.tsx.snap +3 -3
  255. package/src/components/OverflowMenu/examples/OverflowMenuBreakpointOnContainer.tsx +2 -3
  256. package/src/components/OverflowMenu/examples/OverflowMenuGroupTypes.tsx +2 -3
  257. package/src/components/OverflowMenu/examples/OverflowMenuMultiGroup.tsx +2 -3
  258. package/src/components/OverflowMenu/examples/OverflowMenuPersistent.tsx +2 -3
  259. package/src/components/OverflowMenu/examples/OverflowMenuSimple.tsx +2 -3
  260. package/src/components/Select/Select.tsx +16 -1
  261. package/src/components/Select/examples/SelectMultiTypeahead.tsx +1 -1
  262. package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +1 -1
  263. package/src/components/Select/examples/SelectMultiTypeaheadCreatable.tsx +1 -1
  264. package/src/components/Select/examples/SelectTypeahead.tsx +1 -1
  265. package/src/components/Select/examples/SelectTypeaheadCreatable.tsx +1 -1
  266. package/src/components/Toolbar/ToolbarFilter.tsx +2 -1
  267. package/src/components/Toolbar/examples/ToolbarStacked.tsx +2 -3
  268. package/src/components/Toolbar/examples/ToolbarWithFilters.tsx +2 -3
  269. package/src/components/TreeView/examples/TreeViewWithActionItems.tsx +2 -3
  270. package/src/demos/CardView/examples/CardView.tsx +4 -6
  271. package/src/demos/CustomMenus/examples/ApplicationLauncherDemo.tsx +2 -3
  272. package/src/demos/DashboardHeader.tsx +4 -6
  273. package/src/demos/DataList/examples/DataListBasic.tsx +1 -3
  274. package/src/demos/DataList/examples/DataListExpandableControlInToolbar.tsx +7 -10
  275. package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +12 -18
  276. package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +20 -30
  277. package/src/demos/RTL/examples/PaginatedTable.jsx +4 -6
  278. package/src/demos/RTL/examples/PaginatedTable.tsx +4 -6
  279. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +4 -6
  280. package/src/demos/examples/Card/CardHorizontalGrid.tsx +2 -3
  281. package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +4 -6
  282. package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +6 -9
  283. package/src/demos/examples/Nav/NavFlyout.tsx +4 -6
  284. package/src/demos/examples/Nav/NavHorizontal.tsx +4 -6
  285. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +4 -6
  286. package/src/demos/examples/Nav/NavManual.tsx +4 -6
  287. package/src/demos/examples/Page/PageContextSelector.tsx +4 -6
  288. package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +4 -6
  289. package/src/demos/examples/Page/PageStickySectionGroup.tsx +4 -6
  290. package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +4 -6
  291. package/src/demos/examples/PrimaryDetail/PrimaryDetailCardView.tsx +4 -6
  292. package/src/demos/examples/Tabs/TabsAndTable.tsx +2 -3
  293. package/src/deprecated/components/Modal/Modal.tsx +13 -18
  294. package/src/deprecated/components/Modal/ModalContent.tsx +4 -1
  295. package/src/deprecated/components/Modal/__tests__/Modal.test.tsx +28 -0
  296. package/src/helpers/KeyboardHandler.tsx +27 -0
  297. package/src/layouts/Split/Split.tsx +4 -4
  298. package/src/layouts/Split/SplitItem.tsx +14 -8
  299. package/src/layouts/Split/__tests__/Split.test.tsx +18 -0
  300. package/src/layouts/Split/__tests__/__snapshots__/Split.test.tsx.snap +28 -0
  301. package/src/layouts/Stack/Stack.tsx +3 -3
  302. package/src/layouts/Stack/StackItem.tsx +14 -8
  303. package/src/layouts/Stack/__tests__/Stack.test.tsx +20 -2
  304. package/src/layouts/Stack/__tests__/__snapshots__/Stack.test.tsx.snap +30 -2
@@ -87,7 +87,7 @@ exports[`simple fileupload 1`] = `
87
87
  </span>
88
88
  </div>
89
89
  <input
90
- style="display: none;"
90
+ style="border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: 0px -1px -1px 0px; overflow: hidden; padding: 0px; position: absolute; width: 1px; white-space: nowrap;"
91
91
  tabindex="-1"
92
92
  type="file"
93
93
  />
@@ -37,9 +37,8 @@ export const HintBasicWithTitle: React.FunctionComponent = () => {
37
37
  variant="plain"
38
38
  onClick={onToggle}
39
39
  isExpanded={isOpen}
40
- >
41
- <EllipsisVIcon />
42
- </MenuToggle>
40
+ icon={<EllipsisVIcon />}
41
+ />
43
42
  )}
44
43
  >
45
44
  <DropdownList>
@@ -36,9 +36,8 @@ export const HintBasicWithoutTitle: React.FunctionComponent = () => {
36
36
  variant="plain"
37
37
  onClick={onToggle}
38
38
  isExpanded={isOpen}
39
- >
40
- <EllipsisVIcon />
41
- </MenuToggle>
39
+ icon={<EllipsisVIcon />}
40
+ />
42
41
  )}
43
42
  >
44
43
  <DropdownList>
@@ -200,8 +200,8 @@ export const LabelGroupEditableAddModal: React.FunctionComponent = () => {
200
200
  };
201
201
 
202
202
  const iconToggle = (
203
- <MenuToggle ref={iconToggleRef} onClick={onIconToggleClick} isExpanded={isIconOpen}>
204
- {icon || 'Select'}
203
+ <MenuToggle ref={iconToggleRef} onClick={onIconToggleClick} isExpanded={isIconOpen} icon={icon}>
204
+ {icon ? '' : 'Select'}
205
205
  </MenuToggle>
206
206
  );
207
207
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Popper } from '../../helpers/Popper/Popper';
2
+ import { onToggleArrowKeydownDefault, Popper } from '../../helpers';
3
3
 
4
4
  export interface MenuPopperProps {
5
5
  /** Vertical direction of the popper. If enableFlip is set to true, this will set the initial direction before the popper flips. */
@@ -17,6 +17,7 @@ export interface MenuPopperProps {
17
17
  /** Flag to prevent the popper from overflowing its container and becoming partially obscured. */
18
18
  preventOverflow?: boolean;
19
19
  }
20
+
20
21
  export interface MenuContainerProps {
21
22
  /** Menu to be rendered */
22
23
  menu: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -33,6 +34,8 @@ export interface MenuContainerProps {
33
34
  onOpenChange?: (isOpen: boolean) => void;
34
35
  /** Keys that trigger onOpenChange, defaults to tab and escape. It is highly recommended to include Escape in the array, while Tab may be omitted if the menu contains non-menu items that are focusable. */
35
36
  onOpenChangeKeys?: string[];
37
+ /** Callback to override the toggle keydown behavior. By default, when the toggle has focus and the menu is open, pressing the up/down arrow keys will focus a valid non-disabled menu item - the first item for the down arrow key and last item for the up arrow key. */
38
+ onToggleKeydown?: (event: KeyboardEvent) => void;
36
39
  /** z-index of the dropdown menu */
37
40
  zIndex?: number;
38
41
  /** Additional properties to pass to the Popper */
@@ -55,10 +58,11 @@ export const MenuContainer: React.FunctionComponent<MenuContainerProps> = ({
55
58
  toggle,
56
59
  toggleRef,
57
60
  onOpenChange,
61
+ onToggleKeydown,
58
62
  zIndex = 9999,
59
63
  popperProps,
60
64
  onOpenChangeKeys = ['Escape', 'Tab'],
61
- shouldFocusFirstItemOnOpen = true,
65
+ shouldFocusFirstItemOnOpen = false,
62
66
  shouldPreventScrollOnItemFocus = true,
63
67
  focusTimeoutDelay = 0
64
68
  }: MenuContainerProps) => {
@@ -90,6 +94,14 @@ export const MenuContainer: React.FunctionComponent<MenuContainerProps> = ({
90
94
  toggleRef.current?.focus();
91
95
  }
92
96
  }
97
+
98
+ if (toggleRef.current?.contains(event.target as Node)) {
99
+ if (onToggleKeydown) {
100
+ onToggleKeydown(event);
101
+ } else if (isOpen) {
102
+ onToggleArrowKeydownDefault(event, menuRef);
103
+ }
104
+ }
93
105
  };
94
106
 
95
107
  const handleClick = (event: MouseEvent) => {
@@ -108,7 +120,16 @@ export const MenuContainer: React.FunctionComponent<MenuContainerProps> = ({
108
120
  window.removeEventListener('keydown', handleMenuKeys);
109
121
  window.removeEventListener('click', handleClick);
110
122
  };
111
- }, [focusTimeoutDelay, isOpen, menuRef, onOpenChange, onOpenChangeKeys, shouldPreventScrollOnItemFocus, toggleRef]);
123
+ }, [
124
+ focusTimeoutDelay,
125
+ isOpen,
126
+ menuRef,
127
+ onOpenChange,
128
+ onOpenChangeKeys,
129
+ onToggleKeydown,
130
+ shouldPreventScrollOnItemFocus,
131
+ toggleRef
132
+ ]);
112
133
 
113
134
  return (
114
135
  <Popper
@@ -20,7 +20,7 @@ export interface MenuToggleCheckboxProps
20
20
  /** Flag to set the default checked value of the checkbox when it is uncontrolled by React state.
21
21
  * To make the checkbox controlled instead use the isChecked prop, but do not use both.
22
22
  */
23
- defaultChecked?: boolean | null;
23
+ defaultChecked?: boolean;
24
24
  /** A callback for when the checkbox selection changes */
25
25
  onChange?: (checked: boolean, event: React.FormEvent<HTMLInputElement>) => void;
26
26
  /** Element to be rendered inside the <span> */
@@ -81,36 +81,24 @@ For most basic icons, it is recommended to wrap it inside our [icon component](/
81
81
 
82
82
  ```ts
83
83
  import React from 'react';
84
- import { MenuToggle, Icon } from '@patternfly/react-core';
84
+ import { MenuToggle } from '@patternfly/react-core';
85
85
  import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
86
86
 
87
87
  <React.Fragment>
88
88
  <MenuToggle
89
- icon={
90
- <Icon>
91
- <CogIcon />
92
- </Icon>
93
- }
89
+ icon={<CogIcon />}
94
90
  variant="primary"
95
91
  >
96
92
  Icon
97
93
  </MenuToggle>{' '}
98
94
  <MenuToggle
99
- icon={
100
- <Icon>
101
- <CogIcon />
102
- </Icon>
103
- }
95
+ icon={<CogIcon />}
104
96
  variant="secondary"
105
97
  >
106
98
  Icon
107
99
  </MenuToggle>{' '}
108
100
  <MenuToggle
109
- icon={
110
- <Icon>
111
- <CogIcon />
112
- </Icon>
113
- }
101
+ icon={<CogIcon />}
114
102
  variant="secondary"
115
103
  isDisabled
116
104
  >
@@ -60,7 +60,6 @@ export enum ModalVariant {
60
60
  }
61
61
 
62
62
  interface ModalState {
63
- container: HTMLElement;
64
63
  ouiaStateId: string;
65
64
  }
66
65
 
@@ -68,6 +67,7 @@ class Modal extends React.Component<ModalProps, ModalState> {
68
67
  static displayName = 'Modal';
69
68
  static currentId = 0;
70
69
  boxId = '';
70
+ backdropId = '';
71
71
 
72
72
  static defaultProps: PickOptional<ModalProps> = {
73
73
  isOpen: false,
@@ -80,10 +80,11 @@ class Modal extends React.Component<ModalProps, ModalState> {
80
80
  constructor(props: ModalProps) {
81
81
  super(props);
82
82
  const boxIdNum = Modal.currentId++;
83
+ const backdropId = boxIdNum + 1;
83
84
  this.boxId = props.id || `pf-modal-part-${boxIdNum}`;
85
+ this.backdropId = `pf-modal-part-${backdropId}`;
84
86
 
85
87
  this.state = {
86
- container: undefined,
87
88
  ouiaStateId: getDefaultOUIAId(Modal.displayName, props.variant)
88
89
  };
89
90
  }
@@ -107,7 +108,7 @@ class Modal extends React.Component<ModalProps, ModalState> {
107
108
  const target: HTMLElement = this.getElement(appendTo);
108
109
  const bodyChildren = target.children;
109
110
  for (const child of Array.from(bodyChildren)) {
110
- if (child !== this.state.container) {
111
+ if (child.id !== this.backdropId) {
111
112
  hide ? child.setAttribute('aria-hidden', '' + hide) : child.removeAttribute('aria-hidden');
112
113
  }
113
114
  }
@@ -118,36 +119,31 @@ class Modal extends React.Component<ModalProps, ModalState> {
118
119
  componentDidMount() {
119
120
  const { appendTo } = this.props;
120
121
  const target: HTMLElement = this.getElement(appendTo);
121
- const container = document.createElement('div');
122
- this.setState({ container });
123
- target.appendChild(container);
124
122
  target.addEventListener('keydown', this.handleEscKeyClick, false);
125
123
 
126
124
  if (this.props.isOpen) {
127
125
  target.classList.add(css(styles.backdropOpen));
128
- } else {
129
- target.classList.remove(css(styles.backdropOpen));
126
+ this.toggleSiblingsFromScreenReaders(true);
130
127
  }
131
128
  }
132
129
 
133
- componentDidUpdate() {
130
+ componentDidUpdate(prevProps: ModalProps) {
134
131
  const { appendTo } = this.props;
135
132
  const target: HTMLElement = this.getElement(appendTo);
136
133
  if (this.props.isOpen) {
137
134
  target.classList.add(css(styles.backdropOpen));
138
135
  this.toggleSiblingsFromScreenReaders(true);
139
136
  } else {
140
- target.classList.remove(css(styles.backdropOpen));
141
- this.toggleSiblingsFromScreenReaders(false);
137
+ if (prevProps.isOpen !== this.props.isOpen) {
138
+ target.classList.remove(css(styles.backdropOpen));
139
+ this.toggleSiblingsFromScreenReaders(false);
140
+ }
142
141
  }
143
142
  }
144
143
 
145
144
  componentWillUnmount() {
146
145
  const { appendTo } = this.props;
147
146
  const target: HTMLElement = this.getElement(appendTo);
148
- if (this.state.container) {
149
- target.removeChild(this.state.container);
150
- }
151
147
  target.removeEventListener('keydown', this.handleEscKeyClick, false);
152
148
  target.classList.remove(css(styles.backdropOpen));
153
149
  this.toggleSiblingsFromScreenReaders(false);
@@ -155,7 +151,6 @@ class Modal extends React.Component<ModalProps, ModalState> {
155
151
 
156
152
  render() {
157
153
  const {
158
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
159
154
  appendTo,
160
155
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
161
156
  onEscapePress,
@@ -168,15 +163,15 @@ class Modal extends React.Component<ModalProps, ModalState> {
168
163
  elementToFocus,
169
164
  ...props
170
165
  } = this.props;
171
- const { container } = this.state;
172
166
 
173
- if (!canUseDOM || !container) {
167
+ if (!canUseDOM || !this.getElement(appendTo)) {
174
168
  return null;
175
169
  }
176
170
 
177
171
  return ReactDOM.createPortal(
178
172
  <ModalContent
179
173
  boxId={this.boxId}
174
+ backdropId={this.backdropId}
180
175
  aria-label={ariaLabel}
181
176
  aria-describedby={ariaDescribedby}
182
177
  aria-labelledby={ariaLabelledby}
@@ -187,7 +182,7 @@ class Modal extends React.Component<ModalProps, ModalState> {
187
182
  backdropClassName={props.backdropClassName}
188
183
  {...props}
189
184
  />,
190
- container
185
+ this.getElement(appendTo)
191
186
  ) as React.ReactElement;
192
187
  }
193
188
  }
@@ -16,6 +16,8 @@ export interface ModalContentProps extends OUIAProps {
16
16
  'aria-labelledby'?: string;
17
17
  /** Id of the modal box container. */
18
18
  boxId: string;
19
+ /** Id of the backdrop. */
20
+ backdropId?: string;
19
21
  /** Content rendered inside the modal. */
20
22
  children: React.ReactNode;
21
23
  /** Additional classes added to the modal box. */
@@ -63,6 +65,7 @@ export const ModalContent: React.FunctionComponent<ModalContentProps> = ({
63
65
  width,
64
66
  maxWidth,
65
67
  boxId,
68
+ backdropId,
66
69
  disableFocusTrap = false,
67
70
  ouiaId,
68
71
  ouiaSafe = true,
@@ -109,7 +112,7 @@ export const ModalContent: React.FunctionComponent<ModalContentProps> = ({
109
112
  </ModalBox>
110
113
  );
111
114
  return (
112
- <Backdrop className={css(backdropClassName)}>
115
+ <Backdrop className={css(backdropClassName)} id={backdropId}>
113
116
  <FocusTrap
114
117
  active={!disableFocusTrap}
115
118
  focusTrapOptions={{
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
 
3
3
  import { render, screen } from '@testing-library/react';
4
4
  import userEvent from '@testing-library/user-event';
5
+ import '@testing-library/jest-dom';
5
6
 
6
7
  import { css } from '../../../../../react-styles/dist/js';
7
8
  import styles from '@patternfly/react-styles/css/components/Backdrop/backdrop';
@@ -38,6 +39,32 @@ const ModalWithSiblings = () => {
38
39
  );
39
40
  };
40
41
 
42
+ const ModalWithAdjacentModal = () => {
43
+ const [isOpen, setIsOpen] = React.useState(true);
44
+ const [isModalMounted, setIsModalMounted] = React.useState(true);
45
+ const modalProps = { ...props, isOpen, appendTo: target, onClose: () => setIsOpen(false) };
46
+
47
+ return (
48
+ <>
49
+ <aside>Aside sibling</aside>
50
+ <article>Section sibling</article>
51
+ {isModalMounted && (
52
+ <>
53
+ <Modal {...modalProps}>
54
+ <button onClick={() => setIsModalMounted(false)}>Unmount Modal</button>
55
+ </Modal>
56
+ <Modal isOpen={false} onClose={() => {}}>
57
+ Modal closed for test
58
+ </Modal>
59
+ <Modal isOpen={false} onClose={() => {}}>
60
+ modal closed for test
61
+ </Modal>
62
+ </>
63
+ )}
64
+ </>
65
+ );
66
+ };
67
+
41
68
  describe('Modal', () => {
42
69
  test('Modal creates a container element once for div', () => {
43
70
  render(<Modal {...props} />);
@@ -128,4 +155,22 @@ describe('Modal', () => {
128
155
  expect(asideSibling).not.toHaveAttribute('aria-hidden');
129
156
  expect(articleSibling).not.toHaveAttribute('aria-hidden');
130
157
  });
158
+
159
+ test('modal siblings have the aria-hidden attribute when it has adjacent modals', async () => {
160
+ const user = userEvent.setup();
161
+
162
+ render(<ModalWithAdjacentModal />, { container: document.body.appendChild(target) });
163
+
164
+ const asideSibling = screen.getByRole('complementary', { hidden: true });
165
+ const articleSibling = screen.getByRole('article', { hidden: true });
166
+ const unmountButton = screen.getByRole('button', { name: 'Unmount Modal' });
167
+
168
+ expect(asideSibling).toHaveAttribute('aria-hidden');
169
+ expect(articleSibling).toHaveAttribute('aria-hidden');
170
+
171
+ await user.click(unmountButton);
172
+
173
+ expect(asideSibling).not.toHaveAttribute('aria-hidden');
174
+ expect(articleSibling).not.toHaveAttribute('aria-hidden');
175
+ });
131
176
  });
@@ -9,7 +9,7 @@ exports[`MultipleFileUpload renders custom class names 1`] = `
9
9
  >
10
10
  <input
11
11
  multiple=""
12
- style="display: none;"
12
+ style="border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: 0px -1px -1px 0px; overflow: hidden; padding: 0px; position: absolute; width: 1px; white-space: nowrap;"
13
13
  tabindex="-1"
14
14
  type="file"
15
15
  />
@@ -27,7 +27,7 @@ exports[`MultipleFileUpload renders with expected class names when horizontal 1`
27
27
  >
28
28
  <input
29
29
  multiple=""
30
- style="display: none;"
30
+ style="border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: 0px -1px -1px 0px; overflow: hidden; padding: 0px; position: absolute; width: 1px; white-space: nowrap;"
31
31
  tabindex="-1"
32
32
  type="file"
33
33
  />
@@ -45,7 +45,7 @@ exports[`MultipleFileUpload renders with expected class names when not horizonta
45
45
  >
46
46
  <input
47
47
  multiple=""
48
- style="display: none;"
48
+ style="border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: 0px -1px -1px 0px; overflow: hidden; padding: 0px; position: absolute; width: 1px; white-space: nowrap;"
49
49
  tabindex="-1"
50
50
  type="file"
51
51
  />
@@ -95,9 +95,8 @@ export const OverflowMenuBreakpointOnContainer: React.FunctionComponent = () =>
95
95
  variant="plain"
96
96
  onClick={onToggle}
97
97
  isExpanded={isOpen}
98
- >
99
- <EllipsisVIcon />
100
- </MenuToggle>
98
+ icon={<EllipsisVIcon />}
99
+ />
101
100
  )}
102
101
  isOpen={isOpen}
103
102
  onOpenChange={(isOpen) => setIsOpen(isOpen)}
@@ -99,9 +99,8 @@ export const OverflowMenuGroupTypes: React.FunctionComponent = () => {
99
99
  variant="plain"
100
100
  onClick={onToggle}
101
101
  isExpanded={isOpen}
102
- >
103
- <EllipsisVIcon />
104
- </MenuToggle>
102
+ icon={<EllipsisVIcon />}
103
+ />
105
104
  )}
106
105
  isOpen={isOpen}
107
106
  onOpenChange={(isOpen) => setIsOpen(isOpen)}
@@ -88,9 +88,8 @@ export const OverflowMenuMultiGroup: React.FunctionComponent = () => {
88
88
  variant="plain"
89
89
  onClick={onToggle}
90
90
  isExpanded={isOpen}
91
- >
92
- <EllipsisVIcon />
93
- </MenuToggle>
91
+ icon={<EllipsisVIcon />}
92
+ />
94
93
  )}
95
94
  isOpen={isOpen}
96
95
  onOpenChange={(isOpen) => setIsOpen(isOpen)}
@@ -62,9 +62,8 @@ export const OverflowMenuPersistent: React.FunctionComponent = () => {
62
62
  variant="plain"
63
63
  onClick={onToggle}
64
64
  isExpanded={isOpen}
65
- >
66
- <EllipsisVIcon />
67
- </MenuToggle>
65
+ icon={<EllipsisVIcon />}
66
+ />
68
67
  )}
69
68
  isOpen={isOpen}
70
69
  onOpenChange={(isOpen) => setIsOpen(isOpen)}
@@ -62,9 +62,8 @@ export const OverflowMenuBreakpointOnContainer: React.FunctionComponent = () =>
62
62
  variant="plain"
63
63
  onClick={onToggle}
64
64
  isExpanded={isOpen}
65
- >
66
- <EllipsisVIcon />
67
- </MenuToggle>
65
+ icon={<EllipsisVIcon />}
66
+ />
68
67
  )}
69
68
  isOpen={isOpen}
70
69
  onOpenChange={(isOpen) => setIsOpen(isOpen)}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { css } from '@patternfly/react-styles';
3
3
  import { Menu, MenuContent, MenuProps } from '../Menu';
4
4
  import { Popper } from '../../helpers/Popper/Popper';
5
- import { getOUIAProps, OUIAProps, getDefaultOUIAId } from '../../helpers';
5
+ import { getOUIAProps, OUIAProps, getDefaultOUIAId, onToggleArrowKeydownDefault } from '../../helpers';
6
6
 
7
7
  export interface SelectPopperProps {
8
8
  /** Vertical direction of the popper. If enableFlip is set to true, this will set the initial direction before the popper flips. */
@@ -62,6 +62,10 @@ export interface SelectProps extends MenuProps, OUIAProps {
62
62
  onOpenChange?: (isOpen: boolean) => void;
63
63
  /** Keys that trigger onOpenChange, defaults to tab and escape. It is highly recommended to include Escape in the array, while Tab may be omitted if the menu contains non-menu items that are focusable. */
64
64
  onOpenChangeKeys?: string[];
65
+ /** Callback to override the toggle keydown behavior. By default, when the toggle has focus and the menu is open, pressing the up/down arrow keys will focus a valid non-disabled menu item - the first item for the down arrow key and last item for the up arrow key. */
66
+ onToggleKeydown?: (event: KeyboardEvent) => void;
67
+ /** Select variant. For typeahead variant focus won't shift to menu items when pressing up/down arrows. */
68
+ variant?: 'default' | 'typeahead';
65
69
  /** Indicates if the select should be without the outer box-shadow */
66
70
  isPlain?: boolean;
67
71
  /** @hide Forwarded ref */
@@ -95,6 +99,8 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
95
99
  shouldFocusFirstItemOnOpen = false,
96
100
  onOpenChange,
97
101
  onOpenChangeKeys = ['Escape', 'Tab'],
102
+ onToggleKeydown,
103
+ variant,
98
104
  isPlain,
99
105
  innerRef,
100
106
  zIndex = 9999,
@@ -144,6 +150,14 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
144
150
  toggleRef.current?.focus();
145
151
  }
146
152
  }
153
+
154
+ if (toggleRef.current?.contains(event.target as Node)) {
155
+ if (onToggleKeydown) {
156
+ onToggleKeydown(event);
157
+ } else if (isOpen && variant !== 'typeahead') {
158
+ onToggleArrowKeydownDefault(event, menuRef);
159
+ }
160
+ }
147
161
  };
148
162
 
149
163
  const handleClick = (event: MouseEvent) => {
@@ -168,6 +182,7 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
168
182
  toggleRef,
169
183
  onOpenChange,
170
184
  onOpenChangeKeys,
185
+ onToggleKeydown,
171
186
  shouldPreventScrollOnItemFocus,
172
187
  shouldFocusFirstItemOnOpen,
173
188
  focusTimeoutDelay
@@ -247,7 +247,7 @@ export const SelectMultiTypeahead: React.FunctionComponent = () => {
247
247
  !isOpen && closeMenu();
248
248
  }}
249
249
  toggle={toggle}
250
- shouldFocusFirstItemOnOpen={false}
250
+ variant="typeahead"
251
251
  >
252
252
  <SelectList isAriaMultiselectable id="select-multi-typeahead-listbox">
253
253
  {selectOptions.map((option, index) => (
@@ -241,7 +241,7 @@ export const SelectMultiTypeaheadCheckbox: React.FunctionComponent = () => {
241
241
  !isOpen && closeMenu();
242
242
  }}
243
243
  toggle={toggle}
244
- shouldFocusFirstItemOnOpen={false}
244
+ variant="typeahead"
245
245
  >
246
246
  <SelectList isAriaMultiselectable id="select-multi-typeahead-checkbox-listbox">
247
247
  {selectOptions.map((option, index) => (
@@ -260,7 +260,7 @@ export const SelectMultiTypeaheadCreatable: React.FunctionComponent = () => {
260
260
  !isOpen && closeMenu();
261
261
  }}
262
262
  toggle={toggle}
263
- shouldFocusFirstItemOnOpen={false}
263
+ variant="typeahead"
264
264
  >
265
265
  <SelectList isAriaMultiselectable id="select-multi-create-typeahead-listbox">
266
266
  {selectOptions.map((option, index) => (
@@ -244,7 +244,7 @@ export const SelectTypeahead: React.FunctionComponent = () => {
244
244
  !isOpen && closeMenu();
245
245
  }}
246
246
  toggle={toggle}
247
- shouldFocusFirstItemOnOpen={false}
247
+ variant="typeahead"
248
248
  >
249
249
  <SelectList id="select-typeahead-listbox">
250
250
  {selectOptions.map((option, index) => (
@@ -251,7 +251,7 @@ export const SelectTypeaheadCreatable: React.FunctionComponent = () => {
251
251
  !isOpen && closeMenu();
252
252
  }}
253
253
  toggle={toggle}
254
- shouldFocusFirstItemOnOpen={false}
254
+ variant="typeahead"
255
255
  >
256
256
  <SelectList id="select-create-typeahead-listbox">
257
257
  {selectOptions.map((option, index) => (
@@ -133,7 +133,8 @@ class ToolbarFilter extends React.Component<ToolbarFilterProps, ToolbarFilterSta
133
133
  return (
134
134
  <React.Fragment>
135
135
  {showToolbarItem && <ToolbarItem {...props}>{children}</ToolbarItem>}
136
- {ReactDOM.createPortal(labelGroup, labelGroupContentRef.current.firstElementChild)}
136
+ {labelGroupContentRef?.current?.firstElementChild !== null &&
137
+ ReactDOM.createPortal(labelGroup, labelGroupContentRef.current.firstElementChild)}
137
138
  </React.Fragment>
138
139
  );
139
140
  }
@@ -229,9 +229,8 @@ export const ToolbarStacked: React.FunctionComponent = () => {
229
229
  variant="plain"
230
230
  onClick={onKebabToggle}
231
231
  isExpanded={kebabIsOpen}
232
- >
233
- <EllipsisVIcon />
234
- </MenuToggle>
232
+ icon={<EllipsisVIcon />}
233
+ />
235
234
  )}
236
235
  isOpen={kebabIsOpen}
237
236
  >
@@ -231,9 +231,8 @@ export const ToolbarWithFilters: React.FunctionComponent = () => {
231
231
  onClick={onKebabToggle}
232
232
  variant="plain"
233
233
  aria-label="Toolbar with filters example kebab toggle"
234
- >
235
- <EllipsisVIcon aria-hidden="true" />
236
- </MenuToggle>
234
+ icon={<EllipsisVIcon aria-hidden="true" />}
235
+ />
237
236
  )}
238
237
  >
239
238
  <DropdownList>
@@ -47,9 +47,8 @@ export const TreeViewWithActionItems: React.FunctionComponent = () => {
47
47
  onClick={onToggle}
48
48
  variant="plain"
49
49
  aria-label="Tree view with actions example kebab toggle"
50
- >
51
- <EllipsisVIcon aria-hidden="true" />
52
- </MenuToggle>
50
+ icon={<EllipsisVIcon />}
51
+ />
53
52
  )}
54
53
  >
55
54
  <DropdownList>
@@ -427,9 +427,8 @@ export const CardViewBasic: React.FunctionComponent = () => {
427
427
  variant="plain"
428
428
  onClick={onToolbarKebabDropdownToggle}
429
429
  isExpanded={isLowerToolbarKebabDropdownOpen}
430
- >
431
- <EllipsisVIcon />
432
- </MenuToggle>
430
+ icon={<EllipsisVIcon />}
431
+ />
433
432
  )}
434
433
  isOpen={isLowerToolbarKebabDropdownOpen}
435
434
  onOpenChange={(isOpen) => setIsLowerToolbarDropdownOpen(isOpen)}
@@ -518,9 +517,8 @@ export const CardViewBasic: React.FunctionComponent = () => {
518
517
  onCardKebabDropdownToggle(e, key.toString());
519
518
  }}
520
519
  isExpanded={!!state[key]}
521
- >
522
- <EllipsisVIcon />
523
- </MenuToggle>
520
+ icon={<EllipsisVIcon />}
521
+ />
524
522
  )}
525
523
  popperProps={{ position: 'right' }}
526
524
  >
@@ -215,9 +215,8 @@ export const ApplicationLauncherDemo: React.FunctionComponent = () => {
215
215
  onClick={onToggleClick}
216
216
  isExpanded={isOpen}
217
217
  style={{ width: 'auto' }}
218
- >
219
- <ThIcon />
220
- </MenuToggle>
218
+ icon={<ThIcon />}
219
+ />
221
220
  )}
222
221
  ref={menuRef}
223
222
  onActionClick={onFavorite}