@patternfly/react-core 4.236.5 → 4.236.8

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 (196) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/esm/components/ApplicationLauncher/ApplicationLauncher.d.ts +2 -0
  3. package/dist/esm/components/ApplicationLauncher/ApplicationLauncher.d.ts.map +1 -1
  4. package/dist/esm/components/ApplicationLauncher/ApplicationLauncher.js +4 -3
  5. package/dist/esm/components/ApplicationLauncher/ApplicationLauncher.js.map +1 -1
  6. package/dist/esm/components/BackToTop/BackToTop.d.ts +1 -1
  7. package/dist/esm/components/ContextSelector/ContextSelector.d.ts +2 -0
  8. package/dist/esm/components/ContextSelector/ContextSelector.d.ts.map +1 -1
  9. package/dist/esm/components/ContextSelector/ContextSelector.js +4 -3
  10. package/dist/esm/components/ContextSelector/ContextSelector.js.map +1 -1
  11. package/dist/esm/components/Dropdown/Dropdown.d.ts +2 -0
  12. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  13. package/dist/esm/components/Dropdown/Dropdown.js +2 -2
  14. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  15. package/dist/esm/components/Dropdown/DropdownWithContext.d.ts.map +1 -1
  16. package/dist/esm/components/Dropdown/DropdownWithContext.js +2 -2
  17. package/dist/esm/components/Dropdown/DropdownWithContext.js.map +1 -1
  18. package/dist/esm/components/DualListSelector/DualListSelectorControl.d.ts +1 -1
  19. package/dist/esm/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +1 -1
  20. package/dist/esm/components/DualListSelector/DualListSelectorListItem.d.ts +1 -1
  21. package/dist/esm/components/DualListSelector/DualListSelectorListWrapper.d.ts +1 -1
  22. package/dist/esm/components/Menu/MenuContent.d.ts +1 -1
  23. package/dist/esm/components/Menu/MenuGroup.d.ts +1 -1
  24. package/dist/esm/components/Menu/MenuInput.d.ts +1 -1
  25. package/dist/esm/components/Menu/MenuItem.d.ts +1 -1
  26. package/dist/esm/components/Nav/NavItem.d.ts +2 -0
  27. package/dist/esm/components/Nav/NavItem.d.ts.map +1 -1
  28. package/dist/esm/components/Nav/NavItem.js +2 -2
  29. package/dist/esm/components/Nav/NavItem.js.map +1 -1
  30. package/dist/esm/components/NotificationDrawer/NotificationDrawer.d.ts +1 -1
  31. package/dist/esm/components/OptionsMenu/OptionsMenu.d.ts +2 -0
  32. package/dist/esm/components/OptionsMenu/OptionsMenu.d.ts.map +1 -1
  33. package/dist/esm/components/OptionsMenu/OptionsMenu.js +2 -2
  34. package/dist/esm/components/OptionsMenu/OptionsMenu.js.map +1 -1
  35. package/dist/esm/components/Page/Page.d.ts.map +1 -1
  36. package/dist/esm/components/Page/Page.js +11 -2
  37. package/dist/esm/components/Page/Page.js.map +1 -1
  38. package/dist/esm/components/Panel/Panel.d.ts +1 -1
  39. package/dist/esm/components/Popover/Popover.d.ts +2 -0
  40. package/dist/esm/components/Popover/Popover.d.ts.map +1 -1
  41. package/dist/esm/components/Popover/Popover.js +2 -2
  42. package/dist/esm/components/Popover/Popover.js.map +1 -1
  43. package/dist/esm/components/Popover/PopoverCloseButton.d.ts.map +1 -1
  44. package/dist/esm/components/Popover/PopoverCloseButton.js +2 -11
  45. package/dist/esm/components/Popover/PopoverCloseButton.js.map +1 -1
  46. package/dist/esm/components/SearchInput/SearchInput.d.ts +2 -0
  47. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  48. package/dist/esm/components/SearchInput/SearchInput.js +2 -2
  49. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  50. package/dist/esm/components/Select/Select.d.ts +2 -0
  51. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  52. package/dist/esm/components/Select/Select.js +4 -3
  53. package/dist/esm/components/Select/Select.js.map +1 -1
  54. package/dist/esm/components/Tabs/OverflowTab.d.ts +2 -0
  55. package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
  56. package/dist/esm/components/Tabs/OverflowTab.js +2 -2
  57. package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
  58. package/dist/esm/components/Tabs/Tab.d.ts +1 -1
  59. package/dist/esm/components/TimePicker/TimePicker.d.ts +3 -0
  60. package/dist/esm/components/TimePicker/TimePicker.d.ts.map +1 -1
  61. package/dist/esm/components/TimePicker/TimePicker.js +5 -4
  62. package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
  63. package/dist/esm/components/Tooltip/Tooltip.d.ts +2 -0
  64. package/dist/esm/components/Tooltip/Tooltip.d.ts.map +1 -1
  65. package/dist/esm/components/Tooltip/Tooltip.js +2 -2
  66. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  67. package/dist/esm/helpers/FocusTrap/FocusTrap.d.ts +5 -19
  68. package/dist/esm/helpers/FocusTrap/FocusTrap.d.ts.map +1 -1
  69. package/dist/esm/helpers/FocusTrap/FocusTrap.js +10 -6
  70. package/dist/esm/helpers/FocusTrap/FocusTrap.js.map +1 -1
  71. package/dist/esm/helpers/Popper/Popper.d.ts +5 -0
  72. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  73. package/dist/esm/helpers/Popper/Popper.js +42 -7
  74. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  75. package/dist/esm/helpers/resizeObserver.d.ts +8 -1
  76. package/dist/esm/helpers/resizeObserver.d.ts.map +1 -1
  77. package/dist/esm/helpers/resizeObserver.js +18 -3
  78. package/dist/esm/helpers/resizeObserver.js.map +1 -1
  79. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.d.ts +2 -0
  80. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.d.ts.map +1 -1
  81. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.js +4 -3
  82. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.js.map +1 -1
  83. package/dist/js/components/BackToTop/BackToTop.d.ts +1 -1
  84. package/dist/js/components/ContextSelector/ContextSelector.d.ts +2 -0
  85. package/dist/js/components/ContextSelector/ContextSelector.d.ts.map +1 -1
  86. package/dist/js/components/ContextSelector/ContextSelector.js +4 -3
  87. package/dist/js/components/ContextSelector/ContextSelector.js.map +1 -1
  88. package/dist/js/components/Dropdown/Dropdown.d.ts +2 -0
  89. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  90. package/dist/js/components/Dropdown/Dropdown.js +2 -2
  91. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  92. package/dist/js/components/Dropdown/DropdownWithContext.d.ts.map +1 -1
  93. package/dist/js/components/Dropdown/DropdownWithContext.js +2 -2
  94. package/dist/js/components/Dropdown/DropdownWithContext.js.map +1 -1
  95. package/dist/js/components/DualListSelector/DualListSelectorControl.d.ts +1 -1
  96. package/dist/js/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +1 -1
  97. package/dist/js/components/DualListSelector/DualListSelectorListItem.d.ts +1 -1
  98. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.d.ts +1 -1
  99. package/dist/js/components/Menu/MenuContent.d.ts +1 -1
  100. package/dist/js/components/Menu/MenuGroup.d.ts +1 -1
  101. package/dist/js/components/Menu/MenuInput.d.ts +1 -1
  102. package/dist/js/components/Menu/MenuItem.d.ts +1 -1
  103. package/dist/js/components/Nav/NavItem.d.ts +2 -0
  104. package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
  105. package/dist/js/components/Nav/NavItem.js +2 -2
  106. package/dist/js/components/Nav/NavItem.js.map +1 -1
  107. package/dist/js/components/NotificationDrawer/NotificationDrawer.d.ts +1 -1
  108. package/dist/js/components/OptionsMenu/OptionsMenu.d.ts +2 -0
  109. package/dist/js/components/OptionsMenu/OptionsMenu.d.ts.map +1 -1
  110. package/dist/js/components/OptionsMenu/OptionsMenu.js +2 -2
  111. package/dist/js/components/OptionsMenu/OptionsMenu.js.map +1 -1
  112. package/dist/js/components/Page/Page.d.ts.map +1 -1
  113. package/dist/js/components/Page/Page.js +11 -2
  114. package/dist/js/components/Page/Page.js.map +1 -1
  115. package/dist/js/components/Panel/Panel.d.ts +1 -1
  116. package/dist/js/components/Popover/Popover.d.ts +2 -0
  117. package/dist/js/components/Popover/Popover.d.ts.map +1 -1
  118. package/dist/js/components/Popover/Popover.js +2 -2
  119. package/dist/js/components/Popover/Popover.js.map +1 -1
  120. package/dist/js/components/Popover/PopoverCloseButton.d.ts.map +1 -1
  121. package/dist/js/components/Popover/PopoverCloseButton.js +2 -11
  122. package/dist/js/components/Popover/PopoverCloseButton.js.map +1 -1
  123. package/dist/js/components/SearchInput/SearchInput.d.ts +2 -0
  124. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  125. package/dist/js/components/SearchInput/SearchInput.js +2 -2
  126. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  127. package/dist/js/components/Select/Select.d.ts +2 -0
  128. package/dist/js/components/Select/Select.d.ts.map +1 -1
  129. package/dist/js/components/Select/Select.js +4 -3
  130. package/dist/js/components/Select/Select.js.map +1 -1
  131. package/dist/js/components/Tabs/OverflowTab.d.ts +2 -0
  132. package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
  133. package/dist/js/components/Tabs/OverflowTab.js +2 -2
  134. package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
  135. package/dist/js/components/Tabs/Tab.d.ts +1 -1
  136. package/dist/js/components/TimePicker/TimePicker.d.ts +3 -0
  137. package/dist/js/components/TimePicker/TimePicker.d.ts.map +1 -1
  138. package/dist/js/components/TimePicker/TimePicker.js +5 -4
  139. package/dist/js/components/TimePicker/TimePicker.js.map +1 -1
  140. package/dist/js/components/Tooltip/Tooltip.d.ts +2 -0
  141. package/dist/js/components/Tooltip/Tooltip.d.ts.map +1 -1
  142. package/dist/js/components/Tooltip/Tooltip.js +2 -2
  143. package/dist/js/components/Tooltip/Tooltip.js.map +1 -1
  144. package/dist/js/helpers/FocusTrap/FocusTrap.d.ts +5 -19
  145. package/dist/js/helpers/FocusTrap/FocusTrap.d.ts.map +1 -1
  146. package/dist/js/helpers/FocusTrap/FocusTrap.js +10 -7
  147. package/dist/js/helpers/FocusTrap/FocusTrap.js.map +1 -1
  148. package/dist/js/helpers/Popper/Popper.d.ts +5 -0
  149. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  150. package/dist/js/helpers/Popper/Popper.js +42 -7
  151. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  152. package/dist/js/helpers/resizeObserver.d.ts +8 -1
  153. package/dist/js/helpers/resizeObserver.d.ts.map +1 -1
  154. package/dist/js/helpers/resizeObserver.js +18 -3
  155. package/dist/js/helpers/resizeObserver.js.map +1 -1
  156. package/dist/umd/react-core.min.css +39 -39
  157. package/dist/umd/react-core.min.js +5 -5
  158. package/package.json +5 -5
  159. package/src/components/ApplicationLauncher/ApplicationLauncher.tsx +6 -1
  160. package/src/components/ApplicationLauncher/__tests__/ApplicationLauncher.test.tsx +10 -1
  161. package/src/components/ApplicationLauncher/__tests__/__snapshots__/ApplicationLauncher.test.tsx.snap +153 -7
  162. package/src/components/ContextSelector/ContextSelector.tsx +6 -1
  163. package/src/components/ContextSelector/__tests__/ContextSelector.test.tsx +18 -1
  164. package/src/components/ContextSelector/__tests__/__snapshots__/ContextSelector.test.tsx.snap +144 -0
  165. package/src/components/Dropdown/Dropdown.tsx +9 -1
  166. package/src/components/Dropdown/DropdownWithContext.tsx +2 -0
  167. package/src/components/Dropdown/__tests__/Dropdown.test.tsx +16 -0
  168. package/src/components/Dropdown/__tests__/__snapshots__/Dropdown.test.tsx.snap +131 -7
  169. package/src/components/Nav/NavItem.tsx +4 -0
  170. package/src/components/Nav/__tests__/Nav.test.tsx +19 -0
  171. package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +111 -42
  172. package/src/components/OptionsMenu/OptionsMenu.tsx +4 -0
  173. package/src/components/OptionsMenu/__tests__/OptionsMenu.test.tsx +17 -0
  174. package/src/components/OptionsMenu/__tests__/__snapshots__/OptionsMenu.test.tsx.snap +216 -20
  175. package/src/components/Page/Page.tsx +11 -2
  176. package/src/components/Popover/Popover.tsx +4 -0
  177. package/src/components/Popover/PopoverCloseButton.tsx +6 -17
  178. package/src/components/Popover/__tests__/Popover.test.tsx +25 -0
  179. package/src/components/Popover/__tests__/__snapshots__/Popover.test.tsx.snap +10 -0
  180. package/src/components/SearchInput/SearchInput.tsx +4 -0
  181. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +27 -1
  182. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +130 -6
  183. package/src/components/Select/Select.tsx +6 -1
  184. package/src/components/Select/__tests__/Select.test.tsx +23 -7
  185. package/src/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +152 -46
  186. package/src/components/Tabs/OverflowTab.tsx +4 -0
  187. package/src/components/Tabs/__tests__/OverflowTab.test.tsx +31 -7
  188. package/src/components/Tabs/__tests__/__snapshots__/OverflowTab.test.tsx.snap +89 -0
  189. package/src/components/TimePicker/TimePicker.tsx +6 -1
  190. package/src/components/TimePicker/__tests__/TimePicker.test.tsx +16 -1
  191. package/src/components/Tooltip/Tooltip.tsx +4 -0
  192. package/src/components/Tooltip/__tests__/Tooltip.test.tsx +21 -0
  193. package/src/components/Tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +10 -0
  194. package/src/helpers/FocusTrap/FocusTrap.tsx +21 -5
  195. package/src/helpers/Popper/Popper.tsx +54 -12
  196. package/src/helpers/resizeObserver.tsx +21 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "4.236.5",
