@patternfly/react-core 4.243.1 → 4.244.0

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 (254) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/esm/components/Alert/Alert.d.ts +41 -34
  3. package/dist/esm/components/Alert/Alert.d.ts.map +1 -1
  4. package/dist/esm/components/Alert/Alert.js.map +1 -1
  5. package/dist/esm/components/Alert/AlertActionCloseButton.d.ts +8 -5
  6. package/dist/esm/components/Alert/AlertActionCloseButton.d.ts.map +1 -1
  7. package/dist/esm/components/Alert/AlertActionCloseButton.js.map +1 -1
  8. package/dist/esm/components/Alert/AlertActionLink.d.ts +5 -2
  9. package/dist/esm/components/Alert/AlertActionLink.d.ts.map +1 -1
  10. package/dist/esm/components/Alert/AlertActionLink.js.map +1 -1
  11. package/dist/esm/components/Alert/AlertIcon.d.ts +4 -4
  12. package/dist/esm/components/Alert/AlertIcon.d.ts.map +1 -1
  13. package/dist/esm/components/Alert/AlertToggleExpandButton.d.ts +5 -5
  14. package/dist/esm/components/Alert/AlertToggleExpandButton.d.ts.map +1 -1
  15. package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts +34 -28
  16. package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  17. package/dist/esm/components/CalendarMonth/CalendarMonth.js +1 -0
  18. package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
  19. package/dist/esm/components/DatePicker/DatePicker.d.ts +43 -36
  20. package/dist/esm/components/DatePicker/DatePicker.d.ts.map +1 -1
  21. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  22. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts +34 -24
  23. package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  24. package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
  25. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts +10 -5
  26. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  27. package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  28. package/dist/esm/components/FileUpload/FileUpload.d.ts +53 -47
  29. package/dist/esm/components/FileUpload/FileUpload.d.ts.map +1 -1
  30. package/dist/esm/components/FileUpload/FileUpload.js.map +1 -1
  31. package/dist/esm/components/FileUpload/FileUploadField.d.ts +51 -46
  32. package/dist/esm/components/FileUpload/FileUploadField.d.ts.map +1 -1
  33. package/dist/esm/components/FileUpload/FileUploadField.js.map +1 -1
  34. package/dist/esm/components/Modal/Modal.d.ts +57 -48
  35. package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
  36. package/dist/esm/components/Modal/Modal.js.map +1 -1
  37. package/dist/esm/components/Modal/ModalBox.d.ts +12 -12
  38. package/dist/esm/components/Modal/ModalBox.d.ts.map +1 -1
  39. package/dist/esm/components/Modal/ModalBoxBody.d.ts +2 -2
  40. package/dist/esm/components/Modal/ModalBoxBody.d.ts.map +1 -1
  41. package/dist/esm/components/Modal/ModalBoxCloseButton.d.ts +2 -2
  42. package/dist/esm/components/Modal/ModalBoxCloseButton.d.ts.map +1 -1
  43. package/dist/esm/components/Modal/ModalBoxDescription.d.ts +3 -3
  44. package/dist/esm/components/Modal/ModalBoxDescription.d.ts.map +1 -1
  45. package/dist/esm/components/Modal/ModalBoxFooter.d.ts +2 -2
  46. package/dist/esm/components/Modal/ModalBoxFooter.d.ts.map +1 -1
  47. package/dist/esm/components/Modal/ModalBoxHeader.d.ts +3 -3
  48. package/dist/esm/components/Modal/ModalBoxHeader.d.ts.map +1 -1
  49. package/dist/esm/components/Modal/ModalBoxTitle.d.ts +8 -9
  50. package/dist/esm/components/Modal/ModalBoxTitle.d.ts.map +1 -1
  51. package/dist/esm/components/Modal/ModalBoxTitle.js.map +1 -1
  52. package/dist/esm/components/Modal/ModalContent.d.ts +56 -48
  53. package/dist/esm/components/Modal/ModalContent.d.ts.map +1 -1
  54. package/dist/esm/components/Modal/ModalContent.js.map +1 -1
  55. package/dist/esm/components/NotificationBadge/NotificationBadge.d.ts +17 -13
  56. package/dist/esm/components/NotificationBadge/NotificationBadge.d.ts.map +1 -1
  57. package/dist/esm/components/NotificationBadge/NotificationBadge.js +3 -3
  58. package/dist/esm/components/NotificationBadge/NotificationBadge.js.map +1 -1
  59. package/dist/esm/components/Pagination/Navigation.d.ts +33 -33
  60. package/dist/esm/components/Pagination/Navigation.d.ts.map +1 -1
  61. package/dist/esm/components/Pagination/OptionsToggle.d.ts +27 -26
  62. package/dist/esm/components/Pagination/OptionsToggle.d.ts.map +1 -1
  63. package/dist/esm/components/Pagination/OptionsToggle.js.map +1 -1
  64. package/dist/esm/components/Pagination/Pagination.d.ts +76 -65
  65. package/dist/esm/components/Pagination/Pagination.d.ts.map +1 -1
  66. package/dist/esm/components/Pagination/Pagination.js +1 -1
  67. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  68. package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts +22 -18
  69. package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  70. package/dist/esm/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  71. package/dist/esm/components/Pagination/ToggleTemplate.d.ts +3 -0
  72. package/dist/esm/components/Pagination/ToggleTemplate.d.ts.map +1 -1
  73. package/dist/esm/components/Pagination/ToggleTemplate.js.map +1 -1
  74. package/dist/esm/components/Popover/Popover.d.ts +88 -73
  75. package/dist/esm/components/Popover/Popover.d.ts.map +1 -1
  76. package/dist/esm/components/Popover/Popover.js.map +1 -1
  77. package/dist/esm/components/SearchInput/AdvancedSearchMenu.d.ts +27 -26
  78. package/dist/esm/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
  79. package/dist/esm/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
  80. package/dist/esm/components/SearchInput/SearchInput.d.ts +71 -60
  81. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  82. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  83. package/dist/esm/components/Slider/Slider.d.ts +45 -39
  84. package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
  85. package/dist/esm/components/Slider/Slider.js.map +1 -1
  86. package/dist/esm/components/Slider/SliderStep.d.ts +10 -10
  87. package/dist/esm/components/Slider/SliderStep.d.ts.map +1 -1
  88. package/dist/esm/components/TreeView/TreeView.d.ts +65 -53
  89. package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
  90. package/dist/esm/components/TreeView/TreeView.js.map +1 -1
  91. package/dist/esm/components/TreeView/TreeViewList.d.ts +4 -4
  92. package/dist/esm/components/TreeView/TreeViewList.d.ts.map +1 -1
  93. package/dist/esm/components/TreeView/TreeViewListItem.d.ts +46 -39
  94. package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  95. package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
  96. package/dist/esm/components/TreeView/TreeViewRoot.d.ts +4 -4
  97. package/dist/esm/components/TreeView/TreeViewRoot.d.ts.map +1 -1
  98. package/dist/esm/components/TreeView/TreeViewSearch.d.ts +11 -8
  99. package/dist/esm/components/TreeView/TreeViewSearch.d.ts.map +1 -1
  100. package/dist/esm/components/TreeView/TreeViewSearch.js.map +1 -1
  101. package/dist/esm/helpers/Popper/Popper.js +8 -8
  102. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  103. package/dist/js/components/Alert/Alert.d.ts +41 -34
  104. package/dist/js/components/Alert/Alert.d.ts.map +1 -1
  105. package/dist/js/components/Alert/Alert.js.map +1 -1
  106. package/dist/js/components/Alert/AlertActionCloseButton.d.ts +8 -5
  107. package/dist/js/components/Alert/AlertActionCloseButton.d.ts.map +1 -1
  108. package/dist/js/components/Alert/AlertActionCloseButton.js.map +1 -1
  109. package/dist/js/components/Alert/AlertActionLink.d.ts +5 -2
  110. package/dist/js/components/Alert/AlertActionLink.d.ts.map +1 -1
  111. package/dist/js/components/Alert/AlertActionLink.js.map +1 -1
  112. package/dist/js/components/Alert/AlertIcon.d.ts +4 -4
  113. package/dist/js/components/Alert/AlertIcon.d.ts.map +1 -1
  114. package/dist/js/components/Alert/AlertToggleExpandButton.d.ts +5 -5
  115. package/dist/js/components/Alert/AlertToggleExpandButton.d.ts.map +1 -1
  116. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts +34 -28
  117. package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
  118. package/dist/js/components/CalendarMonth/CalendarMonth.js +1 -0
  119. package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
  120. package/dist/js/components/DatePicker/DatePicker.d.ts +43 -36
  121. package/dist/js/components/DatePicker/DatePicker.d.ts.map +1 -1
  122. package/dist/js/components/DatePicker/DatePicker.js.map +1 -1
  123. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +34 -24
  124. package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
  125. package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
  126. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts +10 -5
  127. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
  128. package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
  129. package/dist/js/components/FileUpload/FileUpload.d.ts +53 -47
  130. package/dist/js/components/FileUpload/FileUpload.d.ts.map +1 -1
  131. package/dist/js/components/FileUpload/FileUpload.js.map +1 -1
  132. package/dist/js/components/FileUpload/FileUploadField.d.ts +51 -46
  133. package/dist/js/components/FileUpload/FileUploadField.d.ts.map +1 -1
  134. package/dist/js/components/FileUpload/FileUploadField.js.map +1 -1
  135. package/dist/js/components/Modal/Modal.d.ts +57 -48
  136. package/dist/js/components/Modal/Modal.d.ts.map +1 -1
  137. package/dist/js/components/Modal/Modal.js.map +1 -1
  138. package/dist/js/components/Modal/ModalBox.d.ts +12 -12
  139. package/dist/js/components/Modal/ModalBox.d.ts.map +1 -1
  140. package/dist/js/components/Modal/ModalBoxBody.d.ts +2 -2
  141. package/dist/js/components/Modal/ModalBoxBody.d.ts.map +1 -1
  142. package/dist/js/components/Modal/ModalBoxCloseButton.d.ts +2 -2
  143. package/dist/js/components/Modal/ModalBoxCloseButton.d.ts.map +1 -1
  144. package/dist/js/components/Modal/ModalBoxDescription.d.ts +3 -3
  145. package/dist/js/components/Modal/ModalBoxDescription.d.ts.map +1 -1
  146. package/dist/js/components/Modal/ModalBoxFooter.d.ts +2 -2
  147. package/dist/js/components/Modal/ModalBoxFooter.d.ts.map +1 -1
  148. package/dist/js/components/Modal/ModalBoxHeader.d.ts +3 -3
  149. package/dist/js/components/Modal/ModalBoxHeader.d.ts.map +1 -1
  150. package/dist/js/components/Modal/ModalBoxTitle.d.ts +8 -9
  151. package/dist/js/components/Modal/ModalBoxTitle.d.ts.map +1 -1
  152. package/dist/js/components/Modal/ModalBoxTitle.js.map +1 -1
  153. package/dist/js/components/Modal/ModalContent.d.ts +56 -48
  154. package/dist/js/components/Modal/ModalContent.d.ts.map +1 -1
  155. package/dist/js/components/Modal/ModalContent.js.map +1 -1
  156. package/dist/js/components/NotificationBadge/NotificationBadge.d.ts +17 -13
  157. package/dist/js/components/NotificationBadge/NotificationBadge.d.ts.map +1 -1
  158. package/dist/js/components/NotificationBadge/NotificationBadge.js +3 -3
  159. package/dist/js/components/NotificationBadge/NotificationBadge.js.map +1 -1
  160. package/dist/js/components/Pagination/Navigation.d.ts +33 -33
  161. package/dist/js/components/Pagination/Navigation.d.ts.map +1 -1
  162. package/dist/js/components/Pagination/OptionsToggle.d.ts +27 -26
  163. package/dist/js/components/Pagination/OptionsToggle.d.ts.map +1 -1
  164. package/dist/js/components/Pagination/OptionsToggle.js.map +1 -1
  165. package/dist/js/components/Pagination/Pagination.d.ts +76 -65
  166. package/dist/js/components/Pagination/Pagination.d.ts.map +1 -1
  167. package/dist/js/components/Pagination/Pagination.js +1 -1
  168. package/dist/js/components/Pagination/Pagination.js.map +1 -1
  169. package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts +22 -18
  170. package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
  171. package/dist/js/components/Pagination/PaginationOptionsMenu.js.map +1 -1
  172. package/dist/js/components/Pagination/ToggleTemplate.d.ts +3 -0
  173. package/dist/js/components/Pagination/ToggleTemplate.d.ts.map +1 -1
  174. package/dist/js/components/Pagination/ToggleTemplate.js.map +1 -1
  175. package/dist/js/components/Popover/Popover.d.ts +88 -73
  176. package/dist/js/components/Popover/Popover.d.ts.map +1 -1
  177. package/dist/js/components/Popover/Popover.js.map +1 -1
  178. package/dist/js/components/SearchInput/AdvancedSearchMenu.d.ts +27 -26
  179. package/dist/js/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
  180. package/dist/js/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
  181. package/dist/js/components/SearchInput/SearchInput.d.ts +71 -60
  182. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  183. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  184. package/dist/js/components/Slider/Slider.d.ts +45 -39
  185. package/dist/js/components/Slider/Slider.d.ts.map +1 -1
  186. package/dist/js/components/Slider/Slider.js.map +1 -1
  187. package/dist/js/components/Slider/SliderStep.d.ts +10 -10
  188. package/dist/js/components/Slider/SliderStep.d.ts.map +1 -1
  189. package/dist/js/components/TreeView/TreeView.d.ts +65 -53
  190. package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
  191. package/dist/js/components/TreeView/TreeView.js.map +1 -1
  192. package/dist/js/components/TreeView/TreeViewList.d.ts +4 -4
  193. package/dist/js/components/TreeView/TreeViewList.d.ts.map +1 -1
  194. package/dist/js/components/TreeView/TreeViewListItem.d.ts +46 -39
  195. package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  196. package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
  197. package/dist/js/components/TreeView/TreeViewRoot.d.ts +4 -4
  198. package/dist/js/components/TreeView/TreeViewRoot.d.ts.map +1 -1
  199. package/dist/js/components/TreeView/TreeViewSearch.d.ts +11 -8
  200. package/dist/js/components/TreeView/TreeViewSearch.d.ts.map +1 -1
  201. package/dist/js/components/TreeView/TreeViewSearch.js.map +1 -1
  202. package/dist/js/helpers/Popper/Popper.js +8 -8
  203. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  204. package/dist/umd/react-core.min.css +3634 -3634
  205. package/dist/umd/react-core.min.js +2 -2
  206. package/package.json +2 -2
  207. package/src/components/Alert/Alert.tsx +42 -34
  208. package/src/components/Alert/AlertActionCloseButton.tsx +9 -5
  209. package/src/components/Alert/AlertActionLink.tsx +6 -2
  210. package/src/components/Alert/AlertIcon.tsx +4 -4
  211. package/src/components/Alert/AlertToggleExpandButton.tsx +5 -5
  212. package/src/components/Badge/__tests__/Badge.test.tsx +45 -8
  213. package/src/components/Badge/__tests__/__snapshots__/Badge.test.tsx.snap +2 -12
  214. package/src/components/CalendarMonth/CalendarMonth.tsx +36 -28
  215. package/src/components/DatePicker/DatePicker.tsx +45 -36
  216. package/src/components/ExpandableSection/ExpandableSection.tsx +35 -24
  217. package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +11 -5
  218. package/src/components/FileUpload/FileUpload.tsx +56 -49
  219. package/src/components/FileUpload/FileUploadField.tsx +56 -50
  220. package/src/components/Modal/Modal.tsx +57 -48
  221. package/src/components/Modal/ModalBox.tsx +12 -12
  222. package/src/components/Modal/ModalBoxBody.tsx +2 -2
  223. package/src/components/Modal/ModalBoxCloseButton.tsx +2 -2
  224. package/src/components/Modal/ModalBoxDescription.tsx +3 -3
  225. package/src/components/Modal/ModalBoxFooter.tsx +2 -2
  226. package/src/components/Modal/ModalBoxHeader.tsx +3 -3
  227. package/src/components/Modal/ModalBoxTitle.tsx +8 -9
  228. package/src/components/Modal/ModalContent.tsx +56 -48
  229. package/src/components/Modal/examples/Modal.md +1 -3
  230. package/src/components/NotificationBadge/NotificationBadge.tsx +22 -15
  231. package/src/components/NotificationBadge/__tests__/NotificationBadge.test.tsx +25 -1
  232. package/src/components/NotificationBadge/__tests__/__snapshots__/NotificationBadge.test.tsx.snap +5 -0
  233. package/src/components/NotificationBadge/examples/NotificationBadge.md +16 -3
  234. package/src/components/NotificationBadge/examples/NotificationBadgeBasic.tsx +26 -13
  235. package/src/components/NotificationBadge/examples/NotificationBadgeWithCount.tsx +28 -18
  236. package/src/components/Pagination/Navigation.tsx +33 -33
  237. package/src/components/Pagination/OptionsToggle.tsx +27 -26
  238. package/src/components/Pagination/Pagination.tsx +79 -65
  239. package/src/components/Pagination/PaginationOptionsMenu.tsx +22 -18
  240. package/src/components/Pagination/ToggleTemplate.tsx +4 -0
  241. package/src/components/Popover/Popover.tsx +89 -73
  242. package/src/components/SearchInput/AdvancedSearchMenu.tsx +29 -28
  243. package/src/components/SearchInput/SearchInput.tsx +76 -62
  244. package/src/components/Slider/Slider.tsx +47 -41
  245. package/src/components/Slider/SliderStep.tsx +10 -10
  246. package/src/components/TreeView/TreeView.tsx +67 -53
  247. package/src/components/TreeView/TreeViewList.tsx +4 -4
  248. package/src/components/TreeView/TreeViewListItem.tsx +46 -39
  249. package/src/components/TreeView/TreeViewRoot.tsx +4 -4
  250. package/src/components/TreeView/TreeViewSearch.tsx +12 -8
  251. package/src/demos/Masthead.md +9 -193
  252. package/src/demos/NotificationDrawer/NotificationDrawer.md +2 -0
  253. package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +305 -0
  254. package/src/helpers/Popper/Popper.tsx +8 -8
