@patternfly/react-core 5.2.0-prerelease.9 → 6.0.0-alpha.2

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 (405) hide show
  1. package/CHANGELOG.md +129 -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/Chip/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/DragDrop/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/Text/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/Tile/package.json +1 -1
  76. package/dist/dynamic/components/TimePicker/package.json +1 -1
  77. package/dist/dynamic/components/Timestamp/package.json +1 -1
  78. package/dist/dynamic/components/Title/package.json +1 -1
  79. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  80. package/dist/dynamic/components/Toolbar/package.json +1 -1
  81. package/dist/dynamic/components/Tooltip/package.json +1 -1
  82. package/dist/dynamic/components/TreeView/package.json +1 -1
  83. package/dist/dynamic/components/Truncate/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  85. package/dist/dynamic/components/Wizard/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/package.json +1 -1
  119. package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  120. package/dist/esm/components/CalendarMonth/CalendarMonth.js +15 -39
  121. package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
  122. package/dist/esm/components/Chip/Chip.d.ts.map +1 -1
  123. package/dist/esm/components/Chip/Chip.js +2 -2
  124. package/dist/esm/components/Chip/Chip.js.map +1 -1
  125. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts +1 -1
  126. package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  127. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
  128. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
  129. package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
  130. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
  131. package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
  132. package/dist/esm/components/Drawer/DrawerPanelContent.js +4 -4
  133. package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
  134. package/dist/esm/components/Dropdown/Dropdown.d.ts +2 -0
  135. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  136. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  137. package/dist/esm/components/ExpandableSection/ExpandableSection.js +1 -1
  138. package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
  139. package/dist/esm/components/InputGroup/InputGroup.d.ts.map +1 -1
  140. package/dist/esm/components/InputGroup/InputGroup.js +1 -51
  141. package/dist/esm/components/InputGroup/InputGroup.js.map +1 -1
  142. package/dist/esm/components/Masthead/Masthead.d.ts +0 -2
  143. package/dist/esm/components/Masthead/Masthead.d.ts.map +1 -1
  144. package/dist/esm/components/Masthead/Masthead.js +3 -3
  145. package/dist/esm/components/Masthead/Masthead.js.map +1 -1
  146. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  147. package/dist/esm/components/Menu/Menu.js +2 -1
  148. package/dist/esm/components/Menu/Menu.js.map +1 -1
  149. package/dist/esm/components/Menu/MenuContainer.d.ts +2 -0
  150. package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
  151. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  152. package/dist/esm/components/Nav/NavExpandable.d.ts +3 -3
  153. package/dist/esm/components/Nav/NavExpandable.d.ts.map +1 -1
  154. package/dist/esm/components/Nav/NavExpandable.js +2 -2
  155. package/dist/esm/components/Nav/NavExpandable.js.map +1 -1
  156. package/dist/esm/components/Nav/NavItem.d.ts +2 -0
  157. package/dist/esm/components/Nav/NavItem.d.ts.map +1 -1
  158. package/dist/esm/components/Nav/NavItem.js +2 -2
  159. package/dist/esm/components/Nav/NavItem.js.map +1 -1
  160. package/dist/esm/components/Nav/NavList.js +3 -3
  161. package/dist/esm/components/Nav/NavList.js.map +1 -1
  162. package/dist/esm/components/NotificationBadge/NotificationBadge.js +1 -1
  163. package/dist/esm/components/NotificationBadge/NotificationBadge.js.map +1 -1
  164. package/dist/esm/components/Page/PageSection.d.ts +2 -5
  165. package/dist/esm/components/Page/PageSection.d.ts.map +1 -1
  166. package/dist/esm/components/Page/PageSection.js +1 -7
  167. package/dist/esm/components/Page/PageSection.js.map +1 -1
  168. package/dist/esm/components/Page/PageSidebar.d.ts +0 -2
  169. package/dist/esm/components/Page/PageSidebar.d.ts.map +1 -1
  170. package/dist/esm/components/Page/PageSidebar.js +2 -2
  171. package/dist/esm/components/Page/PageSidebar.js.map +1 -1
  172. package/dist/esm/components/SearchInput/SearchInput.d.ts +2 -0
  173. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  174. package/dist/esm/components/SearchInput/SearchInput.js +2 -2
  175. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  176. package/dist/esm/components/Select/Select.d.ts +2 -0
  177. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  178. package/dist/esm/components/Select/Select.js.map +1 -1
  179. package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
  180. package/dist/esm/components/Slider/Slider.js +2 -1
  181. package/dist/esm/components/Slider/Slider.js.map +1 -1
  182. package/dist/esm/components/Tabs/Tabs.js +3 -3
  183. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  184. package/dist/esm/demos/DashboardWrapper.js +1 -1
  185. package/dist/esm/demos/DashboardWrapper.js.map +1 -1
  186. package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsItem.d.ts +0 -2
  187. package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsItem.d.ts.map +1 -1
  188. package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsItem.js +2 -2
  189. package/dist/esm/deprecated/components/PageHeader/PageHeaderToolsItem.js.map +1 -1
  190. package/dist/esm/helpers/Popper/Popper.d.ts +2 -1
  191. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  192. package/dist/esm/helpers/Popper/Popper.js +7 -16
  193. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  194. package/dist/esm/helpers/datetimeUtils.d.ts +1 -1
  195. package/dist/esm/helpers/datetimeUtils.d.ts.map +1 -1
  196. package/dist/esm/helpers/datetimeUtils.js.map +1 -1
  197. package/dist/esm/helpers/util.d.ts +9 -0
  198. package/dist/esm/helpers/util.d.ts.map +1 -1
  199. package/dist/esm/helpers/util.js +18 -0
  200. package/dist/esm/helpers/util.js.map +1 -1
  201. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  202. package/dist/js/components/CalendarMonth/CalendarMonth.js +15 -39
  203. package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
  204. package/dist/js/components/Chip/Chip.d.ts.map +1 -1
  205. package/dist/js/components/Chip/Chip.js +2 -2
  206. package/dist/js/components/Chip/Chip.js.map +1 -1
  207. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +1 -1
  208. package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
  209. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
  210. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
  211. package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
  212. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
  213. package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
  214. package/dist/js/components/Drawer/DrawerPanelContent.js +3 -3
  215. package/dist/js/components/Drawer/DrawerPanelContent.js.map +1 -1
  216. package/dist/js/components/Dropdown/Dropdown.d.ts +2 -0
  217. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  218. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  219. package/dist/js/components/ExpandableSection/ExpandableSection.js +1 -1
  220. package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
  221. package/dist/js/components/InputGroup/InputGroup.d.ts.map +1 -1
  222. package/dist/js/components/InputGroup/InputGroup.js +1 -51
  223. package/dist/js/components/InputGroup/InputGroup.js.map +1 -1
  224. package/dist/js/components/Masthead/Masthead.d.ts +0 -2
  225. package/dist/js/components/Masthead/Masthead.d.ts.map +1 -1
  226. package/dist/js/components/Masthead/Masthead.js +3 -3
  227. package/dist/js/components/Masthead/Masthead.js.map +1 -1
  228. package/dist/js/components/Menu/Menu.d.ts.map +1 -1
  229. package/dist/js/components/Menu/Menu.js +2 -1
  230. package/dist/js/components/Menu/Menu.js.map +1 -1
  231. package/dist/js/components/Menu/MenuContainer.d.ts +2 -0
  232. package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
  233. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  234. package/dist/js/components/Nav/NavExpandable.d.ts +3 -3
  235. package/dist/js/components/Nav/NavExpandable.d.ts.map +1 -1
  236. package/dist/js/components/Nav/NavExpandable.js +2 -2
  237. package/dist/js/components/Nav/NavExpandable.js.map +1 -1
  238. package/dist/js/components/Nav/NavItem.d.ts +2 -0
  239. package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
  240. package/dist/js/components/Nav/NavItem.js +2 -2
  241. package/dist/js/components/Nav/NavItem.js.map +1 -1
  242. package/dist/js/components/Nav/NavList.js +2 -2
  243. package/dist/js/components/Nav/NavList.js.map +1 -1
  244. package/dist/js/components/NotificationBadge/NotificationBadge.js +1 -1
  245. package/dist/js/components/NotificationBadge/NotificationBadge.js.map +1 -1
  246. package/dist/js/components/Page/PageSection.d.ts +2 -5
  247. package/dist/js/components/Page/PageSection.d.ts.map +1 -1
  248. package/dist/js/components/Page/PageSection.js +1 -7
  249. package/dist/js/components/Page/PageSection.js.map +1 -1
  250. package/dist/js/components/Page/PageSidebar.d.ts +0 -2
  251. package/dist/js/components/Page/PageSidebar.d.ts.map +1 -1
  252. package/dist/js/components/Page/PageSidebar.js +2 -2
  253. package/dist/js/components/Page/PageSidebar.js.map +1 -1
  254. package/dist/js/components/SearchInput/SearchInput.d.ts +2 -0
  255. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  256. package/dist/js/components/SearchInput/SearchInput.js +2 -2
  257. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  258. package/dist/js/components/Select/Select.d.ts +2 -0
  259. package/dist/js/components/Select/Select.d.ts.map +1 -1
  260. package/dist/js/components/Select/Select.js.map +1 -1
  261. package/dist/js/components/Slider/Slider.d.ts.map +1 -1
  262. package/dist/js/components/Slider/Slider.js +2 -1
  263. package/dist/js/components/Slider/Slider.js.map +1 -1
  264. package/dist/js/components/Tabs/Tabs.js +2 -2
  265. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  266. package/dist/js/demos/DashboardWrapper.js +1 -1
  267. package/dist/js/demos/DashboardWrapper.js.map +1 -1
  268. package/dist/js/deprecated/components/PageHeader/PageHeaderToolsItem.d.ts +0 -2
  269. package/dist/js/deprecated/components/PageHeader/PageHeaderToolsItem.d.ts.map +1 -1
  270. package/dist/js/deprecated/components/PageHeader/PageHeaderToolsItem.js +2 -2
  271. package/dist/js/deprecated/components/PageHeader/PageHeaderToolsItem.js.map +1 -1
  272. package/dist/js/helpers/Popper/Popper.d.ts +2 -1
  273. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  274. package/dist/js/helpers/Popper/Popper.js +9 -19
  275. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  276. package/dist/js/helpers/datetimeUtils.d.ts +1 -1
  277. package/dist/js/helpers/datetimeUtils.d.ts.map +1 -1
  278. package/dist/js/helpers/datetimeUtils.js.map +1 -1
  279. package/dist/js/helpers/util.d.ts +9 -0
  280. package/dist/js/helpers/util.d.ts.map +1 -1
  281. package/dist/js/helpers/util.js +20 -1
  282. package/dist/js/helpers/util.js.map +1 -1
  283. package/dist/styles/assets/images/logo__pf--reverse-on-md.svg +1 -1
  284. package/dist/styles/assets/images/pf-c-brand__logo-on-sm.svg +1 -1
  285. package/dist/styles/base-no-reset.css +849 -0
  286. package/dist/styles/base.css +861 -13
  287. package/dist/umd/react-core.min.js +1 -1
  288. package/helpers/package.json +1 -1
  289. package/layouts/package.json +1 -1
  290. package/next/package.json +1 -1
  291. package/package.json +8 -7
  292. package/src/components/CalendarMonth/CalendarMonth.tsx +18 -43
  293. package/src/components/Checkbox/__tests__/Checkbox.test.tsx +223 -69
  294. package/src/components/Checkbox/__tests__/__snapshots__/Checkbox.test.tsx.snap +3 -198
  295. package/src/components/Chip/Chip.tsx +2 -1
  296. package/src/components/Chip/__tests__/Chip.test.tsx +249 -32
  297. package/src/components/Chip/__tests__/ChipGroup.test.tsx +288 -61
  298. package/src/components/Chip/__tests__/__snapshots__/Chip.test.tsx.snap +9 -209
  299. package/src/components/Chip/__tests__/__snapshots__/ChipGroup.test.tsx.snap +2 -313
  300. package/src/components/ClipboardCopy/ClipboardCopy.tsx +1 -1
  301. package/src/components/ClipboardCopy/ClipboardCopyButton.tsx +2 -0
  302. package/src/components/ClipboardCopy/ClipboardCopyToggle.tsx +1 -1
  303. package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +344 -0
  304. package/src/components/ClipboardCopy/__tests__/ClipboardCopyAction.test.tsx +37 -0
  305. package/src/components/ClipboardCopy/__tests__/ClipboardCopyButton.test.tsx +136 -19
  306. package/src/components/ClipboardCopy/__tests__/ClipboardCopyExpanded.test.tsx +71 -14
  307. package/src/components/ClipboardCopy/__tests__/ClipboardCopyToggle.test.tsx +78 -34
  308. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +57 -0
  309. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyAction.test.tsx.snap +11 -0
  310. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyButton.test.tsx.snap +50 -24
  311. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyExpanded.test.tsx.snap +3 -23
  312. package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +5 -6
  313. package/src/components/Drawer/DrawerPanelContent.tsx +4 -4
  314. package/src/components/Dropdown/Dropdown.tsx +2 -0
  315. package/src/components/ExpandableSection/ExpandableSection.tsx +1 -1
  316. package/src/components/InputGroup/InputGroup.tsx +1 -53
  317. package/src/components/InputGroup/__tests__/InputGroup.test.tsx +7 -44
  318. package/src/components/Masthead/Masthead.tsx +0 -5
  319. package/src/components/Masthead/examples/Masthead.md +0 -44
  320. package/src/components/Menu/Menu.tsx +2 -1
  321. package/src/components/Menu/MenuContainer.tsx +2 -0
  322. package/src/components/Nav/NavExpandable.tsx +5 -5
  323. package/src/components/Nav/NavItem.tsx +4 -1
  324. package/src/components/Nav/NavList.tsx +3 -3
  325. package/src/components/Nav/examples/Nav.md +8 -0
  326. package/src/components/Nav/examples/NavExpandableThirdLevel.tsx +1 -1
  327. package/src/components/Nav/examples/NavLinkText.tsx +109 -0
  328. package/src/components/Nav/examples/nav.css +1 -0
  329. package/src/components/NotificationBadge/NotificationBadge.tsx +1 -1
  330. package/src/components/NumberInput/__tests__/NumberInput.test.tsx +0 -1
  331. package/src/components/Page/PageSection.tsx +3 -9
  332. package/src/components/Page/PageSidebar.tsx +0 -4
  333. package/src/components/Page/__tests__/Generated/PageSidebar.test.tsx +1 -1
  334. package/src/components/Page/__tests__/Page.test.tsx +1 -40
  335. package/src/components/Page/__tests__/__snapshots__/Page.test.tsx.snap +0 -195
  336. package/src/components/Page/examples/PageGroupSection.tsx +3 -4
  337. package/src/components/Page/examples/PageHorizontalNav.tsx +3 -4
  338. package/src/components/Page/examples/PageMainSectionPadding.tsx +2 -7
  339. package/src/components/Page/examples/PageMultipleSidebarBody.tsx +3 -4
  340. package/src/components/Page/examples/PageTertiaryNav.tsx +3 -4
  341. package/src/components/Page/examples/PageUncontrolledNav.tsx +3 -4
  342. package/src/components/Page/examples/PageVerticalNav.tsx +3 -4
  343. package/src/components/SearchInput/SearchInput.tsx +5 -1
  344. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +8 -0
  345. package/src/components/Select/Select.tsx +2 -0
  346. package/src/components/Slider/Slider.tsx +2 -1
  347. package/src/components/Tabs/Tabs.tsx +3 -3
  348. package/src/demos/Banner.md +2 -4
  349. package/src/demos/CardView/examples/CardView.tsx +2 -8
  350. package/src/demos/DashboardWrapper.tsx +1 -1
  351. package/src/demos/JumpLinks.md +1 -1
  352. package/src/demos/Nav.md +10 -1673
  353. package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +2 -3
  354. package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +2 -3
  355. package/src/demos/PrimaryDetail.md +4 -7
  356. package/src/demos/Tabs.md +6 -8
  357. package/src/demos/Wizard/WizardDemo.md +6 -761
  358. package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +4 -5
  359. package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +1 -2
  360. package/src/demos/examples/DashboardWrapper.js +127 -0
  361. package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +3 -4
  362. package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +1 -2
  363. package/src/demos/examples/Nav/NavDefault.tsx +97 -0
  364. package/src/demos/examples/Nav/NavDrilldown.tsx +2 -0
  365. package/src/demos/examples/Nav/NavExpandable.tsx +123 -0
  366. package/src/demos/examples/Nav/NavFlyout.tsx +277 -0
  367. package/src/demos/examples/Nav/NavGrouped.tsx +98 -0
  368. package/src/demos/examples/Nav/NavHorizontal.tsx +236 -0
  369. package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +296 -0
  370. package/src/demos/examples/Nav/NavManual.tsx +272 -0
  371. package/src/demos/examples/Nav/NavWithSubnav.tsx +141 -0
  372. package/src/demos/examples/Nav/deprecated/NavLight.tsx +95 -0
  373. package/src/demos/examples/Nav/deprecated/NavTertiary.tsx +91 -0
  374. package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +1 -2
  375. package/src/demos/examples/Page/PageStickySectionGroup.tsx +1 -2
  376. package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +1 -2
  377. package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +1 -2
  378. package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +2 -3
  379. package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +2 -3
  380. package/src/demos/examples/Tabs/ModalTabs.tsx +1 -2
  381. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +2 -2
  382. package/src/demos/examples/Tabs/TabsAndTable.tsx +2 -3
  383. package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -2
  384. package/src/demos/examples/Wizard/InModal.tsx +75 -0
  385. package/src/demos/examples/Wizard/InModalWithDrawer.tsx +115 -0
  386. package/src/demos/examples/Wizard/InModalWithDrawerInformationalStep.tsx +122 -0
  387. package/src/demos/examples/Wizard/InPage.tsx +35 -0
  388. package/src/demos/examples/Wizard/InPageWithDrawer.tsx +195 -0
  389. package/src/demos/examples/Wizard/InPageWithDrawerInformationalStep.tsx +200 -0
  390. package/src/deprecated/components/PageHeader/PageHeaderToolsItem.tsx +0 -4
  391. package/src/deprecated/components/PageHeader/examples/PageVerticalNavUsingPageHeaderComponent.tsx +4 -4
  392. package/src/deprecated/components/PageHeader/tests/PageHeaderToolsItem.test.tsx +1 -3
  393. package/src/deprecated/components/PageHeader/tests/__snapshots__/PageHeaderToolsItem.test.tsx.snap +1 -1
  394. package/src/helpers/Popper/Popper.tsx +10 -19
  395. package/src/helpers/__mocks__/util.ts +2 -0
  396. package/src/helpers/datetimeUtils.ts +1 -1
  397. package/src/helpers/util.ts +22 -0
  398. package/dist/styles/assets/images/pf-c-brand__logo-on-lg-white.svg +0 -32
  399. package/dist/styles/assets/images/pf-c-brand__logo-on-md-white.svg +0 -42
  400. package/dist/styles/assets/images/pf-c-brand__logo-on-sm-white.svg +0 -17
  401. package/dist/styles/assets/images/pf-c-brand__logo-on-xl-white.svg +0 -39
  402. package/dist/styles/assets/images/pf_logo_white.hbs +0 -35
  403. package/dist/styles/assets/images/pf_logo_white.svg +0 -38
  404. package/src/components/ClipboardCopy/__tests__/Generated/ClipboardCopy.test.tsx +0 -40
  405. package/src/components/ClipboardCopy/__tests__/Generated/__snapshots__/ClipboardCopy.test.tsx.snap +0 -55
