@patternfly/react-core 6.0.0-alpha.50 → 6.0.0-alpha.51

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 (290) hide show
  1. package/CHANGELOG.md +327 -0
  2. package/README.md +1 -0
  3. package/components/package.json +1 -1
  4. package/deprecated/package.json +1 -1
  5. package/dist/dynamic/components/AboutModal/package.json +1 -1
  6. package/dist/dynamic/components/Accordion/package.json +1 -1
  7. package/dist/dynamic/components/ActionList/package.json +1 -1
  8. package/dist/dynamic/components/Alert/package.json +1 -1
  9. package/dist/dynamic/components/Avatar/package.json +1 -1
  10. package/dist/dynamic/components/BackToTop/package.json +1 -1
  11. package/dist/dynamic/components/Backdrop/package.json +1 -1
  12. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  13. package/dist/dynamic/components/Badge/package.json +1 -1
  14. package/dist/dynamic/components/Banner/package.json +1 -1
  15. package/dist/dynamic/components/Brand/package.json +1 -1
  16. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  17. package/dist/dynamic/components/Button/package.json +1 -1
  18. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  19. package/dist/dynamic/components/Card/package.json +1 -1
  20. package/dist/dynamic/components/Checkbox/package.json +1 -1
  21. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  22. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/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/Text/package.json +1 -1
  71. package/dist/dynamic/components/TextArea/package.json +1 -1
  72. package/dist/dynamic/components/TextInput/package.json +1 -1
  73. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  74. package/dist/dynamic/components/Tile/package.json +1 -1
  75. package/dist/dynamic/components/TimePicker/package.json +1 -1
  76. package/dist/dynamic/components/Timestamp/package.json +1 -1
  77. package/dist/dynamic/components/Title/package.json +1 -1
  78. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  79. package/dist/dynamic/components/Toolbar/package.json +1 -1
  80. package/dist/dynamic/components/Tooltip/package.json +1 -1
  81. package/dist/dynamic/components/TreeView/package.json +1 -1
  82. package/dist/dynamic/components/Truncate/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  94. package/dist/dynamic/deprecated/components/package.json +1 -1
  95. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  96. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  97. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  98. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  99. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  100. package/dist/dynamic/helpers/constants/package.json +1 -1
  101. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/favorites/package.json +1 -1
  103. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  104. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  105. package/dist/dynamic/helpers/package.json +1 -1
  106. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  107. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  108. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  109. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  110. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  111. package/dist/dynamic/helpers/util/package.json +1 -1
  112. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  113. package/dist/dynamic/layouts/Flex/package.json +1 -1
  114. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  115. package/dist/dynamic/layouts/Grid/package.json +1 -1
  116. package/dist/dynamic/layouts/Level/package.json +1 -1
  117. package/dist/dynamic/layouts/Split/package.json +1 -1
  118. package/dist/dynamic/layouts/Stack/package.json +1 -1
  119. package/dist/dynamic/next/components/DualListSelector/package.json +1 -1
  120. package/dist/dynamic/next/components/Modal/package.json +1 -1
  121. package/dist/dynamic/next/components/package.json +1 -1
  122. package/dist/dynamic/styles/package.json +1 -1
  123. package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  124. package/dist/esm/components/CalendarMonth/CalendarMonth.js +30 -12
  125. package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
  126. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts +3 -3
  127. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  128. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +10 -2
  129. package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  130. package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -0
  131. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  132. package/dist/esm/components/Dropdown/Dropdown.js +6 -5
  133. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  134. package/dist/esm/components/Label/Label.d.ts +2 -0
  135. package/dist/esm/components/Label/Label.d.ts.map +1 -1
  136. package/dist/esm/components/Label/Label.js +9 -15
  137. package/dist/esm/components/Label/Label.js.map +1 -1
  138. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  139. package/dist/esm/components/Menu/Menu.js +5 -1
  140. package/dist/esm/components/Menu/Menu.js.map +1 -1
  141. package/dist/esm/components/Menu/MenuContainer.js +2 -2
  142. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  143. package/dist/esm/components/MenuToggle/MenuToggle.d.ts +11 -3
  144. package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  145. package/dist/esm/components/MenuToggle/MenuToggle.js +29 -3
  146. package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
  147. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  148. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  149. package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  150. package/dist/esm/components/Pagination/PaginationOptionsMenu.js +2 -4
  151. package/dist/esm/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  152. package/dist/esm/components/Select/Select.js +2 -2
  153. package/dist/esm/components/Select/Select.js.map +1 -1
  154. package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
  155. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  156. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  157. package/dist/esm/helpers/GenerateId/GenerateId.d.ts +5 -1
  158. package/dist/esm/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  159. package/dist/esm/helpers/GenerateId/GenerateId.js +14 -2
  160. package/dist/esm/helpers/GenerateId/GenerateId.js.map +1 -1
  161. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  162. package/dist/js/components/CalendarMonth/CalendarMonth.js +30 -12
  163. package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
  164. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +3 -3
  165. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  166. package/dist/js/components/ClipboardCopy/ClipboardCopy.js +10 -2
  167. package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
  168. package/dist/js/components/Dropdown/Dropdown.d.ts +4 -0
  169. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  170. package/dist/js/components/Dropdown/Dropdown.js +6 -5
  171. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  172. package/dist/js/components/Label/Label.d.ts +2 -0
  173. package/dist/js/components/Label/Label.d.ts.map +1 -1
  174. package/dist/js/components/Label/Label.js +9 -15
  175. package/dist/js/components/Label/Label.js.map +1 -1
  176. package/dist/js/components/Menu/Menu.d.ts.map +1 -1
  177. package/dist/js/components/Menu/Menu.js +5 -1
  178. package/dist/js/components/Menu/Menu.js.map +1 -1
  179. package/dist/js/components/Menu/MenuContainer.js +2 -2
  180. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  181. package/dist/js/components/MenuToggle/MenuToggle.d.ts +11 -3
  182. package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  183. package/dist/js/components/MenuToggle/MenuToggle.js +30 -4
  184. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  185. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js +2 -2
  186. package/dist/js/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
  187. package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  188. package/dist/js/components/Pagination/PaginationOptionsMenu.js +2 -4
  189. package/dist/js/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  190. package/dist/js/components/Select/Select.js +2 -2
  191. package/dist/js/components/Select/Select.js.map +1 -1
  192. package/dist/js/components/TextArea/TextArea.d.ts +0 -4
  193. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  194. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  195. package/dist/js/helpers/GenerateId/GenerateId.d.ts +5 -1
  196. package/dist/js/helpers/GenerateId/GenerateId.d.ts.map +1 -1
  197. package/dist/js/helpers/GenerateId/GenerateId.js +14 -2
  198. package/dist/js/helpers/GenerateId/GenerateId.js.map +1 -1
  199. package/dist/umd/react-core.min.js +2 -2
  200. package/helpers/package.json +1 -1
  201. package/layouts/package.json +1 -1
  202. package/next/package.json +1 -1
  203. package/package.json +5 -5
  204. package/src/components/Accordion/__tests__/AccordionToggle.test.tsx +28 -0
  205. package/src/components/CalendarMonth/CalendarMonth.tsx +38 -13
  206. package/src/components/ClipboardCopy/ClipboardCopy.tsx +18 -4
  207. package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +2 -0
  208. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +1 -1
  209. package/src/components/Drawer/__tests__/Drawer.test.tsx +2 -0
  210. package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +2 -0
  211. package/src/components/Drawer/__tests__/Generated/DrawerPanelContent.test.tsx +2 -0
  212. package/src/components/Drawer/__tests__/Generated/__snapshots__/DrawerPanelContent.test.tsx.snap +1 -1
  213. package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +8 -8
  214. package/src/components/Dropdown/Dropdown.tsx +14 -4
  215. package/src/components/Form/__tests__/FormFieldGroup.test.tsx +2 -0
  216. package/src/components/Form/__tests__/FormSection.test.tsx +2 -0
  217. package/src/components/Form/__tests__/__snapshots__/FormFieldGroup.test.tsx.snap +2 -2
  218. package/src/components/Form/__tests__/__snapshots__/FormSection.test.tsx.snap +2 -2
  219. package/src/components/Label/Label.tsx +17 -13
  220. package/src/components/Label/__tests__/LabelGroup.test.tsx +2 -0
  221. package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +8 -8
  222. package/src/components/Label/examples/LabelCompact.tsx +19 -6
  223. package/src/components/Label/examples/LabelFilled.tsx +107 -17
  224. package/src/components/Label/examples/LabelOutline.tsx +142 -10
  225. package/src/components/Menu/Menu.tsx +5 -3
  226. package/src/components/Menu/MenuContainer.tsx +2 -2
  227. package/src/components/MenuToggle/MenuToggle.tsx +37 -3
  228. package/src/components/MenuToggle/MenuToggleCheckbox.tsx +2 -2
  229. package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +15 -0
  230. package/src/components/MenuToggle/examples/MenuToggle.md +23 -3
  231. package/src/components/MenuToggle/examples/MenuToggleSplitButtonCheckboxWithToggleText.tsx +51 -0
  232. package/src/components/MenuToggle/examples/MenuToggleStatus.tsx +20 -0
  233. package/src/components/MultipleFileUpload/__tests__/MultipleFileUpload.test.tsx +2 -0
  234. package/src/components/MultipleFileUpload/__tests__/MultipleFileUploadStatus.test.tsx +2 -0
  235. package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatus.test.tsx.snap +16 -16
  236. package/src/components/Pagination/PaginationOptionsMenu.tsx +2 -4
  237. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +1 -0
  238. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +2 -2
  239. package/src/components/Select/Select.tsx +2 -2
  240. package/src/components/Select/examples/Select.md +33 -9
  241. package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +6 -1
  242. package/src/components/Select/examples/SelectValidated.tsx +74 -0
  243. package/src/components/Tabs/__tests__/Tabs.test.tsx +2 -0
  244. package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +3 -3
  245. package/src/components/TextArea/TextArea.tsx +0 -4
  246. package/src/components/Toolbar/__tests__/Toolbar.test.tsx +2 -0
  247. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +4 -4
  248. package/src/demos/AlertGroup.md +1 -0
  249. package/src/demos/BackToTop.md +1 -0
  250. package/src/demos/Banner.md +5 -4
  251. package/src/demos/CardView/CardView.md +2 -0
  252. package/src/demos/CardView/examples/CardView.tsx +1 -1
  253. package/src/demos/DataList/examples/DataListBasic.tsx +6 -4
  254. package/src/demos/DataListDemo.md +1 -0
  255. package/src/demos/Filters/examples/FilterAttributeSearch.tsx +1 -1
  256. package/src/demos/Filters/examples/FilterCheckboxSelect.tsx +1 -1
  257. package/src/demos/Filters/examples/FilterFaceted.tsx +1 -1
  258. package/src/demos/Filters/examples/FilterMixedSelectGroup.tsx +1 -1
  259. package/src/demos/Filters/examples/FilterSameSelectGroup.tsx +1 -1
  260. package/src/demos/Filters/examples/FilterSearchInput.tsx +1 -1
  261. package/src/demos/Filters/examples/FilterSingleSelect.tsx +1 -1
  262. package/src/demos/JumpLinks.md +2 -1
  263. package/src/demos/PrimaryDetail.md +1 -0
  264. package/src/demos/RTL/RTL.md +1 -1
  265. package/src/demos/RTL/examples/PaginatedTable.tsx +533 -0
  266. package/src/demos/Tabs.md +5 -2
  267. package/src/demos/Toolbar.md +1 -0
  268. package/src/demos/Wizard/WizardDemo.md +1 -0
  269. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +1 -1
  270. package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +1 -1
  271. package/src/demos/examples/Card/CardStatus.tsx +1 -1
  272. package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +1 -1
  273. package/src/demos/examples/Nav/NavDefault.tsx +1 -1
  274. package/src/demos/examples/Nav/NavExpandable.tsx +1 -1
  275. package/src/demos/examples/Nav/NavWithSubnav.tsx +1 -1
  276. package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +1 -1
  277. package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +1 -1
  278. package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +1 -1
  279. package/src/demos/examples/Tabs/ModalTabs.tsx +1 -1
  280. package/src/demos/examples/Tabs/NestedTabs.tsx +1 -1
  281. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +1 -1
  282. package/src/demos/examples/Tabs/TabsAndTable.tsx +1 -1
  283. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -1
  284. package/src/demos/examples/Wizard/InModal.tsx +1 -1
  285. package/src/deprecated/components/Chip/__tests__/ChipGroup.test.tsx +4 -2
  286. package/src/deprecated/components/Select/__tests__/Select.test.tsx +2 -0
  287. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +19 -19
  288. package/src/helpers/GenerateId/GenerateId.ts +17 -3
  289. package/src/helpers/GenerateId/__mocks__/GenerateId.ts +11 -0
  290. package/src/helpers/GenerateId/__tests__/GenerateId.test.tsx +3 -1