3
+ "version": "4.236.8",
4
4
  "description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
5
5
  "main": "dist/js/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -44,9 +44,9 @@
44
44
  "generate": "node scripts/copyStyles.js"
45
45
  },
46
46
  "dependencies": {
47
- "@patternfly/react-icons": "^4.87.5",
48
- "@patternfly/react-styles": "^4.86.5",
49
- "@patternfly/react-tokens": "^4.88.5",
47
+ "@patternfly/react-icons": "^4.87.8",
48
+ "@patternfly/react-styles": "^4.86.8",
49
+ "@patternfly/react-tokens": "^4.88.8",
50
50
  "focus-trap": "6.9.2",
51
51
  "react-dropzone": "9.0.0",
52
52
  "tippy.js": "5.1.2",
@@ -70,5 +70,5 @@
70
70
  "react": "^16.8.0 || ^17.0.0",
71
71
  "react-dom": "^16.8.0 || ^17.0.0"
72
72
  },
73
- "gitHead": "910d0ce39921d2f89298f0fca3694ea6dc141b63"
73
+ "gitHead": "37520d7f027e9777fbd76f40485388b29d93e292"
74
74
  }
@@ -61,6 +61,8 @@ export interface ApplicationLauncherProps
61
61
  favoritesLabel?: string;