@@ -3,202 +3,18 @@ id: Masthead
3
3
  section: components
4
4
  ---
5
5
 
6
- import imgBrand from '@patternfly/react-core/src/demos/examples/pfColorLogo.svg';
7
- import BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';
8
- import CaretDownIcon from '@patternfly/react-icons/dist/js/icons/caret-down-icon';
6
+ import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
7
+ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
8
+ import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
9
+ import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
10
+ import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
11
+ import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
9
12
 
10
13
  ## Demos
11
14
 
12
- ### Basic
15
+ ### Masthead with utilities and user dropdown menu
13
16
 
14
- ```ts
15
- import React from 'react';
16
- import {
17
- Masthead,
18
- MastheadToggle,
19
- MastheadMain,
20
- MastheadBrand,
21
- MastheadContent,
22
- Button,
23
- Toolbar,
24
- ToolbarContent,
25
- ToolbarGroup,
26
- ToolbarItem,
27
- ContextSelector,
28
- ContextSelectorItem,
29
- Dropdown,
30
- DropdownSeparator,
31
- DropdownToggle,
32
- KebabToggle,
33
- DropdownItem,
34
- Brand
35
- } from '@patternfly/react-core';
36
- import imgBrand from '@patternfly/react-core/src/demos/examples/pfColorLogo.svg';
37
- import BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';
38
- import CaretDownIcon from '@patternfly/react-icons/dist/js/icons/caret-down-icon';
17
+ Many mastheads contain utilities which collapse into a dropdown at smaller viewport widths. These utilities could include a notification badge to open and close a notification drawer, a link to app or user settings, a help icon which could launch quick starts or link to other resources, and many other utilities. In this demo, the notification badge does not collapse down into the mobile menu so that it is always visible even at narrower viewport widths.
39
18
 
40
- class BasicMasthead extends React.Component {
41
- items = [
42
- 'My Project',
43
- 'OpenShift Cluster',
44
- 'Production Ansible',
45
- 'AWS',
46
- 'Azure',
47
- 'My Project 2',
48
- 'OpenShift Cluster',
49
- 'Production Ansible 2',
50
- 'AWS 2',
51
- 'Azure 2'
52
- ];
53
-
54
- state = {
55
- isOpen: false,
56
- isDropdownOpen: false,
57
- isKebabOpen: false,
58
- selected: this.items[0],
59
- searchValue: '',
60
- filteredItems: this.items
61
- };
62
-
63
- onToggle = (event: any, isOpen: boolean) => {
64
- this.setState({
65
- isOpen
66
- });
67
- };
68
-
69
- onDropdownToggle = (isDropdownOpen: boolean) => {
70
- this.setState({
71
- isDropdownOpen
72
- });
73
- };
74
-
75
- onKebabToggle = (isKebabOpen: boolean) => {
76
- this.setState({
77
- isKebabOpen
78
- });
79
- };
80
-
81
- onSelect = (event: any, value: string) => {
82
- this.setState({
83
- selected: value,
84
- isOpen: !this.state.isOpen
85
- });
86
- };
87
-
88
- onDropdownSelect = () => {
89
- this.setState({
90
- isDropdownOpen: !this.state.isDropdownOpen
91
- });
92
- };
93
-
94
- onKebabSelect = () => {
95
- this.setState({
96
- isKebabOpen: !this.state.isKebabOpen
97
- });
98
- };
99
-
100
- onSearchInputChange = (value: string) => {
101
- this.setState({ searchValue: value });
102
- };
103
-
104
- onSearchButtonClick = () => {
105
- const filtered =
106
- this.state.searchValue === ''
107
- ? this.items
108
- : this.items.filter(str => str.toLowerCase().indexOf(this.state.searchValue.toLowerCase()) !== -1);
109
-
110
- this.setState({ filteredItems: filtered || [] });
111
- };
112
-
113
- render() {
114
- const { isOpen, isDropdownOpen, isKebabOpen, selected, searchValue, filteredItems } = this.state;
115
-
116
- const dropdownItems = [
117
- <DropdownItem key="link">Link</DropdownItem>,
118
- <DropdownItem key="action" component="button">
119
- Action
120
- </DropdownItem>,
121
- <DropdownItem key="disabled link" isDisabled href="www.google.com">
122
- Disabled Link
123
- </DropdownItem>,
124
- <DropdownItem
125
- key="disabled action"
126
- isAriaDisabled
127
- component="button"
128
- tooltip="Tooltip for disabled item"
129
- tooltipProps={{ position: 'top' }}
130
- >
131
- Disabled Action
132
- </DropdownItem>,
133
- <DropdownSeparator key="separator" />,
134
- <DropdownItem key="separated link">Separated Link</DropdownItem>,
135
- <DropdownItem key="separated action" component="button">
136
- Separated Action
137
- </DropdownItem>
138
- ];
139
-
140
- return (
141
- <Masthead id="basic-demo">
142
- <MastheadToggle>
143
- <Button variant="plain" onClick={() => {}} aria-label="Global navigation">
144
- <BarsIcon />
145
- </Button>
146
- </MastheadToggle>
147
- <MastheadMain>
148
- <MastheadBrand>
149
- <Brand src={imgBrand} alt="Patternfly logo" />
150
- </MastheadBrand>
151
- </MastheadMain>
152
- <MastheadContent>
153
- <Toolbar id="toolbar" isFullHeight isStatic>
154
- <ToolbarContent>
155
- <ToolbarItem>
156
- <ContextSelector
157
- toggleText={selected}
158
- onSearchInputChange={this.onSearchInputChange}
159
- isOpen={isOpen}
160
- searchInputValue={searchValue}
161
- onToggle={this.onToggle}
162
- onSelect={this.onSelect}
163
- onSearchButtonClick={this.onSearchButtonClick}
164
- screenReaderLabel="Selected Project:"
165
- isFullHeight
166
- >
167
- {filteredItems.map((item, index) => (
168
- <ContextSelectorItem key={index}>{item}</ContextSelectorItem>
169
- ))}
170
- </ContextSelector>
171
- </ToolbarItem>
172
- <ToolbarGroup alignment={{ default: 'alignRight' }}>
173
- <ToolbarItem visibility={{ default: 'hidden', lg: 'visible' }}>
174
- <Dropdown
175
- onSelect={this.onDropdownSelect}
176
- toggle={
177
- <DropdownToggle id="toggle-id" onToggle={this.onDropdownToggle} toggleIndicator={CaretDownIcon}>
178
- Dropdown
179
- </DropdownToggle>
180
- }
181
- isOpen={isDropdownOpen}
182
- dropdownItems={dropdownItems}
183
- isFullHeight
184
- />
185
- </ToolbarItem>
186
- <ToolbarItem>
187
- <Dropdown
188
- onSelect={this.onKebabSelect}
189
- position="right"
190
- toggle={<KebabToggle onToggle={this.onKebabToggle} id="toggle-id-kebab" />}
191
- isOpen={isKebabOpen}
192
- isPlain
193
- dropdownItems={dropdownItems}
194
- />
195
- </ToolbarItem>
196
- </ToolbarGroup>
197
- </ToolbarContent>
198
- </Toolbar>
199
- </MastheadContent>
200
- </Masthead>
201
- );
202
- }
203
- }
19
+ ```ts file='./examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx' isFullscreen
204
20
  ```
@@ -246,6 +246,7 @@ class BasicNotificationDrawer extends React.Component {
246
246
  variant={this.getNumberUnread() === 0 ? 'read' : 'unread'}
247
247
  onClick={this.onCloseNotificationDrawer}
248
248
  aria-label="Notifications"
249
+ isExpanded={isDrawerExpanded}
249
250
  >
250
251
  <BellIcon />
251
252
  </NotificationBadge>
@@ -812,6 +813,7 @@ class GroupedNotificationDrawer extends React.Component {
812
813
  variant={this.getNumberUnread() === 0 ? 'read' : 'unread'}
813
814
  onClick={this.onCloseNotificationDrawer}
814
815
  aria-label="Notifications"
816
+ isExpanded={isDrawerExpanded}
815
817
  >
816
818
  <BellIcon />
817
819
  </NotificationBadge>
@@ -0,0 +1,305 @@
1
+ import React from 'react';
2
+ import {
3
+ ApplicationLauncher,
4
+ ApplicationLauncherItem,
5
+ Avatar,
6
+ Brand,
7
+ Breadcrumb,
8
+ BreadcrumbItem,
9
+ Button,
10
+ ButtonVariant,
11
+ Card,
12
+ CardBody,
13
+ Divider,
14
+ Dropdown,
15
+ DropdownGroup,
16
+ DropdownItem,
17
+ DropdownToggle,
18
+ Gallery,
19
+ GalleryItem,
20
+ KebabToggle,
21
+ Masthead,
22
+ MastheadBrand,
23
+ MastheadContent,
24
+ MastheadMain,
25
+ MastheadToggle,
26
+ Nav,
27
+ NavItem,
28
+ NavList,
29
+ Page,
30
+ PageSection,
31
+ PageSectionVariants,
32
+ PageSidebar,
33
+ PageToggleButton,
34
+ SkipToContent,
35
+ Text,
36
+ TextContent,
37
+ Toolbar,
38
+ ToolbarContent,
39
+ ToolbarGroup,
40
+ ToolbarItem
41
+ } from '@patternfly/react-core';
42
+ import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
43
+ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
44
+ import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
45
+ import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
46
+ import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
47
+ import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
48
+
49
+ interface NavOnSelectProps {
50
+ groupId: number | string;
51
+ itemId: number | string;
52
+ to: string;
53
+ event: React.FormEvent<HTMLInputElement>;
54
+ }
55
+
56
+ export const MastheadWithUtilitiesAndUserDropdownMenu: React.FunctionComponent = () => {
57
+ const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);
58
+ const [isKebabDropdownOpen, setIsKebabDropdownOpen] = React.useState(false);
59
+ const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = React.useState(false);
60
+ const [isAppLauncherOpen, setIsAppLauncherOpen] = React.useState(false);
61
+ const [activeItem, setActiveItem] = React.useState(1);
62
+
63
+ const onNavSelect = (selectedItem: NavOnSelectProps) => {
64
+ typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);
65
+ };
66
+
67
+ const onDropdownToggle = (isOpen: boolean) => {
68
+ setIsDropdownOpen(isOpen);
69
+ };
70
+
71
+ const onDropdownSelect = () => {
72
+ setIsDropdownOpen(!isDropdownOpen);
73
+ };
74
+
75
+ const onKebabDropdownToggle = (isOpen: boolean) => {
76
+ setIsKebabDropdownOpen(isOpen);
77
+ };
78
+
79
+ const onKebabDropdownSelect = () => {
80
+ setIsKebabDropdownOpen(!isKebabDropdownOpen);
81
+ };
82
+
83
+ const onFullKebabDropdownToggle = (isOpen: boolean) => {
84
+ setIsFullKebabDropdownOpen(isOpen);
85
+ };
86
+
87
+ const onFullKebabDropdownSelect = () => {
88
+ setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen);
89
+ };
90
+
91
+ const onAppLauncherToggle = (isOpen: boolean) => {
92
+ setIsAppLauncherOpen(isOpen);
93
+ };
94
+
95
+ const onAppLauncherSelect = () => {
96
+ setIsAppLauncherOpen(!isAppLauncherOpen);
97
+ };
98
+
99
+ const dashboardBreadcrumb = (
100
+ <Breadcrumb>
101
+ <BreadcrumbItem>Section home</BreadcrumbItem>
102
+ <BreadcrumbItem to="#">Section title</BreadcrumbItem>
103
+ <BreadcrumbItem to="#">Section title</BreadcrumbItem>
104
+ <BreadcrumbItem to="#" isActive>
105
+ Section landing
106
+ </BreadcrumbItem>
107
+ </Breadcrumb>
108
+ );
109
+
110
+ const kebabDropdownItems = [
111
+ <DropdownItem key="settings">
112
+ <CogIcon /> Settings
113
+ </DropdownItem>,
114
+ <DropdownItem key="help">
115
+ <HelpIcon /> Help
116
+ </DropdownItem>
117
+ ];
118
+
119
+ const fullKebabDropdownItems = [
120
+ <DropdownGroup key="group 2">
121
+ <DropdownItem key="group 2 profile">My profile</DropdownItem>
122
+ <DropdownItem key="group 2 user" component="button">
123
+ User management
124
+ </DropdownItem>
125
+ <DropdownItem key="group 2 logout">Logout</DropdownItem>
126
+ </DropdownGroup>,
127
+ <Divider key="divider" />,
128
+ <DropdownItem key="settings">
129
+ <CogIcon /> Settings
130
+ </DropdownItem>,
131
+ <DropdownItem key="help">
132
+ <HelpIcon /> Help
133
+ </DropdownItem>
134
+ ];
135
+
136
+ const userDropdownItems = [
137
+ <DropdownGroup key="group 2">
138
+ <DropdownItem key="group 2 profile">My profile</DropdownItem>
139
+ <DropdownItem key="group 2 user" component="button">
140
+ User management
141
+ </DropdownItem>
142
+ <DropdownItem key="group 2 logout">Logout</DropdownItem>
143
+ </DropdownGroup>
144
+ ];
145
+
146
+ const appLauncherItems = [
147
+ <ApplicationLauncherItem key="application_1a" href="#">
148
+ Application 1 (anchor link)
149
+ </ApplicationLauncherItem>,
150
+ <ApplicationLauncherItem key="application_2a" component="button" onClick={() => alert('Clicked item 2')}>
151
+ Application 2 (button with onClick)
152
+ </ApplicationLauncherItem>
153
+ ];
154
+
155
+ const headerToolbar = (
156
+ <Toolbar id="toolbar" isFullHeight isStatic>
157
+ <ToolbarContent>
158
+ <ToolbarGroup
159
+ variant="icon-button-group"
160
+ alignment={{ default: 'alignRight' }}
161
+ spacer={{ default: 'spacerNone', md: 'spacerMd' }}
162
+ >
163
+ <ToolbarItem>
164
+ <Button aria-label="Notifications" variant={ButtonVariant.plain} icon={<BellIcon />} />
165
+ </ToolbarItem>
166
+ <ToolbarGroup variant="icon-button-group" visibility={{ default: 'hidden', lg: 'visible' }}>
167
+ <ToolbarItem visibility={{ default: 'hidden', md: 'hidden', lg: 'visible' }}>
168
+ <ApplicationLauncher
169
+ onSelect={onAppLauncherSelect}
170
+ onToggle={onAppLauncherToggle}
171
+ isOpen={isAppLauncherOpen}
172
+ items={appLauncherItems}
173
+ />
174
+ </ToolbarItem>
175
+ <ToolbarItem>
176
+ <Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
177
+ </ToolbarItem>
178
+ <ToolbarItem>
179
+ <Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
180
+ </ToolbarItem>
181
+ </ToolbarGroup>
182
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
183
+ <Dropdown
184
+ isPlain
185
+ position="right"
186
+ onSelect={onKebabDropdownSelect}
187
+ toggle={<KebabToggle onToggle={onKebabDropdownToggle} />}
188
+ isOpen={isKebabDropdownOpen}
189
+ dropdownItems={kebabDropdownItems}
190
+ />
191
+ </ToolbarItem>
192
+ <ToolbarItem visibility={{ md: 'hidden' }}>
193
+ <Dropdown
194
+ isPlain
195
+ position="right"
196
+ onSelect={onFullKebabDropdownSelect}
197
+ toggle={<KebabToggle onToggle={onFullKebabDropdownToggle} />}
198
+ isOpen={isFullKebabDropdownOpen}
199
+ dropdownItems={fullKebabDropdownItems}
200
+ />
201
+ </ToolbarItem>
202
+ </ToolbarGroup>
203
+ <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>
204
+ <Dropdown
205
+ isFullHeight
206
+ onSelect={onDropdownSelect}
207
+ isOpen={isDropdownOpen}
208
+ toggle={
209
+ <DropdownToggle icon={<Avatar src={imgAvatar} alt="Avatar" />} onToggle={onDropdownToggle}>
210
+ Ned Username
211
+ </DropdownToggle>
212
+ }
213
+ dropdownItems={userDropdownItems}
214
+ />
215
+ </ToolbarItem>
216
+ </ToolbarContent>
217
+ </Toolbar>
218
+ );
219
+
220
+ const masthead = (
221
+ <Masthead>
222
+ <MastheadToggle>
223
+ <PageToggleButton variant="plain" aria-label="Global navigation">
224
+ <BarsIcon />
225
+ </PageToggleButton>
226
+ </MastheadToggle>
227
+ <MastheadMain>
228
+ <MastheadBrand>
229
+ <Brand
230
+ widths={{ default: '180px', md: '180px', '2xl': '220px' }}
231
+ src="/assets/images/logo__pf--reverse--base.png"
232
+ alt="Fallback patternFly default logo"
233
+ >
234
+ <source media="(min-width: 768px)" srcSet="/assets/images/logo__pf--reverse-on-md.svg" />
235
+ <source srcSet="/assets/images/logo__pf--reverse--base.svg" />
236
+ </Brand>
237
+ </MastheadBrand>
238
+ </MastheadMain>
239
+ <MastheadContent>{headerToolbar}</MastheadContent>
240
+ </Masthead>
241
+ );
242
+
243
+ const pageNav = (
244
+ <Nav onSelect={onNavSelect} aria-label="Nav">
245
+ <NavList>
246
+ <NavItem itemId={0} isActive={activeItem === 0} to="#system-panel">
247
+ System panel
248
+ </NavItem>
249
+ <NavItem itemId={1} isActive={activeItem === 1} to="#policy">
250
+ Policy
251
+ </NavItem>
252
+ <NavItem itemId={2} isActive={activeItem === 2} to="#auth">
253
+ Authentication
254
+ </NavItem>
255
+ <NavItem itemId={3} isActive={activeItem === 3} to="#network">
256
+ Network services
257
+ </NavItem>
258
+ <NavItem itemId={4} isActive={activeItem === 4} to="#server">
259
+ Server
260
+ </NavItem>
261
+ </NavList>
262
+ </Nav>
263
+ );
264
+
265
+ const sidebar = <PageSidebar nav={pageNav} />;
266
+
267
+ const mainContainerId = 'main-content-page-layout-tertiary-nav';
268
+
269
+ const pageSkipToContent = <SkipToContent href={`#${mainContainerId}`}>Skip to content</SkipToContent>;
270
+
271
+ return (
272
+ <Page
273
+ header={masthead}
274
+ sidebar={sidebar}
275
+ isManagedSidebar
276
+ skipToContent={pageSkipToContent}
277
+ breadcrumb={dashboardBreadcrumb}
278
+ mainContainerId={mainContainerId}
279
+ isTertiaryNavWidthLimited
280
+ isBreadcrumbWidthLimited
281
+ isTertiaryNavGrouped
282
+ isBreadcrumbGrouped
283
+ additionalGroupedContent={
284
+ <PageSection variant={PageSectionVariants.light}>
285
+ <TextContent>
286
+ <Text component="h1">Main title</Text>
287
+ <Text component="p">This is a full page demo.</Text>
288
+ </TextContent>
289
+ </PageSection>
290
+ }
291
+ >
292
+ <PageSection>
293
+ <Gallery hasGutter>
294
+ {Array.apply(0, Array(10)).map((x, i) => (
295
+ <GalleryItem key={i}>
296
+ <Card>
297
+ <CardBody>This is a card</CardBody>
298
+ </Card>
299
+ </GalleryItem>
300
+ ))}
301
+ </Gallery>
302
+ </PageSection>
303
+ </Page>
304
+ );
305
+ };
@@ -190,14 +190,14 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
190
190
  }