@@ -21,13 +21,19 @@ export const LabelFilled: React.FunctionComponent = () => {
21
21
  <Label href="#filled">Grey link</Label>
22
22
  <Label href="#filled" onClose={() => Function.prototype}>
23
23
  Grey link removable
24
- </Label>
25
- <Label onClick={() => logColor('grey')}>Grey clickable</Label>
24
+ </Label>{' '}
25
+ <Label onClick={() => logColor('grey')}>Grey clickable</Label>{' '}
26
26
  <Label onClick={() => logColor('grey')} onClose={() => Function.prototype}>
27
27
  Grey clickable removable
28
- </Label>
28
+ </Label>{' '}
29
29
  <Label icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
30
30
  Grey label with icon that overflows
31
+ </Label>{' '}
32
+ <Label isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
33
+ Grey link removable (disabled)
34
+ </Label>{' '}
35
+ <Label isDisabled icon={<CubeIcon />} onClick={() => logColor('grey')} onClose={() => Function.prototype}>
36
+ Grey clickable removable (disabled)
31
37
  </Label>
32
38
  <br />
33
39
  <br />
@@ -46,15 +52,27 @@ export const LabelFilled: React.FunctionComponent = () => {
46
52
  </Label>
47
53
  <Label color="blue" href="#filled" onClose={() => Function.prototype}>
48
54
  Blue link removable
49
- </Label>
55
+ </Label>{' '}
50
56
  <Label color="blue" onClick={() => logColor('blue')}>
51
57
  Blue clickable
52
58
  </Label>
53
59
  <Label color="blue" onClick={() => logColor('blue')} onClose={() => Function.prototype}>
54
60
  Blue clickable removable
55
- </Label>
61
+ </Label>{' '}
56
62
  <Label color="blue" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
57
63
  Blue label with icon that overflows
64
+ </Label>{' '}
65
+ <Label color="blue" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
66
+ Blue link removable (disabled)
67
+ </Label>{' '}
68
+ <Label
69
+ color="blue"
70
+ isDisabled
71
+ icon={<CubeIcon />}
72
+ onClick={() => logColor('blue')}
73
+ onClose={() => Function.prototype}
74
+ >
75
+ Blue clickable removable (disabled)
58
76
  </Label>
59
77
  <br />
60
78
  <br />
@@ -73,15 +91,27 @@ export const LabelFilled: React.FunctionComponent = () => {
73
91
  </Label>
74
92
  <Label color="green" href="#filled" onClose={() => Function.prototype}>
75
93
  Green link removable
76
- </Label>
94
+ </Label>{' '}
77
95
  <Label color="green" onClick={() => logColor('green')}>
78
96
  Green clickable
79
97
  </Label>
80
98
  <Label color="green" onClick={() => logColor('green')} onClose={() => Function.prototype}>
81
99
  Green clickable removable
82
- </Label>
100
+ </Label>{' '}
83
101
  <Label color="green" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
84
102
  Green label with icon that overflows
103
+ </Label>{' '}
104
+ <Label color="green" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
105
+ Green link removable (disabled)
106
+ </Label>{' '}
107
+ <Label
108
+ color="green"
109
+ isDisabled
110
+ icon={<CubeIcon />}
111
+ onClick={() => logColor('green')}
112
+ onClose={() => Function.prototype}
113
+ >
114
+ Green clickable removable (disabled)
85
115
  </Label>
86
116
  <br />
87
117
  <br />
@@ -100,15 +130,27 @@ export const LabelFilled: React.FunctionComponent = () => {
100
130
  </Label>
101
131
  <Label color="orange" href="#filled" onClose={() => Function.prototype}>
102
132
  Orange link removable
103
- </Label>
133
+ </Label>{' '}
104
134
  <Label color="orange" onClick={() => logColor('orange')}>
105
135
  Orange clickable
106
136
  </Label>
107
137
  <Label color="orange" onClick={() => logColor('orange')} onClose={() => Function.prototype}>
108
138
  Orange clickable removable
109
- </Label>
139
+ </Label>{' '}
110
140
  <Label color="orange" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
111
141
  Orange label with icon that overflows
142
+ </Label>{' '}
143
+ <Label color="orange" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
144
+ Orange link removable (disabled)
145
+ </Label>{' '}
146
+ <Label
147
+ color="orange"
148
+ isDisabled
149
+ icon={<CubeIcon />}
150
+ onClick={() => logColor('orange')}
151
+ onClose={() => Function.prototype}
152
+ >
153
+ Orange clickable removable (disabled)
112
154
  </Label>
113
155
  <br />
114
156
  <br />
@@ -127,15 +169,27 @@ export const LabelFilled: React.FunctionComponent = () => {
127
169
  </Label>
128
170
  <Label color="red" href="#filled" onClose={() => Function.prototype}>
129
171
  Red link removable
130
- </Label>
172
+ </Label>{' '}
131
173
  <Label color="red" onClick={() => logColor('red')}>
132
174
  Red clickable
133
175
  </Label>
134
176
  <Label color="red" onClick={() => logColor('red')} onClose={() => Function.prototype}>
135
177
  Red clickable removable
136
- </Label>
178
+ </Label>{' '}
137
179
  <Label color="red" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
138
180
  Red label with icon that overflows
181
+ </Label>{' '}
182
+ <Label color="red" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
183
+ Red link removable (disabled)
184
+ </Label>{' '}
185
+ <Label
186
+ color="red"
187
+ isDisabled
188
+ icon={<CubeIcon />}
189
+ onClick={() => logColor('red')}
190
+ onClose={() => Function.prototype}
191
+ >
192
+ Red clickable removable (disabled)
139
193
  </Label>
140
194
  <br />
141
195
  <br />
@@ -181,15 +235,27 @@ export const LabelFilled: React.FunctionComponent = () => {
181
235
  </Label>
182
236
  <Label color="purple" href="#filled" onClose={() => Function.prototype}>
183
237
  Purple link removable
184
- </Label>
238
+ </Label>{' '}
185
239
  <Label color="purple" onClick={() => logColor('purple')}>
186
240
  Purple clickable
187
241
  </Label>
188
242
  <Label color="purple" onClick={() => logColor('purple')} onClose={() => Function.prototype}>
189
243
  Purple clickable removable
190
- </Label>
244
+ </Label>{' '}
191
245
  <Label color="purple" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
192
246
  Purple label with icon that overflows
247
+ </Label>{' '}
248
+ <Label color="purple" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
249
+ Purple link removable (disabled)
250
+ </Label>{' '}
251
+ <Label
252
+ color="purple"
253
+ isDisabled
254
+ icon={<CubeIcon />}
255
+ onClick={() => logColor('purple')}
256
+ onClose={() => Function.prototype}
257
+ >
258
+ Purple clickable removable (disabled)
193
259
  </Label>
194
260
  <br />
195
261
  <br />
@@ -208,15 +274,27 @@ export const LabelFilled: React.FunctionComponent = () => {
208
274
  </Label>
209
275
  <Label color="cyan" href="#filled" onClose={() => Function.prototype}>
210
276
  Cyan link removable
211
- </Label>
277
+ </Label>{' '}
212
278
  <Label color="cyan" onClick={() => logColor('cyan')}>
213
279
  Cyan clickable
214
280
  </Label>
215
281
  <Label color="cyan" onClick={() => logColor('cyan')} onClose={() => Function.prototype}>
216
282
  Cyan clickable removable
217
- </Label>
283
+ </Label>{' '}
218
284
  <Label color="cyan" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
219
285
  Cyan label with icon that overflows
286
+ </Label>{' '}
287
+ <Label color="cyan" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
288
+ Cyan link removable (disabled)
289
+ </Label>{' '}
290
+ <Label
291
+ color="cyan"
292
+ isDisabled
293
+ icon={<CubeIcon />}
294
+ onClick={() => logColor('cyan')}
295
+ onClose={() => Function.prototype}
296
+ >
297
+ Cyan clickable removable (disabled)
220
298
  </Label>
221
299
  <br />
222
300
  <br />
@@ -235,15 +313,27 @@ export const LabelFilled: React.FunctionComponent = () => {
235
313
  </Label>
236
314
  <Label color="gold" href="#filled" onClose={() => Function.prototype}>
237
315
  Gold link removable
238
- </Label>
316
+ </Label>{' '}
239
317
  <Label color="gold" onClick={() => logColor('gold')}>
240
318
  Gold clickable
241
319
  </Label>
242
320
  <Label color="gold" onClick={() => logColor('gold')} onClose={() => Function.prototype}>
243
321
  Gold clickable removable
244
- </Label>
322
+ </Label>{' '}
245
323
  <Label color="gold" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
246
324
  Gold label with icon that overflows
325
+ </Label>{' '}
326
+ <Label color="gold" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
327
+ Gold link removable (disabled)
328
+ </Label>{' '}
329
+ <Label
330
+ color="gold"
331
+ isDisabled
332
+ icon={<CubeIcon />}
333
+ onClick={() => logColor('gold')}
334
+ onClose={() => Function.prototype}
335
+ >
336
+ Gold clickable removable (disabled)
247
337
  </Label>
248
338
  <br />
249
339
  <br />
@@ -27,7 +27,7 @@ export const LabelOutline: React.FunctionComponent = () => {
27
27
  </Label>
28
28
  <Label variant="outline" href="#outline" onClose={() => Function.prototype}>
29
29
  Grey link removable
30
- </Label>
30
+ </Label>{' '}
31
31
  <Label variant="outline" onClick={() => logColor('grey')}>
32
32
  Grey clickable
33
33
  </Label>
@@ -36,6 +36,18 @@ export const LabelOutline: React.FunctionComponent = () => {
36
36
  </Label>
37
37
  <Label variant="outline" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
38
38
  Grey label with icon that overflows
39
+ </Label>{' '}
40
+ <Label variant="outline" isDisabled icon={<CubeIcon />} href="#filled" onClose={() => Function.prototype}>
41
+ Grey link removable (disabled)
42
+ </Label>{' '}
43
+ <Label
44
+ variant="outline"
45
+ isDisabled
46
+ icon={<CubeIcon />}
47
+ onClick={() => logColor('grey')}
48
+ onClose={() => Function.prototype}
49
+ >
50
+ Grey clickable removable (disabled)
39
51
  </Label>
40
52
  <br />
41
53
  <br />
@@ -56,7 +68,7 @@ export const LabelOutline: React.FunctionComponent = () => {
56
68
  </Label>
57
69
  <Label variant="outline" color="blue" href="#outline" onClose={() => Function.prototype}>
58
70
  Blue link removable
59
- </Label>
71
+ </Label>{' '}
60
72
  <Label variant="outline" color="blue" onClick={() => logColor('blue')}>
61
73
  Blue clickable
62
74
  </Label>
@@ -65,6 +77,26 @@ export const LabelOutline: React.FunctionComponent = () => {
65
77
  </Label>
66
78
  <Label variant="outline" color="blue" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
67
79
  Blue label with icon that overflows
80
+ </Label>{' '}
81
+ <Label
82
+ variant="outline"
83
+ color="blue"
84
+ isDisabled
85
+ icon={<CubeIcon />}
86
+ href="#filled"
87
+ onClose={() => Function.prototype}
88
+ >
89
+ Blue link removable (disabled)
90
+ </Label>{' '}
91
+ <Label
92
+ variant="outline"
93
+ color="blue"
94
+ isDisabled
95
+ icon={<CubeIcon />}
96
+ onClick={() => logColor('blue')}
97
+ onClose={() => Function.prototype}
98
+ >
99
+ Blue clickable removable (disabled)
68
100
  </Label>
69
101
  <br />
70
102
  <br />
@@ -85,7 +117,7 @@ export const LabelOutline: React.FunctionComponent = () => {
85
117
  </Label>
86
118
  <Label variant="outline" color="green" href="#outline" onClose={() => Function.prototype}>
87
119
  Green link removable
88
- </Label>
120
+ </Label>{' '}
89
121
  <Label variant="outline" color="green" onClick={() => logColor('green')}>
90
122
  Green clickable
91
123
  </Label>
@@ -94,6 +126,26 @@ export const LabelOutline: React.FunctionComponent = () => {
94
126
  </Label>
95
127
  <Label variant="outline" color="green" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
96
128
  Green label with icon that overflows
129
+ </Label>{' '}
130
+ <Label
131
+ variant="outline"
132
+ color="green"
133
+ isDisabled
134
+ icon={<CubeIcon />}
135
+ href="#filled"
136
+ onClose={() => Function.prototype}
137
+ >
138
+ Green link removable (disabled)
139
+ </Label>{' '}
140
+ <Label
141
+ variant="outline"
142
+ color="green"
143
+ isDisabled
144
+ icon={<CubeIcon />}
145
+ onClick={() => logColor('green')}
146
+ onClose={() => Function.prototype}
147
+ >
148
+ Green clickable removable (disabled)
97
149
  </Label>
98
150
  <br />
99
151
  <br />
@@ -114,13 +166,13 @@ export const LabelOutline: React.FunctionComponent = () => {
114
166
  </Label>
115
167
  <Label variant="outline" color="orange" href="#outline" onClose={() => Function.prototype}>
116
168
  Orange link removable
117
- </Label>
169
+ </Label>{' '}
118
170
  <Label variant="outline" color="orange" onClick={() => logColor('orange')}>
119
171
  Orange clickable
120
172
  </Label>
121
173
  <Label variant="outline" color="orange" onClick={() => logColor('orange')} onClose={() => Function.prototype}>
122
174
  Orange clickable removable
123
- </Label>
175
+ </Label>{' '}
124
176
  <Label
125
177
  variant="outline"
126
178
  color="orange"
@@ -129,6 +181,26 @@ export const LabelOutline: React.FunctionComponent = () => {
129
181
  textMaxWidth="16ch"
130
182
  >
131
183
  Orange label with icon that overflows
184
+ </Label>{' '}
185
+ <Label
186
+ variant="outline"
187
+ color="orange"
188
+ isDisabled
189
+ icon={<CubeIcon />}
190
+ href="#filled"
191
+ onClose={() => Function.prototype}
192
+ >
193
+ Orange link removable (disabled)
194
+ </Label>{' '}
195
+ <Label
196
+ variant="outline"
197
+ color="orange"
198
+ isDisabled
199
+ icon={<CubeIcon />}
200
+ onClick={() => logColor('orange')}
201
+ onClose={() => Function.prototype}
202
+ >
203
+ Orange clickable removable (disabled)
132
204
  </Label>
133
205
  <br />
134
206
  <br />
@@ -149,7 +221,7 @@ export const LabelOutline: React.FunctionComponent = () => {
149
221
  </Label>
150
222
  <Label variant="outline" color="red" href="#outline" onClose={() => Function.prototype}>
151
223
  Red link removable
152
- </Label>
224
+ </Label>{' '}
153
225
  <Label variant="outline" color="red" onClick={() => logColor('red')}>
154
226
  Red clickable
155
227
  </Label>
@@ -218,13 +290,13 @@ export const LabelOutline: React.FunctionComponent = () => {
218
290
  </Label>
219
291
  <Label variant="outline" color="purple" href="#outline" onClose={() => Function.prototype}>
220
292
  Purple link removable
221
- </Label>
293
+ </Label>{' '}
222
294
  <Label variant="outline" color="purple" onClick={() => logColor('purple')}>
223
295
  Purple clickable
224
296
  </Label>
225
297
  <Label variant="outline" color="purple" onClick={() => logColor('purple')} onClose={() => Function.prototype}>
226
298
  Purple clickable removable
227
- </Label>
299
+ </Label>{' '}
228
300
  <Label
229
301
  variant="outline"
230
302
  color="purple"
@@ -233,6 +305,26 @@ export const LabelOutline: React.FunctionComponent = () => {
233
305
  textMaxWidth="16ch"
234
306
  >
235
307
  Purple label with icon that overflows
308
+ </Label>{' '}
309
+ <Label
310
+ variant="outline"
311
+ color="purple"
312
+ isDisabled
313
+ icon={<CubeIcon />}
314
+ href="#filled"
315
+ onClose={() => Function.prototype}
316
+ >
317
+ Purple link removable (disabled)
318
+ </Label>{' '}
319
+ <Label
320
+ variant="outline"
321
+ color="purple"
322
+ isDisabled
323
+ icon={<CubeIcon />}
324
+ onClick={() => logColor('purple')}
325
+ onClose={() => Function.prototype}
326
+ >
327
+ Purple clickable removable (disabled)
236
328
  </Label>
237
329
  <br />
238
330
  <br />
@@ -253,7 +345,7 @@ export const LabelOutline: React.FunctionComponent = () => {
253
345
  </Label>
254
346
  <Label variant="outline" color="cyan" href="#outline" onClose={() => Function.prototype}>
255
347
  Cyan link removable
256
- </Label>
348
+ </Label>{' '}
257
349
  <Label variant="outline" color="cyan" onClick={() => logColor('cyan')}>
258
350
  Cyan clickable
259
351
  </Label>
@@ -262,6 +354,26 @@ export const LabelOutline: React.FunctionComponent = () => {
262
354
  </Label>
263
355
  <Label variant="outline" color="cyan" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
264
356
  Cyan label with icon that overflows
357
+ </Label>{' '}
358
+ <Label
359
+ variant="outline"
360
+ color="cyan"
361
+ isDisabled
362
+ icon={<CubeIcon />}
363
+ href="#filled"
364
+ onClose={() => Function.prototype}
365
+ >
366
+ Cyan link removable (disabled)
367
+ </Label>{' '}
368
+ <Label
369
+ variant="outline"
370
+ color="cyan"
371
+ isDisabled
372
+ icon={<CubeIcon />}
373
+ onClick={() => logColor('cyan')}
374
+ onClose={() => Function.prototype}
375
+ >
376
+ Cyan clickable removable (disabled)
265
377
  </Label>
266
378
  <br />
267
379
  <br />
@@ -282,7 +394,7 @@ export const LabelOutline: React.FunctionComponent = () => {
282
394
  </Label>
283
395
  <Label variant="outline" color="gold" href="#outline" onClose={() => Function.prototype}>
284
396
  Gold link removable
285
- </Label>
397
+ </Label>{' '}
286
398
  <Label variant="outline" color="gold" onClick={() => logColor('gold')}>
287
399
  Gold clickable
288
400
  </Label>
@@ -291,6 +403,26 @@ export const LabelOutline: React.FunctionComponent = () => {
291
403
  </Label>
292
404
  <Label variant="outline" color="gold" icon={<CubeIcon />} onClose={() => Function.prototype} textMaxWidth="16ch">
293
405
  Gold label with icon that overflows
406
+ </Label>{' '}
407
+ <Label
408
+ variant="outline"
409
+ color="gold"
410
+ isDisabled
411
+ icon={<CubeIcon />}
412
+ href="#filled"
413
+ onClose={() => Function.prototype}
414
+ >
415
+ Gold link removable (disabled)
416
+ </Label>{' '}
417
+ <Label
418
+ variant="outline"
419
+ color="gold"
420
+ isDisabled
421
+ icon={<CubeIcon />}
422
+ onClick={() => logColor('gold')}
423
+ onClose={() => Function.prototype}
424
+ >
425
+ Gold clickable removable (disabled)
294
426
  </Label>
295
427
  <br />
296
428
  <br />
@@ -156,8 +156,11 @@ class MenuBase extends React.Component<MenuProps, MenuState> {
156
156
  this.setState({ transitionMoveTarget: null });
157
157
  } else {
158
158
  const nextMenu = current.querySelector('#' + this.props.activeMenu) || current || null;
159
- const nextMenuChildren = Array.from(nextMenu.getElementsByTagName('UL')[0].children);
160
-
159
+ const nextMenuLists = nextMenu.getElementsByTagName('UL');
160
+ if (nextMenuLists.length === 0) {
161
+ return;
162
+ }
163
+ const nextMenuChildren = Array.from(nextMenuLists[0].children);
161
164
  if (!this.state.currentDrilldownMenuId || nextMenu.id !== this.state.currentDrilldownMenuId) {
162
165
  this.setState({ currentDrilldownMenuId: nextMenu.id });
163
166
  } else {
@@ -167,7 +170,6 @@ class MenuBase extends React.Component<MenuProps, MenuState> {
167
170
  const nextTarget = nextMenuChildren.filter(
168
171
  (el) => !(el.classList.contains('pf-m-disabled') || el.classList.contains(styles.divider))
169
172
  )[0].firstChild;
170
-
171
173
  (nextTarget as HTMLElement).focus();
172
174
  (nextTarget as HTMLElement).tabIndex = 0;
173
175
  }
@@ -69,8 +69,8 @@ export const MenuContainer: React.FunctionComponent<MenuContainerProps> = ({
69
69
  };
70
70
 
71
71
  const handleClick = (event: MouseEvent) => {
72
- // toggle was clicked open via keyboard, focus on first menu item
73
- if (isOpen && toggleRef.current?.contains(event.target as Node) && event.detail === 0) {
72
+ // toggle was opened, focus on first menu item
73
+ if (isOpen && toggleRef.current?.contains(event.target as Node)) {
74
74
  setTimeout(() => {
75
75
  const firstElement = menuRef?.current?.querySelector(
76
76
  'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
@@ -3,6 +3,15 @@ import styles from '@patternfly/react-styles/css/components/MenuToggle/menu-togg
3
3
  import { css } from '@patternfly/react-styles';
4
4
  import CaretDownIcon from '@patternfly/react-icons/dist/esm/icons/caret-down-icon';
5
5
  import { BadgeProps } from '../Badge';
6
+ import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
7
+ import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';
8
+ import ExclamationTriangleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon';
9
+
10
+ export enum MenuToggleStatus {
11
+ success = 'success',
12
+ danger = 'danger',
13
+ warning = 'warning'
14
+ }
6
15
 
7
16
  export type MenuToggleElement = HTMLDivElement | HTMLButtonElement;
8
17
 
@@ -37,9 +46,12 @@ export interface MenuToggleProps
37
46
  splitButtonOptions?: SplitButtonOptions;
38
47
  /** Variant styles of the menu toggle */
39
48
  variant?: 'default' | 'plain' | 'primary' | 'plainText' | 'secondary' | 'typeahead';
40
- /** Icon or image rendered inside the toggle, before the children content. It is
41
- * recommended to wrap icons in our icon component. For menu toggles that contain only an icon, we
42
- * recommend passing the icon to this prop instead of passing it as children.
49
+ /** @beta Status styles of the menu toggle */
50
+ status?: 'success' | 'warning' | 'danger';
51
+ /** Overrides the status icon */
52
+ statusIcon?: React.ReactNode;
53
+ /** Optional icon or image rendered inside the toggle, before the children content. It is
54
+ * recommended to wrap most basic icons in our icon component.
43
55
  */
44
56
  icon?: React.ReactNode;
45
57
  /** Optional badge rendered inside the toggle, after the children content */
@@ -70,6 +82,8 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
70
82
  isFullWidth,
71
83
  splitButtonOptions,
72
84
  variant,
85
+ status,
86
+ statusIcon,
73
87
  innerRef,
74
88
  onClick,
75
89
  'aria-label': ariaLabel,
@@ -78,8 +92,25 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
78
92
  const isPlain = variant === 'plain';
79
93
  const isPlainText = variant === 'plainText';
80
94
  const isTypeahead = variant === 'typeahead';
95
+
96
+ let _statusIcon = statusIcon;
97
+ if (!statusIcon) {
98
+ switch (status) {
99
+ case MenuToggleStatus.success:
100
+ _statusIcon = <CheckCircleIcon aria-hidden="true" />;
101
+ break;
102
+ case MenuToggleStatus.warning:
103
+ _statusIcon = <ExclamationTriangleIcon aria-hidden="true" />;
104
+ break;
105
+ case MenuToggleStatus.danger:
106
+ _statusIcon = <ExclamationCircleIcon aria-hidden="true" />;
107
+ break;
108
+ }
109
+ }
110
+
81
111
  const toggleControls = (
82
112
  <span className={css(styles.menuToggleControls)}>
113
+ {status !== undefined && <span className={css(styles.menuToggleStatusIcon)}>{_statusIcon}</span>}
83
114
  <span className={css(styles.menuToggleToggleIcon)}>
84
115
  <CaretDownIcon aria-hidden />
85
116
  </span>
@@ -112,6 +143,7 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
112
143
  isExpanded && styles.modifiers.expanded,
113
144
  variant === 'primary' && styles.modifiers.primary,
114
145
  variant === 'secondary' && styles.modifiers.secondary,
146
+ status && styles.modifiers[status],
115
147
  (isPlain || isPlainText) && styles.modifiers.plain,
116
148
  isPlainText && 'pf-m-text',
117
149
  isFullHeight && styles.modifiers.fullHeight,
@@ -154,8 +186,10 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
154
186
  aria-label={ariaLabel}
155
187
  disabled={isDisabled}
156
188
  onClick={onClick}
189
+ {...(children && { style: { display: 'flex', paddingLeft: 'var(--pf-v5-global--spacer--sm)' } })}
157
190
  {...otherProps}
158
191
  >
192
+ {children && <span className={css(styles.menuToggleText)}>{children}</span>}
159
193
  {toggleControls}
160
194
  </button>
161
195
  </div>
@@ -84,7 +84,7 @@ class MenuToggleCheckbox extends React.Component<MenuToggleCheckboxProps, { ouia
84
84
  </span>
85
85
  );
86
86
  return (
87
- <label className={css(styles.check, !children && styles.modifiers.standalone, className)} htmlFor={id}>
87
+ <label className={css(styles.check, !children && styles.modifiers.standalone, className)}>
88
88
  <input
89
89
  className={css(styles.checkInput)}
90
90
  {...(this.calculateChecked() !== undefined && { onChange: this.handleChange })}
@@ -93,7 +93,7 @@ class MenuToggleCheckbox extends React.Component<MenuToggleCheckboxProps, { ouia
93
93
  ref={(elem) => elem && (elem.indeterminate = isChecked === null)}
94
94
  aria-invalid={!isValid}
95
95
  disabled={isDisabled}
96
- {...(defaultChecked !== undefined ? { defaultChecked } : { checked: isChecked })}
96
+ {...(defaultChecked !== undefined ? { defaultChecked } : { checked: this.calculateChecked() })}
97
97
  {...getOUIAProps(
98
98
  MenuToggleCheckbox.displayName,
99
99
  ouiaId !== undefined ? ouiaId : this.state.ouiaStateId,
@@ -53,6 +53,21 @@ describe('menu toggle', () => {
53
53
  expect(asFragment()).toMatchSnapshot();
54
54
  });
55
55
 
56
+ test('shows success status', () => {
57
+ render(<MenuToggle status="success">Toggle</MenuToggle>);
58
+ expect(screen.getByRole('button')).toHaveClass('pf-m-success');
59
+ });
60
+
61
+ test('shows warning status', () => {
62
+ render(<MenuToggle status="warning">Toggle</MenuToggle>);
63
+ expect(screen.getByRole('button')).toHaveClass('pf-m-warning');
64
+ });
65
+
66
+ test('shows danger status', () => {
67
+ render(<MenuToggle status="danger">Toggle</MenuToggle>);
68
+ expect(screen.getByRole('button')).toHaveClass('pf-m-danger');
69
+ });
70
+
56
71
  test('split toggle passes onClick', async () => {
57
72
  const mockClick = jest.fn();
58
73
  const user = userEvent.setup();