62
62
  /** ID of toggle */
63
63
  toggleId?: string;
64
+ /** @beta Opt-in for updated popper that does not use findDOMNode. */
65
+ removeFindDomNode?: boolean;
64
66
  }
65
67
 
66
68
  export class ApplicationLauncher extends React.Component<ApplicationLauncherProps> {
@@ -83,7 +85,8 @@ export class ApplicationLauncher extends React.Component<ApplicationLauncherProp
83
85
  searchPlaceholderText: 'Filter by name...',
84
86
  searchNoResultsText: 'No results found',
85
87
  favoritesLabel: 'Favorites',
86
- menuAppendTo: 'inline'
88
+ menuAppendTo: 'inline',
89
+ removeFindDomNode: false
87
90
  };
88
91
 
89
92
  createSearchBox = () => {
@@ -129,6 +132,7 @@ export class ApplicationLauncher extends React.Component<ApplicationLauncherProp
129
132
  favoritesLabel,
130
133
  searchNoResultsText,
131
134
  menuAppendTo,
135
+ removeFindDomNode,
132
136
  ...props
133
137
  } = this.props;
134
138
  let renderableItems: React.ReactNode[] = [];
@@ -189,6 +193,7 @@ export class ApplicationLauncher extends React.Component<ApplicationLauncherProp
189
193
  className={className}