191
191
  }
192
192
  }, [isVisible, popperRef]);
193
- const addEventListener = (listener: any, element: Document | HTMLElement, event: string) => {
193
+ const addEventListener = (listener: any, element: Document | HTMLElement, event: string, capture = false) => {
194
194
  if (listener && element) {
195
- element.addEventListener(event, listener);
195
+ element.addEventListener(event, listener, { capture });
196
196
  }
197
197
  };
198
- const removeEventListener = (listener: any, element: Document | HTMLElement, event: string) => {
198
+ const removeEventListener = (listener: any, element: Document | HTMLElement, event: string, capture = false) => {
199
199
  if (listener && element) {
200
- element.removeEventListener(event, listener);
200
+ element.removeEventListener(event, listener, { capture });
201
201
  }
202
202
  };
203
203
 
@@ -211,8 +211,8 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
211
211
  addEventListener(onPopperClick, popperElement, 'click');
212
212
  addEventListener(onPopperMouseEnter, popperElement, 'mouseenter');
213
213
  addEventListener(onPopperMouseLeave, popperElement, 'mouseleave');
214
- onDocumentClick && addEventListener(onDocumentClickCallback, document, 'click');
215
- addEventListener(onDocumentKeyDown, document, 'keydown');
214
+ onDocumentClick && addEventListener(onDocumentClickCallback, document, 'click', true);
215
+ addEventListener(onDocumentKeyDown, document, 'keydown', true);
216
216
 
217
217
  // Trigger a Popper update when content changes.
218
218
  const observer = new MutationObserver(() => {
@@ -230,8 +230,8 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
230
230
  removeEventListener(onPopperClick, popperElement, 'click');
231
231
  removeEventListener(onPopperMouseEnter, popperElement, 'mouseenter');
232
232
  removeEventListener(onPopperMouseLeave, popperElement, 'mouseleave');
233
- onDocumentClick && removeEventListener(onDocumentClickCallback, document, 'click');
234
- removeEventListener(onDocumentKeyDown, document, 'keydown');
233
+ onDocumentClick && removeEventListener(onDocumentClickCallback, document, 'click', true);
234
+ removeEventListener(onDocumentKeyDown, document, 'keydown', true);
235
235
  observer.disconnect();
236
236
  };
237
237
  }, [