@@ -0,0 +1,277 @@
1
+ import React from 'react';
2
+ import {
3
+ Avatar,
4
+ Brand,
5
+ Button,
6
+ ButtonVariant,
7
+ Divider,
8
+ Dropdown,
9
+ DropdownGroup,
10
+ DropdownItem,
11
+ DropdownList,
12
+ Masthead,
13
+ MastheadBrand,
14
+ MastheadContent,
15
+ MastheadMain,
16
+ MastheadToggle,
17
+ Menu,
18
+ MenuContent,
19
+ MenuItem,
20
+ MenuList,
21
+ MenuToggle,
22
+ Nav,
23
+ NavItem,
24
+ NavList,
25
+ Page,
26
+ PageSection,
27
+ PageSidebar,
28
+ PageSidebarBody,
29
+ PageToggleButton,
30
+ SkipToContent,
31
+ Toolbar,
32
+ ToolbarContent,
33
+ ToolbarGroup,
34
+ ToolbarItem
35
+ } from '@patternfly/react-core';
36
+ import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
37
+ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
38
+ import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
39
+ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
40
+ import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
41
+ import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
42
+ import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';
43
+ import pfLogo from '@patternfly/react-core/src/demos/assets/pf-logo.svg';
44
+
45
+ export const NavFlyout: React.FunctionComponent = () => {
46
+ const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);
47
+ const [isKebabDropdownOpen, setIsKebabDropdownOpen] = React.useState(false);
48
+ const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = React.useState(false);
49
+ const [isMobileView, setIsMobileView] = React.useState(false);
50
+ const [isSidebarOpenDesktop, setIsSidebarOpenDesktop] = React.useState(true);
51
+ const [isSidebarOpenMobile, setIsSidebarOpenMobile] = React.useState(false);
52
+ const [activeItem, setActiveItem] = React.useState<number | string>(0);
53
+
54
+ const onNavSelect = (
55
+ _event: React.FormEvent<HTMLInputElement>,
56
+ selectedItem: {
57
+ groupId: number | string;
58
+ itemId: number | string;
59
+ to: string;
60
+ }
61
+ ) => setActiveItem(selectedItem.itemId);
62
+
63
+ const onDropdownToggle = () => setIsDropdownOpen((prevState) => !prevState);
64
+ const onDropdownSelect = () => setIsDropdownOpen(false);
65
+ const onKebabDropdownToggle = () => setIsKebabDropdownOpen((prevState) => !prevState);
66
+ const onKebabDropdownSelect = () => setIsKebabDropdownOpen(false);
67
+ const onFullKebabToggle = () => setIsFullKebabDropdownOpen((prevState) => !prevState);
68
+ const onFullKebabSelect = () => setIsFullKebabDropdownOpen(false);
69
+ const onSidebarToggleDesktop = () => setIsSidebarOpenDesktop((prevState) => !prevState);
70
+ const onSidebarToggleMobile = () => setIsSidebarOpenMobile((prevState) => !prevState);
71
+
72
+ interface PageOptions {
73
+ mobileView: boolean;
74
+ windowSize: number;
75
+ }
76
+
77
+ const onPageResize = (_event: MouseEvent | TouchEvent | React.KeyboardEvent, { mobileView }: PageOptions) =>
78
+ setIsMobileView(mobileView);
79
+
80
+ const onMenuSelect = (_event: React.MouseEvent | undefined, itemId: string | number | undefined) => {
81
+ itemId && setActiveItem(itemId);
82
+ };
83
+
84
+ const numFlyouts = 5;
85
+ const FlyoutMenu = ({ depth, children }) => (
86
+ <Menu key={depth} containsFlyout isNavFlyout id={`menu-${depth}`} onSelect={onMenuSelect}>
87
+ <MenuContent>
88
+ <MenuList>
89
+ <MenuItem flyoutMenu={children} itemId={`next-menu-${depth}`}>
90
+ Additional settings
91
+ </MenuItem>
92
+ {[...Array(numFlyouts - depth).keys()].map((j) => (
93
+ <MenuItem key={`${depth}-${j}`} itemId={`${depth}-${j}`} to={`#menu-link-${depth}-${j}`}>
94
+ Settings menu {depth} item {j}
95
+ </MenuItem>
96
+ ))}
97
+ <MenuItem flyoutMenu={children} itemId={`next-menu-2-${depth}`}>
98
+ Additional settings
99
+ </MenuItem>
100
+ </MenuList>
101
+ </MenuContent>
102
+ </Menu>
103
+ );
104
+ let curFlyout = <FlyoutMenu depth={1}>{}</FlyoutMenu>;
105
+ for (let i = 2; i < numFlyouts - 1; i++) {
106
+ curFlyout = <FlyoutMenu depth={i}>{curFlyout}</FlyoutMenu>;
107
+ }
108
+
109
+ const kebabDropdownItems = (
110
+ <>
111
+ <DropdownItem>
112
+ <CogIcon /> Settings
113
+ </DropdownItem>
114
+ <DropdownItem>
115
+ <HelpIcon /> Help
116
+ </DropdownItem>
117
+ </>
118
+ );
119
+ const userDropdownItems = (
120
+ <>
121
+ <DropdownItem key="group 2 profile">My profile</DropdownItem>
122
+ <DropdownItem key="group 2 user">User management</DropdownItem>
123
+ <DropdownItem key="group 2 logout">Logout</DropdownItem>
124
+ </>
125
+ );
126
+
127
+ const headerToolbar = (
128
+ <Toolbar id="toolbar" isFullHeight isStatic>
129
+ <ToolbarContent>
130
+ <ToolbarGroup
131
+ variant="icon-button-group"
132
+ align={{ default: 'alignRight' }}
133
+ spacer={{ default: 'spacerNone', md: 'spacerMd' }}
134
+ >
135
+ <ToolbarItem>
136
+ <Button aria-label="Notifications" variant={ButtonVariant.plain} icon={<BellIcon />} onClick={() => {}} />
137
+ </ToolbarItem>
138
+ <ToolbarGroup variant="icon-button-group" visibility={{ default: 'hidden', lg: 'visible' }}>
139
+ <ToolbarItem>
140
+ <Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
141
+ </ToolbarItem>
142
+ <ToolbarItem>
143
+ <Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
144
+ </ToolbarItem>
145
+ </ToolbarGroup>
146
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
147
+ <Dropdown
148
+ isOpen={isKebabDropdownOpen}
149
+ onSelect={onKebabDropdownSelect}
150
+ onOpenChange={setIsKebabDropdownOpen}
151
+ popperProps={{ position: 'right' }}
152
+ toggle={(toggleRef) => (
153
+ <MenuToggle
154
+ ref={toggleRef}
155
+ isExpanded={isKebabDropdownOpen}
156
+ onClick={onKebabDropdownToggle}
157
+ variant="plain"
158
+ aria-label="Settings and help"
159
+ >
160
+ <EllipsisVIcon aria-hidden="true" />
161
+ </MenuToggle>
162
+ )}
163
+ >
164
+ <DropdownList>{kebabDropdownItems}</DropdownList>
165
+ </Dropdown>
166
+ </ToolbarItem>
167
+ <ToolbarItem visibility={{ md: 'hidden' }}>
168
+ <Dropdown
169
+ isOpen={isFullKebabDropdownOpen}
170
+ onSelect={onFullKebabSelect}
171
+ onOpenChange={setIsFullKebabDropdownOpen}
172
+ popperProps={{ position: 'right' }}
173
+ toggle={(toggleRef) => (
174
+ <MenuToggle
175
+ ref={toggleRef}
176
+ isExpanded={isFullKebabDropdownOpen}
177
+ onClick={onFullKebabToggle}
178
+ variant="plain"
179
+ aria-label="Toolbar menu"
180
+ >
181
+ <EllipsisVIcon aria-hidden="true" />
182
+ </MenuToggle>
183
+ )}
184
+ >
185
+ <DropdownGroup key="group 2" aria-label="User actions">
186
+ <DropdownList>{userDropdownItems}</DropdownList>
187
+ </DropdownGroup>
188
+ <Divider />
189
+ <DropdownList>{kebabDropdownItems}</DropdownList>
190
+ </Dropdown>
191
+ </ToolbarItem>
192
+ </ToolbarGroup>
193
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>
194
+ <Dropdown
195
+ isOpen={isDropdownOpen}
196
+ onSelect={onDropdownSelect}
197
+ onOpenChange={setIsDropdownOpen}
198
+ popperProps={{ position: 'right' }}
199
+ toggle={(toggleRef) => (
200
+ <MenuToggle
201
+ ref={toggleRef}
202
+ isExpanded={isDropdownOpen}
203
+ onClick={onDropdownToggle}
204
+ icon={<Avatar src={imgAvatar} alt="" />}
205
+ isFullHeight
206
+ >
207
+ Ned Username
208
+ </MenuToggle>
209
+ )}
210
+ >
211
+ <DropdownList>{userDropdownItems}</DropdownList>
212
+ </Dropdown>
213
+ </ToolbarItem>
214
+ </ToolbarContent>
215
+ </Toolbar>
216
+ );
217
+
218
+ const Header = (
219
+ <Masthead>
220
+ <MastheadToggle>
221
+ <PageToggleButton
222
+ onSidebarToggle={isMobileView ? onSidebarToggleMobile : onSidebarToggleDesktop}
223
+ variant="plain"
224
+ aria-label="Global navigation"
225
+ >
226
+ <BarsIcon />
227
+ </PageToggleButton>
228
+ </MastheadToggle>
229
+ <MastheadMain>
230
+ <MastheadBrand>
231
+ <Brand src={pfLogo} alt="PatternFly" heights={{ default: '36px' }} />
232
+ </MastheadBrand>
233
+ </MastheadMain>
234
+ <MastheadContent>{headerToolbar}</MastheadContent>
235
+ </Masthead>
236
+ );
237
+
238
+ const isSidebarOpen = isMobileView ? isSidebarOpenMobile : isSidebarOpenDesktop;
239
+
240
+ const Sidebar = (
241
+ <PageSidebar isSidebarOpen={isSidebarOpen} style={isSidebarOpen ? { overflow: 'visible' } : {}}>
242
+ <PageSidebarBody>
243
+ <Nav onSelect={onNavSelect}>
244
+ <NavList>
245
+ {/* Preventing default click behavior on each NavItem for demo purposes only */}
246
+ <NavItem preventDefault id="flyout-link1" to="#flyout-link1" itemId={0} isActive={activeItem === 0}>
247
+ System Panel
248
+ </NavItem>
249
+ <NavItem preventDefault flyout={curFlyout} id="flyout-link2" itemId={1} isActive={activeItem === 1}>
250
+ Settings
251
+ </NavItem>
252
+ <NavItem preventDefault id="flyout-link3" to="#flyout-link3" itemId={2} isActive={activeItem === 2}>
253
+ Authentication
254
+ </NavItem>
255
+ </NavList>
256
+ </Nav>
257
+ </PageSidebarBody>
258
+ </PageSidebar>
259
+ );
260
+
261
+ const pageId = 'main-content-page-layout-flyout-nav';
262
+ const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to Content</SkipToContent>;
263
+
264
+ return (
265
+ <Page
266
+ header={Header}
267
+ sidebar={Sidebar}
268
+ onPageResize={onPageResize}
269
+ skipToContent={PageSkipToContent}
270
+ mainContainerId={pageId}
271
+ >
272
+ <PageSection>Section 1</PageSection>
273
+ <PageSection>Section 2</PageSection>
274
+ <PageSection>Section 3</PageSection>
275
+ </Page>
276
+ );
277
+ };
@@ -0,0 +1,98 @@
1
+ import React from 'react';
2
+ import {
3
+ Nav,
4
+ NavGroup,
5
+ NavItem,
6
+ Page,
7
+ PageSection,
8
+ PageSidebar,
9
+ PageSidebarBody,
10
+ SkipToContent,
11
+ TextContent,
12
+ Text
13
+ } from '@patternfly/react-core';
14
+ import { DashboardHeader } from '@patternfly/react-core/src/demos/DashboardHeader';
15
+
16
+ export const NavGrouped: React.FunctionComponent = () => {
17
+ const [activeItem, setActiveItem] = React.useState<number | string>('grp-1_itm-1');
18
+
19
+ const onNavSelect = (
20
+ _event: React.FormEvent<HTMLInputElement>,
21
+ selectedItem: {
22
+ groupId: number | string;
23
+ itemId: number | string;
24
+ to: string;
25
+ }
26
+ ) => setActiveItem(selectedItem.itemId);
27
+
28
+ const PageNav = (
29
+ <Nav onSelect={onNavSelect} aria-label="Nav">
30
+ <NavGroup title="System Panel">
31
+ {/* Preventing default click behavior on each NavItem for demo purposes only */}
32
+ <NavItem preventDefault itemId="grp-1_itm-1" isActive={activeItem === 'grp-1_itm-1'} to="#">
33
+ Overview
34
+ </NavItem>
35
+ <NavItem preventDefault itemId="grp-1_itm-2" isActive={activeItem === 'grp-1_itm-2'} to="#">
36
+ Resource Usage
37
+ </NavItem>
38
+ <NavItem preventDefault itemId="grp-1_itm-3" isActive={activeItem === 'grp-1_itm-3'} to="#">
39
+ Hypervisors
40
+ </NavItem>
41
+ <NavItem preventDefault itemId="grp-1_itm-4" isActive={activeItem === 'grp-1_itm-4'} to="#">
42
+ Instances
43
+ </NavItem>
44
+ <NavItem preventDefault itemId="grp-1_itm-5" isActive={activeItem === 'grp-1_itm-5'} to="#">
45
+ Volumes
46
+ </NavItem>
47
+ <NavItem preventDefault itemId="grp-1_itm-6" isActive={activeItem === 'grp-1_itm-6'} to="#">
48
+ Network
49
+ </NavItem>
50
+ </NavGroup>
51
+ <NavGroup title="Policy">
52
+ <NavItem preventDefault itemId="grp-2_itm-1" isActive={activeItem === 'grp-2_itm-1'} to="#">
53
+ Hosts
54
+ </NavItem>
55
+ <NavItem preventDefault itemId="grp-2_itm-2" isActive={activeItem === 'grp-2_itm-2'} to="#">
56
+ Virtual Machines
57
+ </NavItem>
58
+ <NavItem preventDefault itemId="grp-2_itm-3" isActive={activeItem === 'grp-2_itm-3'} to="#">
59
+ Storage
60
+ </NavItem>
61
+ </NavGroup>
62
+ </Nav>
63
+ );
64
+
65
+ const Sidebar = (
66
+ <PageSidebar>
67
+ <PageSidebarBody>{PageNav}</PageSidebarBody>
68
+ </PageSidebar>
69
+ );
70
+ const pageId = 'main-content-page-layout-group-nav';
71
+ const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to Content</SkipToContent>;
72
+
73
+ return (
74
+ <>
75
+ <Page
76
+ header={<DashboardHeader />}
77
+ sidebar={Sidebar}
78
+ isManagedSidebar
79
+ skipToContent={PageSkipToContent}
80
+ mainContainerId={pageId}
81
+ >
82
+ <PageSection>
83
+ <TextContent>
84
+ <Text component="h1">Main title</Text>
85
+ <Text component="p">
86
+ Body text should be Overpass Regular at 16px. It should have leading of 24px because <br />
87
+ of its relative line height of 1.5.
88
+ </Text>
89
+ </TextContent>
90
+ </PageSection>
91
+ <PageSection>Section 1</PageSection>
92
+ <PageSection>Section 2</PageSection>
93
+ <PageSection>Section 3</PageSection>
94
+ <PageSection>Content</PageSection>
95
+ </Page>
96
+ </>
97
+ );
98
+ };
@@ -0,0 +1,236 @@
1
+ import React from 'react';
2
+ import {
3
+ Avatar,
4
+ Brand,
5
+ Button,
6
+ ButtonVariant,
7
+ Card,
8
+ CardBody,
9
+ Divider,
10
+ Dropdown,
11
+ DropdownGroup,
12
+ DropdownItem,
13
+ DropdownList,
14
+ Gallery,
15
+ GalleryItem,
16
+ Masthead,
17
+ MastheadMain,
18
+ MastheadBrand,
19
+ MastheadContent,
20
+ MenuToggle,
21
+ Nav,
22
+ NavItem,
23
+ NavList,
24
+ Page,
25
+ PageSection,
26
+ SkipToContent,
27
+ TextContent,
28
+ Text,
29
+ Toolbar,
30
+ ToolbarContent,
31
+ ToolbarGroup,
32
+ ToolbarItem
33
+ } from '@patternfly/react-core';
34
+ import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
35
+ import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
36
+ import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
37
+ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
38
+ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
39
+ import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';
40
+ import pfLogo from '@patternfly/react-core/src/demos/assets/pf-logo.svg';
41
+ import { DashboardBreadcrumb } from '@patternfly/react-core/src/demos/DashboardWrapper';
42
+
43
+ export const NavHorizontal: React.FunctionComponent = () => {
44
+ const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);
45
+ const [isKebabDropdownOpen, setIsKebabDropdownOpen] = React.useState(false);
46
+ const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = React.useState(false);
47
+ const [activeItem, setActiveItem] = React.useState<string | number>(0);
48
+
49
+ const onNavSelect = (
50
+ _event: React.FormEvent<HTMLInputElement>,
51
+ selectedItem: {
52
+ groupId: number | string;
53
+ itemId: number | string;
54
+ to: string;
55
+ }
56
+ ) => setActiveItem(selectedItem.itemId);
57
+
58
+ const onDropdownToggle = () => setIsDropdownOpen((prevState) => !prevState);
59
+ const onDropdownSelect = () => setIsDropdownOpen(false);
60
+ const onKebabDropdownToggle = () => setIsKebabDropdownOpen((prevState) => !prevState);
61
+ const onKebabDropdownSelect = () => setIsKebabDropdownOpen(false);
62
+ const onFullKebabToggle = () => setIsFullKebabDropdownOpen((prevState) => !prevState);
63
+ const onFullKebabSelect = () => setIsFullKebabDropdownOpen(false);
64
+
65
+ const PageNav = (
66
+ <Nav onSelect={onNavSelect} aria-label="Nav" variant="horizontal">
67
+ <NavList>
68
+ {/* Preventing default click behavior on each NavItem for demo purposes only */}
69
+ <NavItem preventDefault itemId={0} isActive={activeItem === 0} to="#">
70
+ System Panel
71
+ </NavItem>
72
+ <NavItem preventDefault itemId={1} isActive={activeItem === 1} to="#">
73
+ Policy
74
+ </NavItem>
75
+ <NavItem preventDefault itemId={2} isActive={activeItem === 2} to="#">
76
+ Authentication
77
+ </NavItem>
78
+ <NavItem preventDefault itemId={3} isActive={activeItem === 3} to="#">
79
+ Network Services
80
+ </NavItem>
81
+ <NavItem preventDefault itemId={4} isActive={activeItem === 4} to="#">
82
+ Server
83
+ </NavItem>
84
+ </NavList>
85
+ </Nav>
86
+ );
87
+ const kebabDropdownItems = (
88
+ <>
89
+ <DropdownItem>
90
+ <CogIcon /> Settings
91
+ </DropdownItem>
92
+ <DropdownItem>
93
+ <HelpIcon /> Help
94
+ </DropdownItem>
95
+ </>
96
+ );
97
+ const userDropdownItems = (
98
+ <>
99
+ <DropdownItem key="group 2 profile">My profile</DropdownItem>
100
+ <DropdownItem key="group 2 user">User management</DropdownItem>
101
+ <DropdownItem key="group 2 logout">Logout</DropdownItem>
102
+ </>
103
+ );
104
+
105
+ const headerToolbar = (
106
+ <Toolbar id="toolbar" isFullHeight isStatic>
107
+ <ToolbarContent>
108
+ <ToolbarItem isOverflowContainer>{PageNav}</ToolbarItem>
109
+ <ToolbarGroup
110
+ variant="icon-button-group"
111
+ align={{ default: 'alignRight' }}
112
+ spacer={{ default: 'spacerNone', md: 'spacerMd' }}
113
+ >
114
+ <ToolbarItem>
115
+ <Button aria-label="Notifications" variant={ButtonVariant.plain} icon={<BellIcon />} onClick={() => {}} />
116
+ </ToolbarItem>
117
+ <ToolbarGroup variant="icon-button-group" visibility={{ default: 'hidden', lg: 'visible' }}>
118
+ <ToolbarItem>
119
+ <Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
120
+ </ToolbarItem>
121
+ <ToolbarItem>
122
+ <Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
123
+ </ToolbarItem>
124
+ </ToolbarGroup>
125
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
126
+ <Dropdown
127
+ isOpen={isKebabDropdownOpen}
128
+ onSelect={onKebabDropdownSelect}
129
+ onOpenChange={setIsKebabDropdownOpen}
130
+ popperProps={{ position: 'right' }}
131
+ toggle={(toggleRef) => (
132
+ <MenuToggle
133
+ ref={toggleRef}
134
+ isExpanded={isKebabDropdownOpen}
135
+ onClick={onKebabDropdownToggle}
136
+ variant="plain"
137
+ aria-label="Settings and help"
138
+ >
139
+ <EllipsisVIcon aria-hidden="true" />
140
+ </MenuToggle>
141
+ )}
142
+ >
143
+ <DropdownList>{kebabDropdownItems}</DropdownList>
144
+ </Dropdown>
145
+ </ToolbarItem>
146
+ <ToolbarItem visibility={{ md: 'hidden' }}>
147
+ <Dropdown
148
+ isOpen={isFullKebabDropdownOpen}
149
+ onSelect={onFullKebabSelect}
150
+ onOpenChange={setIsFullKebabDropdownOpen}
151
+ popperProps={{ position: 'right' }}
152
+ toggle={(toggleRef) => (
153
+ <MenuToggle
154
+ ref={toggleRef}
155
+ isExpanded={isFullKebabDropdownOpen}
156
+ onClick={onFullKebabToggle}
157
+ variant="plain"
158
+ aria-label="Toolbar menu"
159
+ >
160
+ <EllipsisVIcon aria-hidden="true" />
161
+ </MenuToggle>
162
+ )}
163
+ >
164
+ <DropdownGroup key="group 2" aria-label="User actions">
165
+ <DropdownList>{userDropdownItems}</DropdownList>
166
+ </DropdownGroup>
167
+ <Divider />
168
+ <DropdownList>{kebabDropdownItems}</DropdownList>
169
+ </Dropdown>
170
+ </ToolbarItem>
171
+ </ToolbarGroup>
172
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>
173
+ <Dropdown
174
+ isOpen={isDropdownOpen}
175
+ onSelect={onDropdownSelect}
176
+ onOpenChange={setIsDropdownOpen}
177
+ popperProps={{ position: 'right' }}
178
+ toggle={(toggleRef) => (
179
+ <MenuToggle
180
+ ref={toggleRef}
181
+ isExpanded={isDropdownOpen}
182
+ onClick={onDropdownToggle}
183
+ icon={<Avatar src={imgAvatar} alt="" />}
184
+ isFullHeight
185
+ >
186
+ Ned Username
187
+ </MenuToggle>
188
+ )}
189
+ >
190
+ <DropdownList>{userDropdownItems}</DropdownList>
191
+ </Dropdown>
192
+ </ToolbarItem>
193
+ </ToolbarContent>
194
+ </Toolbar>
195
+ );
196
+ const Header = (
197
+ <Masthead>
198
+ <MastheadMain>
199
+ <MastheadBrand>
200
+ <Brand src={pfLogo} alt="PatternFly" heights={{ default: '36px' }} />
201
+ </MastheadBrand>
202
+ </MastheadMain>
203
+ <MastheadContent>{headerToolbar}</MastheadContent>
204
+ </Masthead>
205
+ );
206
+
207
+ const pageId = 'main-content-page-layout-horizontal-nav';
208
+ const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
209
+
210
+ return (
211
+ <React.Fragment>
212
+ <Page header={Header} skipToContent={PageSkipToContent} breadcrumb={DashboardBreadcrumb} mainContainerId={pageId}>
213
+ <PageSection>
214
+ <TextContent>
215
+ <Text component="h1">Main title</Text>
216
+ <Text component="p">
217
+ Body text should be Overpass Regular at 16px. It should have leading of 24px because <br />
218
+ of its relative line height of 1.5.
219
+ </Text>
220
+ </TextContent>
221
+ </PageSection>
222
+ <PageSection>
223
+ <Gallery hasGutter>
224
+ {Array.from({ length: 10 }, (_value: any, index: React.Key) => (
225
+ <GalleryItem key={index}>
226
+ <Card>
227
+ <CardBody>This is a card</CardBody>
228
+ </Card>
229
+ </GalleryItem>
230
+ ))}
231
+ </Gallery>
232
+ </PageSection>
233
+ </Page>
234
+ </React.Fragment>
235
+ );
236
+ };