190
194
  aria-label={ariaLabel}
191
195
  menuAppendTo={menuAppendTo}
196
+ removeFindDomNode={removeFindDomNode}
192
197
  toggle={
193
198
  <DropdownToggle
194
199
  id={toggleId}
@@ -55,8 +55,17 @@ describe('ApplicationLauncher', () => {
55
55
 
56
56
  test('custom icon', () => {
57
57
  const { asFragment } = render(
58
- <ApplicationLauncher items={dropdownItems} isOpen toggleIcon={<HelpIcon id="test-icon" />} />
58
+ <React.StrictMode>
59
+ <ApplicationLauncher items={dropdownItems} isOpen toggleIcon={<HelpIcon id="test-icon" />} />
60
+ </React.StrictMode>
59
61
  );
60
62
  expect(asFragment()).toMatchSnapshot();
61
63
  });
64
+
65
+ test('Renders in strict mode', () => {
66
+ const consoleError = jest.spyOn(console, 'error');
67
+ const { asFragment } = render(<ApplicationLauncher removeFindDomNode isOpen items={dropdownItems} />);
68
+ expect(consoleError).not.toHaveBeenCalled();
69
+ expect(asFragment()).toMatchSnapshot();
70
+ });
62
71
  });
@@ -1,5 +1,151 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`ApplicationLauncher Renders in strict mode 1`] = `
4
+ <DocumentFragment>
5
+ <nav
6
+ aria-label="Application launcher"
7
+ class="pf-c-app-launcher pf-m-expanded"
8
+ data-ouia-component-type="PF4/ApplicationLauncher"
9
+ data-ouia-safe="true"
10
+ >
11
+ <button
12
+ aria-expanded="true"
13
+ aria-haspopup="true"
14
+ aria-label="Application launcher"
15
+ class="pf-c-app-launcher__toggle"
16
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-8"
17
+ data-ouia-component-type="PF4/DropdownToggle"
18
+ data-ouia-safe="true"
19
+ id="pf-dropdown-toggle-id-7"
20
+ type="button"
21
+ >
22
+ <span>
23
+ <svg
24
+ aria-hidden="true"
25
+ fill="currentColor"
26
+ height="1em"
27
+ role="img"
28
+ style="vertical-align: -0.125em;"
29
+ viewBox="0 0 512 512"
30
+ width="1em"
31
+ >
32
+ <path
33
+ d="M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"
34
+ />
35
+ </svg>
36
+ </span>
37
+ </button>
38
+ <ul
39
+ aria-labelledby="pf-dropdown-toggle-id-7"
40
+ class="pf-c-app-launcher__menu"
41
+ role="menu"
42
+ >
43
+ <li
44
+ role="none"
45
+ >
46
+ <a
47
+ aria-disabled="false"
48
+ class="pf-c-app-launcher__menu-item"
49
+ data-ouia-component-id="OUIA-Generated-DropdownItem-19"
50
+ data-ouia-component-type="PF4/DropdownItem"
51
+ data-ouia-safe="true"
52
+ role="menuitem"
53
+ tabindex="-1"
54
+ >
55
+ Link
56
+ </a>
57
+ </li>
58
+ <li
59
+ role="none"
60
+ >
61
+ <button
62
+ aria-disabled="false"
63
+ class="pf-c-app-launcher__menu-item"
64
+ data-ouia-component-id="OUIA-Generated-DropdownItem-20"
65
+ data-ouia-component-type="PF4/DropdownItem"
66
+ data-ouia-safe="true"
67
+ role="menuitem"
68
+ tabindex="-1"
69
+ type="button"
70
+ >
71
+ Action
72
+ </button>
73
+ </li>
74
+ <li
75
+ role="none"
76
+ >
77
+ <a
78
+ aria-disabled="true"
79
+ class="pf-m-disabled pf-c-app-launcher__menu-item"
80
+ data-ouia-component-id="OUIA-Generated-DropdownItem-21"
81
+ data-ouia-component-type="PF4/DropdownItem"
82
+ data-ouia-safe="true"
83
+ role="menuitem"
84
+ tabindex="-1"
85
+ >
86
+ Disabled Link
87
+ </a>
88
+ </li>
89
+ <li
90
+ role="none"
91
+ >
92
+ <button
93
+ aria-disabled="true"
94
+ class="pf-m-disabled pf-c-app-launcher__menu-item"
95
+ data-ouia-component-id="OUIA-Generated-DropdownItem-22"
96
+ data-ouia-component-type="PF4/DropdownItem"
97
+ data-ouia-safe="true"
98
+ role="menuitem"
99
+ tabindex="-1"
100
+ type="button"
101
+ >
102
+ Disabled Action
103
+ </button>
104
+ </li>
105
+ <li
106
+ role="none"
107
+ >
108
+ <div
109
+ class="pf-c-divider"
110
+ role="separator"
111
+ />
112
+ </li>
113
+ <li
114
+ role="none"
115
+ >
116
+ <a
117
+ aria-disabled="false"
118
+ class="pf-c-app-launcher__menu-item"
119
+ data-ouia-component-id="OUIA-Generated-DropdownItem-23"
120
+ data-ouia-component-type="PF4/DropdownItem"
121
+ data-ouia-safe="true"
122
+ role="menuitem"
123
+ tabindex="-1"
124
+ >
125
+ Separated Link
126
+ </a>
127
+ </li>
128
+ <li
129
+ role="none"
130
+ >
131
+ <button
132
+ aria-disabled="false"
133
+ class="pf-c-app-launcher__menu-item"
134
+ data-ouia-component-id="OUIA-Generated-DropdownItem-24"
135
+ data-ouia-component-type="PF4/DropdownItem"
136
+ data-ouia-safe="true"
137
+ role="menuitem"
138
+ tabindex="-1"
139
+ type="button"
140
+ >
141
+ Separated Action
142
+ </button>
143
+ </li>
144
+ </ul>
145
+ </nav>
146
+ </DocumentFragment>
147
+ `;
148
+
3
149
  exports[`ApplicationLauncher custom icon 1`] = `
4
150
  <DocumentFragment>
5
151
  <nav
@@ -13,7 +159,7 @@ exports[`ApplicationLauncher custom icon 1`] = `
13
159
  aria-haspopup="true"
14
160
  aria-label="Application launcher"
15
161
  class="pf-c-app-launcher__toggle"
16
- data-ouia-component-id="OUIA-Generated-DropdownToggle-6"
162
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-7"
17
163
  data-ouia-component-type="PF4/DropdownToggle"
18
164
  data-ouia-safe="true"
19
165
  id="pf-dropdown-toggle-id-5"
@@ -47,7 +193,7 @@ exports[`ApplicationLauncher custom icon 1`] = `
47
193
  <a
48
194
  aria-disabled="false"
49
195
  class="pf-c-app-launcher__menu-item"
50
- data-ouia-component-id="OUIA-Generated-DropdownItem-7"
196
+ data-ouia-component-id="OUIA-Generated-DropdownItem-8"
51
197
  data-ouia-component-type="PF4/DropdownItem"
52
198
  data-ouia-safe="true"
53
199
  role="menuitem"
@@ -62,7 +208,7 @@ exports[`ApplicationLauncher custom icon 1`] = `
62
208
  <button
63
209
  aria-disabled="false"
64
210
  class="pf-c-app-launcher__menu-item"
65
- data-ouia-component-id="OUIA-Generated-DropdownItem-8"
211
+ data-ouia-component-id="OUIA-Generated-DropdownItem-10"
66
212
  data-ouia-component-type="PF4/DropdownItem"
67
213
  data-ouia-safe="true"
68
214
  role="menuitem"
@@ -78,7 +224,7 @@ exports[`ApplicationLauncher custom icon 1`] = `
78
224
  <a
79
225
  aria-disabled="true"
80
226
  class="pf-m-disabled pf-c-app-launcher__menu-item"
81
- data-ouia-component-id="OUIA-Generated-DropdownItem-9"
227
+ data-ouia-component-id="OUIA-Generated-DropdownItem-12"
82
228
  data-ouia-component-type="PF4/DropdownItem"
83
229
  data-ouia-safe="true"
84
230
  role="menuitem"
@@ -93,7 +239,7 @@ exports[`ApplicationLauncher custom icon 1`] = `
93
239
  <button
94
240
  aria-disabled="true"
95
241
  class="pf-m-disabled pf-c-app-launcher__menu-item"
96
- data-ouia-component-id="OUIA-Generated-DropdownItem-10"
242
+ data-ouia-component-id="OUIA-Generated-DropdownItem-14"
97
243
  data-ouia-component-type="PF4/DropdownItem"
98
244
  data-ouia-safe="true"
99
245
  role="menuitem"
@@ -117,7 +263,7 @@ exports[`ApplicationLauncher custom icon 1`] = `
117
263
  <a
118
264
  aria-disabled="false"
119
265
  class="pf-c-app-launcher__menu-item"
120
- data-ouia-component-id="OUIA-Generated-DropdownItem-11"
266
+ data-ouia-component-id="OUIA-Generated-DropdownItem-16"
121
267
  data-ouia-component-type="PF4/DropdownItem"
122
268
  data-ouia-safe="true"
123
269
  role="menuitem"
@@ -132,7 +278,7 @@ exports[`ApplicationLauncher custom icon 1`] = `
132
278
  <button
133
279
  aria-disabled="false"
134
280
  class="pf-c-app-launcher__menu-item"
135
- data-ouia-component-id="OUIA-Generated-DropdownItem-12"
281
+ data-ouia-component-id="OUIA-Generated-DropdownItem-18"
136
282
  data-ouia-component-type="PF4/DropdownItem"
137
283
  data-ouia-safe="true"
138
284
  role="menuitem"
@@ -66,6 +66,8 @@ export interface ContextSelectorProps extends Omit<ToggleMenuBaseProps, 'menuApp
66
66
  isFlipEnabled?: boolean;
67
67
  /** Id of the context selector */
68
68
  id?: string;
69
+ /** @beta Opt-in for updated popper that does not use findDOMNode. */
70
+ removeFindDomNode?: boolean;
69
71
  }
70
72
 
71
73
  export class ContextSelector extends React.Component<ContextSelectorProps, { ouiaStateId: string }> {
@@ -89,7 +91,8 @@ export class ContextSelector extends React.Component<ContextSelectorProps, { oui
89
91
  footer: null as React.ReactNode,
90
92
  isPlain: false,
91
93
  isText: false,
92
- isFlipEnabled: false
94
+ isFlipEnabled: false,
95
+ removeFindDomNode: false
93
96
  };
94
97
  constructor(props: ContextSelectorProps) {
95
98
  super(props);
@@ -131,6 +134,7 @@ export class ContextSelector extends React.Component<ContextSelectorProps, { oui
131
134
  disableFocusTrap,
132
135
  isFlipEnabled,
133
136
  id,
137
+ removeFindDomNode,
134
138
  ...props
135
139
  } = this.props;
136
140
 
@@ -231,6 +235,7 @@ export class ContextSelector extends React.Component<ContextSelectorProps, { oui
231
235
  popper={popperContainer}
232
236
  appendTo={menuAppendTo === 'parent' ? getParentElement() : menuAppendTo}
233
237
  isVisible={isOpen}
238
+ removeFindDomNode={removeFindDomNode}
234
239
  />
235
240
  );
236
241
  }
@@ -21,7 +21,24 @@ describe('ContextSelector', () => {
21
21
  });
22
22
 
23
23
  test('Renders ContextSelector open', () => {
24
- const { asFragment } = render(<ContextSelector isOpen id="render-open">{items}</ContextSelector>);
24
+ const { asFragment } = render(
25
+ <ContextSelector isOpen id="render-open">
26
+ {items}
27
+ </ContextSelector>
28
+ );
29
+ expect(asFragment()).toMatchSnapshot();
30
+ });
31
+
32
+ test('Renders in strict mode', () => {
33
+ const consoleError = jest.spyOn(console, 'error');
34
+ const { asFragment } = render(
35
+ <React.StrictMode>
36
+ <ContextSelector removeFindDomNode isOpen id="render">
37
+ {items}
38
+ </ContextSelector>
39
+ </React.StrictMode>
40
+ );
41
+ expect(consoleError).not.toHaveBeenCalled();
25
42
  expect(asFragment()).toMatchSnapshot();
26
43
  });
27
44
 
@@ -183,3 +183,147 @@ exports[`ContextSelector Renders ContextSelector open 1`] = `
183
183
  </div>
184
184
  </DocumentFragment>
185
185
  `;
186
+
187
+ exports[`ContextSelector Renders in strict mode 1`] = `
188
+ <DocumentFragment>
189
+ <div
190
+ class="pf-c-context-selector pf-m-expanded"
191
+ data-ouia-component-id="OUIA-Generated-ContextSelector-4"
192
+ data-ouia-component-type="PF4/ContextSelector"
193
+ data-ouia-safe="true"
194
+ >
195
+ <button
196
+ aria-expanded="true"
197
+ aria-labelledby="pf-context-selector-label-id-render pf-context-selector-toggle-id-render"
198
+ class="pf-c-context-selector__toggle"
199
+ id="pf-context-selector-toggle-id-render"
200
+ type="button"
201
+ >
202
+ <span
203
+ class="pf-c-context-selector__toggle-text"
204
+ />
205
+ <span
206
+ class="pf-c-context-selector__toggle-icon"
207
+ >
208
+ <svg
209
+ aria-hidden="true"
210
+ fill="currentColor"
211
+ height="1em"
212
+ role="img"
213
+ style="vertical-align: -0.125em;"
214
+ viewBox="0 0 320 512"
215
+ width="1em"
216
+ >
217
+ <path
218
+ d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"
219
+ />
220
+ </svg>
221
+ </span>
222
+ </button>
223
+ <div
224
+ class="pf-c-context-selector__menu"
225
+ id="render"
226
+ >
227
+ <div>
228
+ <div
229
+ class="pf-c-context-selector__menu-search"
230
+ >
231
+ <div
232
+ class="pf-c-input-group"
233
+ >
234
+ <input
235
+ aria-invalid="false"
236
+ aria-label="Search menu items"
237
+ class="pf-c-form-control"
238
+ data-ouia-component-id="OUIA-Generated-TextInputBase-3"
239
+ data-ouia-component-type="PF4/TextInput"
240
+ data-ouia-safe="true"
241
+ placeholder="Search"
242
+ type="search"
243
+ value=""
244
+ />
245
+ <button
246
+ aria-disabled="false"
247
+ aria-label="Search menu items"
248
+ class="pf-c-button pf-m-control"
249
+ data-ouia-component-id="OUIA-Generated-Button-control-3"
250
+ data-ouia-component-type="PF4/Button"
251
+ data-ouia-safe="true"
252
+ type="button"
253
+ >
254
+ <svg
255
+ aria-hidden="true"
256
+ fill="currentColor"
257
+ height="1em"
258
+ role="img"
259
+ style="vertical-align: -0.125em;"
260
+ viewBox="0 0 512 512"
261
+ width="1em"
262
+ >
263
+ <path
264
+ d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"
265
+ />
266
+ </svg>
267
+ </button>
268
+ </div>
269
+ </div>
270
+ <ul
271
+ class="pf-c-context-selector__menu-list"
272
+ role="menu"
273
+ >
274
+ <li
275
+ role="none"
276
+ >
277
+ <button
278
+ class="pf-c-context-selector__menu-list-item"
279
+ role="menuitem"
280
+ >
281
+ My Project
282
+ </button>
283
+ </li>
284
+ <li
285
+ role="none"
286
+ >
287
+ <button
288
+ class="pf-c-context-selector__menu-list-item"
289
+ role="menuitem"
290
+ >
291
+ OpenShift Cluster
292
+ </button>
293
+ </li>
294
+ <li
295
+ role="none"
296
+ >
297
+ <button
298
+ class="pf-c-context-selector__menu-list-item"
299
+ role="menuitem"
300
+ >
301
+ Production Ansible
302
+ </button>
303
+ </li>
304
+ <li
305
+ role="none"
306
+ >
307
+ <button
308
+ class="pf-c-context-selector__menu-list-item"
309
+ role="menuitem"
310
+ >
311
+ AWS
312
+ </button>
313
+ </li>
314
+ <li
315
+ role="none"
316
+ >
317
+ <button
318
+ class="pf-c-context-selector__menu-list-item"
319
+ role="menuitem"
320
+ >
321
+ Azure
322
+ </button>
323
+ </li>
324
+ </ul>
325
+ </div>
326
+ </div>
327
+ </div>
328
+ </DocumentFragment>
329
+ `;
@@ -60,6 +60,8 @@ export interface DropdownProps
60
60
  * appended inline, e.g. `menuAppendTo="parent"`
61
61
  */
62
62
  isFlipEnabled?: boolean;
63
+ /** @beta Opt-in for updated popper that does not use findDOMNode. */
64
+ removeFindDomNode?: boolean;
63
65
  }
64
66
 
65
67
  export const Dropdown: React.FunctionComponent<DropdownProps> = ({
@@ -72,6 +74,7 @@ export const Dropdown: React.FunctionComponent<DropdownProps> = ({
72
74
  contextProps,
73
75
  menuAppendTo = 'inline',
74
76
  isFlipEnabled = false,
77
+ removeFindDomNode = false,
75
78
  ...props
76
79
  }: DropdownProps) => (
77
80
  <DropdownContext.Provider
@@ -97,7 +100,12 @@ export const Dropdown: React.FunctionComponent<DropdownProps> = ({
97
100
  ...contextProps
98
101
  }}
99
102
  >
100
- <DropdownWithContext menuAppendTo={menuAppendTo} isFlipEnabled={isFlipEnabled} {...props} />
103
+ <DropdownWithContext
104
+ menuAppendTo={menuAppendTo}
105
+ isFlipEnabled={isFlipEnabled}
106
+ removeFindDomNode={removeFindDomNode}
107
+ {...props}
108
+ />
101
109
  </DropdownContext.Provider>
102
110
  );
103
111
  Dropdown.displayName = 'Dropdown';
@@ -77,6 +77,7 @@ export class DropdownWithContext extends React.Component<DropdownProps & OUIAPro
77
77
  autoFocus,
78
78
  menuAppendTo,
79
79
  isFlipEnabled,
80
+ removeFindDomNode,
80
81
  ...props
81
82
  } = this.props;
82
83
  const id = toggle.props.id || `pf-dropdown-toggle-id-${DropdownWithContext.currentId++}`;
@@ -174,6 +175,7 @@ export class DropdownWithContext extends React.Component<DropdownProps & OUIAPro
174
175
  position={position}
175
176
  appendTo={menuAppendTo === 'parent' ? getParentElement() : menuAppendTo}
176
177
  isVisible={isOpen}
178
+ removeFindDomNode={removeFindDomNode}
177
179
  />
178
180
  );
179
181
  }}
@@ -123,6 +123,22 @@ describe('Dropdown', () => {
123
123
  );
124
124
  expect(asFragment()).toMatchSnapshot();
125
125
  });
126
+
127
+ test('Renders in strict mode', () => {
128
+ const consoleError = jest.spyOn(console, 'error');
129
+ const { asFragment } = render(
130
+ <React.StrictMode>
131
+ <Dropdown
132
+ isOpen
133
+ dropdownItems={dropdownItems}
134
+ toggle={<DropdownToggle id="Dropdown Toggle">Dropdown</DropdownToggle>}
135
+ removeFindDomNode
136
+ />
137
+ </React.StrictMode>
138
+ );
139
+ expect(consoleError).not.toHaveBeenCalled();
140
+ expect(asFragment()).toMatchSnapshot();
141
+ });
126
142
  });
127
143
 
128
144
  describe('KebabToggle', () => {