@patternfly/react-core 4.236.6 → 4.236.9

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 (189) hide show
  1. package/CHANGELOG.md +24 -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/Panel/Panel.d.ts +1 -1
  36. package/dist/esm/components/Popover/Popover.d.ts +2 -0
  37. package/dist/esm/components/Popover/Popover.d.ts.map +1 -1
  38. package/dist/esm/components/Popover/Popover.js +2 -2
  39. package/dist/esm/components/Popover/Popover.js.map +1 -1
  40. package/dist/esm/components/Popover/PopoverCloseButton.d.ts.map +1 -1
  41. package/dist/esm/components/Popover/PopoverCloseButton.js +2 -11
  42. package/dist/esm/components/Popover/PopoverCloseButton.js.map +1 -1
  43. package/dist/esm/components/SearchInput/SearchInput.d.ts +2 -0
  44. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  45. package/dist/esm/components/SearchInput/SearchInput.js +2 -2
  46. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  47. package/dist/esm/components/Select/Select.d.ts +2 -0
  48. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  49. package/dist/esm/components/Select/Select.js +4 -3
  50. package/dist/esm/components/Select/Select.js.map +1 -1
  51. package/dist/esm/components/Tabs/OverflowTab.d.ts +2 -0
  52. package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
  53. package/dist/esm/components/Tabs/OverflowTab.js +2 -2
  54. package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
  55. package/dist/esm/components/Tabs/Tab.d.ts +1 -1
  56. package/dist/esm/components/TimePicker/TimePicker.d.ts +3 -0
  57. package/dist/esm/components/TimePicker/TimePicker.d.ts.map +1 -1
  58. package/dist/esm/components/TimePicker/TimePicker.js +5 -4
  59. package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
  60. package/dist/esm/components/Tooltip/Tooltip.d.ts +2 -0
  61. package/dist/esm/components/Tooltip/Tooltip.d.ts.map +1 -1
  62. package/dist/esm/components/Tooltip/Tooltip.js +2 -2
  63. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  64. package/dist/esm/helpers/FocusTrap/FocusTrap.d.ts +5 -19
  65. package/dist/esm/helpers/FocusTrap/FocusTrap.d.ts.map +1 -1
  66. package/dist/esm/helpers/FocusTrap/FocusTrap.js +10 -6
  67. package/dist/esm/helpers/FocusTrap/FocusTrap.js.map +1 -1
  68. package/dist/esm/helpers/Popper/Popper.d.ts +5 -0
  69. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  70. package/dist/esm/helpers/Popper/Popper.js +42 -7
  71. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  72. package/dist/esm/helpers/resizeObserver.d.ts +8 -1
  73. package/dist/esm/helpers/resizeObserver.d.ts.map +1 -1
  74. package/dist/esm/helpers/resizeObserver.js +18 -3
  75. package/dist/esm/helpers/resizeObserver.js.map +1 -1
  76. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.d.ts +2 -0
  77. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.d.ts.map +1 -1
  78. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.js +4 -3
  79. package/dist/js/components/ApplicationLauncher/ApplicationLauncher.js.map +1 -1
  80. package/dist/js/components/BackToTop/BackToTop.d.ts +1 -1
  81. package/dist/js/components/ContextSelector/ContextSelector.d.ts +2 -0
  82. package/dist/js/components/ContextSelector/ContextSelector.d.ts.map +1 -1
  83. package/dist/js/components/ContextSelector/ContextSelector.js +4 -3
  84. package/dist/js/components/ContextSelector/ContextSelector.js.map +1 -1
  85. package/dist/js/components/Dropdown/Dropdown.d.ts +2 -0
  86. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  87. package/dist/js/components/Dropdown/Dropdown.js +2 -2
  88. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  89. package/dist/js/components/Dropdown/DropdownWithContext.d.ts.map +1 -1
  90. package/dist/js/components/Dropdown/DropdownWithContext.js +2 -2
  91. package/dist/js/components/Dropdown/DropdownWithContext.js.map +1 -1
  92. package/dist/js/components/DualListSelector/DualListSelectorControl.d.ts +1 -1
  93. package/dist/js/components/DualListSelector/DualListSelectorControlsWrapper.d.ts +1 -1
  94. package/dist/js/components/DualListSelector/DualListSelectorListItem.d.ts +1 -1
  95. package/dist/js/components/DualListSelector/DualListSelectorListWrapper.d.ts +1 -1
  96. package/dist/js/components/Menu/MenuContent.d.ts +1 -1
  97. package/dist/js/components/Menu/MenuGroup.d.ts +1 -1
  98. package/dist/js/components/Menu/MenuInput.d.ts +1 -1
  99. package/dist/js/components/Menu/MenuItem.d.ts +1 -1
  100. package/dist/js/components/Nav/NavItem.d.ts +2 -0
  101. package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
  102. package/dist/js/components/Nav/NavItem.js +2 -2
  103. package/dist/js/components/Nav/NavItem.js.map +1 -1
  104. package/dist/js/components/NotificationDrawer/NotificationDrawer.d.ts +1 -1
  105. package/dist/js/components/OptionsMenu/OptionsMenu.d.ts +2 -0
  106. package/dist/js/components/OptionsMenu/OptionsMenu.d.ts.map +1 -1
  107. package/dist/js/components/OptionsMenu/OptionsMenu.js +2 -2
  108. package/dist/js/components/OptionsMenu/OptionsMenu.js.map +1 -1
  109. package/dist/js/components/Panel/Panel.d.ts +1 -1
  110. package/dist/js/components/Popover/Popover.d.ts +2 -0
  111. package/dist/js/components/Popover/Popover.d.ts.map +1 -1
  112. package/dist/js/components/Popover/Popover.js +2 -2
  113. package/dist/js/components/Popover/Popover.js.map +1 -1
  114. package/dist/js/components/Popover/PopoverCloseButton.d.ts.map +1 -1
  115. package/dist/js/components/Popover/PopoverCloseButton.js +2 -11
  116. package/dist/js/components/Popover/PopoverCloseButton.js.map +1 -1
  117. package/dist/js/components/SearchInput/SearchInput.d.ts +2 -0
  118. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  119. package/dist/js/components/SearchInput/SearchInput.js +2 -2
  120. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  121. package/dist/js/components/Select/Select.d.ts +2 -0
  122. package/dist/js/components/Select/Select.d.ts.map +1 -1
  123. package/dist/js/components/Select/Select.js +4 -3
  124. package/dist/js/components/Select/Select.js.map +1 -1
  125. package/dist/js/components/Tabs/OverflowTab.d.ts +2 -0
  126. package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
  127. package/dist/js/components/Tabs/OverflowTab.js +2 -2
  128. package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
  129. package/dist/js/components/Tabs/Tab.d.ts +1 -1
  130. package/dist/js/components/TimePicker/TimePicker.d.ts +3 -0
  131. package/dist/js/components/TimePicker/TimePicker.d.ts.map +1 -1
  132. package/dist/js/components/TimePicker/TimePicker.js +5 -4
  133. package/dist/js/components/TimePicker/TimePicker.js.map +1 -1
  134. package/dist/js/components/Tooltip/Tooltip.d.ts +2 -0
  135. package/dist/js/components/Tooltip/Tooltip.d.ts.map +1 -1
  136. package/dist/js/components/Tooltip/Tooltip.js +2 -2
  137. package/dist/js/components/Tooltip/Tooltip.js.map +1 -1
  138. package/dist/js/helpers/FocusTrap/FocusTrap.d.ts +5 -19
  139. package/dist/js/helpers/FocusTrap/FocusTrap.d.ts.map +1 -1
  140. package/dist/js/helpers/FocusTrap/FocusTrap.js +10 -7
  141. package/dist/js/helpers/FocusTrap/FocusTrap.js.map +1 -1
  142. package/dist/js/helpers/Popper/Popper.d.ts +5 -0
  143. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  144. package/dist/js/helpers/Popper/Popper.js +42 -7
  145. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  146. package/dist/js/helpers/resizeObserver.d.ts +8 -1
  147. package/dist/js/helpers/resizeObserver.d.ts.map +1 -1
  148. package/dist/js/helpers/resizeObserver.js +18 -3
  149. package/dist/js/helpers/resizeObserver.js.map +1 -1
  150. package/dist/umd/react-core.min.css +335 -335
  151. package/dist/umd/react-core.min.js +5 -5
  152. package/package.json +5 -5
  153. package/src/components/ApplicationLauncher/ApplicationLauncher.tsx +6 -1
  154. package/src/components/ApplicationLauncher/__tests__/ApplicationLauncher.test.tsx +10 -1
  155. package/src/components/ApplicationLauncher/__tests__/__snapshots__/ApplicationLauncher.test.tsx.snap +153 -7
  156. package/src/components/ContextSelector/ContextSelector.tsx +6 -1
  157. package/src/components/ContextSelector/__tests__/ContextSelector.test.tsx +18 -1
  158. package/src/components/ContextSelector/__tests__/__snapshots__/ContextSelector.test.tsx.snap +144 -0
  159. package/src/components/Dropdown/Dropdown.tsx +9 -1
  160. package/src/components/Dropdown/DropdownWithContext.tsx +2 -0
  161. package/src/components/Dropdown/__tests__/Dropdown.test.tsx +16 -0
  162. package/src/components/Dropdown/__tests__/__snapshots__/Dropdown.test.tsx.snap +131 -7
  163. package/src/components/Nav/NavItem.tsx +4 -0
  164. package/src/components/Nav/__tests__/Nav.test.tsx +19 -0
  165. package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +111 -42
  166. package/src/components/OptionsMenu/OptionsMenu.tsx +4 -0
  167. package/src/components/OptionsMenu/__tests__/OptionsMenu.test.tsx +17 -0
  168. package/src/components/OptionsMenu/__tests__/__snapshots__/OptionsMenu.test.tsx.snap +216 -20
  169. package/src/components/Popover/Popover.tsx +4 -0
  170. package/src/components/Popover/PopoverCloseButton.tsx +6 -17
  171. package/src/components/Popover/__tests__/Popover.test.tsx +25 -0
  172. package/src/components/Popover/__tests__/__snapshots__/Popover.test.tsx.snap +10 -0
  173. package/src/components/SearchInput/SearchInput.tsx +4 -0
  174. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +27 -1
  175. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +130 -6
  176. package/src/components/Select/Select.tsx +6 -1
  177. package/src/components/Select/__tests__/Select.test.tsx +23 -7
  178. package/src/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +152 -46
  179. package/src/components/Tabs/OverflowTab.tsx +4 -0
  180. package/src/components/Tabs/__tests__/OverflowTab.test.tsx +31 -7
  181. package/src/components/Tabs/__tests__/__snapshots__/OverflowTab.test.tsx.snap +89 -0
  182. package/src/components/TimePicker/TimePicker.tsx +6 -1
  183. package/src/components/TimePicker/__tests__/TimePicker.test.tsx +16 -1
  184. package/src/components/Tooltip/Tooltip.tsx +4 -0
  185. package/src/components/Tooltip/__tests__/Tooltip.test.tsx +21 -0
  186. package/src/components/Tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +10 -0
  187. package/src/helpers/FocusTrap/FocusTrap.tsx +21 -5
  188. package/src/helpers/Popper/Popper.tsx +54 -12
  189. package/src/helpers/resizeObserver.tsx +21 -3
@@ -47,6 +47,8 @@ export interface OptionsMenuProps
47
47
  * menuAppendTo={document.getElementById('target')}
48
48
  */
49
49
  menuAppendTo?: HTMLElement | (() => HTMLElement) | 'inline' | 'parent';
50
+ /** @beta Opt-in for updated popper that does not use findDOMNode. */
51
+ removeFindDomNode?: boolean;
50
52
  }
51
53
 
52
54
  export const OptionsMenu: React.FunctionComponent<OptionsMenuProps> = ({
@@ -61,6 +63,7 @@ export const OptionsMenu: React.FunctionComponent<OptionsMenuProps> = ({
61
63
  menuAppendTo = 'inline',
62
64
  ouiaId,
63
65
  ouiaSafe = true,
66
+ removeFindDomNode = false,
64
67
  ...props
65
68
  }: OptionsMenuProps) => (
66
69
  <DropdownContext.Provider
@@ -88,6 +91,7 @@ export const OptionsMenu: React.FunctionComponent<OptionsMenuProps> = ({
88
91
  isGrouped={isGrouped}
89
92
  toggle={toggle}
90
93
  menuAppendTo={menuAppendTo}
94
+ removeFindDomNode={removeFindDomNode}
91
95
  {...props}
92
96
  />
93
97
  </DropdownContext.Provider>
@@ -31,6 +31,23 @@ describe('optionsMenu', () => {
31
31
  expect(asFragment()).toMatchSnapshot();
32
32
  });
33
33
 
34
+ test('renders in strict mode', () => {
35
+ const consoleError = jest.spyOn(console, 'error');
36
+ const { asFragment } = render(
37
+ <React.StrictMode>
38
+ <OptionsMenu
39
+ removeFindDomNode
40
+ id="regular"
41
+ menuItems={menuItems}
42
+ isOpen
43
+ toggle={<OptionsMenuToggle>Options Menu</OptionsMenuToggle>}
44
+ />
45
+ </React.StrictMode>
46
+ );
47
+ expect(consoleError).not.toHaveBeenCalled();
48
+ expect(asFragment()).toMatchSnapshot();
49
+ });
50
+
34
51
  test('right aligned', () => {
35
52
  const { asFragment } = render(
36
53
  <OptionsMenu
@@ -4,7 +4,7 @@ exports[`optionsMenu expanded 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
6
  class="pf-c-options-menu pf-m-expanded"
7
- data-ouia-component-id="OUIA-Generated-OptionsMenu-5"
7
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-7"
8
8
  data-ouia-component-type="PF4/OptionsMenu"
9
9
  data-ouia-safe="true"
10
10
  id="expanded"
@@ -14,7 +14,7 @@ exports[`optionsMenu expanded 1`] = `
14
14
  aria-haspopup="listbox"
15
15
  aria-label="Options menu"
16
16
  class="pf-c-options-menu__toggle"
17
- data-ouia-component-id="OUIA-Generated-DropdownToggle-5"
17
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-7"
18
18
  data-ouia-component-type="PF4/DropdownToggle"
19
19
  data-ouia-safe="true"
20
20
  id="expanded-toggle"
@@ -68,7 +68,7 @@ exports[`optionsMenu expanded 1`] = `
68
68
  <button
69
69
  aria-disabled="false"
70
70
  class="pf-c-options-menu__menu-item"
71
- data-ouia-component-id="OUIA-Generated-DropdownItem-1"
71
+ data-ouia-component-id="OUIA-Generated-DropdownItem-13"
72
72
  data-ouia-component-type="PF4/DropdownItem"
73
73
  data-ouia-safe="true"
74
74
  role="menuitem"
@@ -85,7 +85,7 @@ exports[`optionsMenu expanded 1`] = `
85
85
  <button
86
86
  aria-disabled="false"
87
87
  class="pf-c-options-menu__menu-item"
88
- data-ouia-component-id="OUIA-Generated-DropdownItem-2"
88
+ data-ouia-component-id="OUIA-Generated-DropdownItem-14"
89
89
  data-ouia-component-type="PF4/DropdownItem"
90
90
  data-ouia-safe="true"
91
91
  role="menuitem"
@@ -102,7 +102,7 @@ exports[`optionsMenu expanded 1`] = `
102
102
  <button
103
103
  aria-disabled="true"
104
104
  class="pf-m-disabled pf-c-options-menu__menu-item"
105
- data-ouia-component-id="OUIA-Generated-DropdownItem-3"
105
+ data-ouia-component-id="OUIA-Generated-DropdownItem-15"
106
106
  data-ouia-component-type="PF4/DropdownItem"
107
107
  data-ouia-safe="true"
108
108
  role="menuitem"
@@ -119,7 +119,7 @@ exports[`optionsMenu expanded 1`] = `
119
119
  <button
120
120
  aria-disabled="false"
121
121
  class="pf-c-options-menu__menu-item"
122
- data-ouia-component-id="OUIA-Generated-DropdownItem-4"
122
+ data-ouia-component-id="OUIA-Generated-DropdownItem-16"
123
123
  data-ouia-component-type="PF4/DropdownItem"
124
124
  data-ouia-safe="true"
125
125
  role="menuitem"
@@ -158,7 +158,7 @@ exports[`optionsMenu expanded 1`] = `
158
158
  <button
159
159
  aria-disabled="false"
160
160
  class="pf-c-options-menu__menu-item"
161
- data-ouia-component-id="OUIA-Generated-DropdownItem-5"
161
+ data-ouia-component-id="OUIA-Generated-DropdownItem-17"
162
162
  data-ouia-component-type="PF4/DropdownItem"
163
163
  data-ouia-safe="true"
164
164
  role="menuitem"
@@ -175,7 +175,7 @@ exports[`optionsMenu expanded 1`] = `
175
175
  <button
176
176
  aria-disabled="false"
177
177
  class="pf-c-options-menu__menu-item"
178
- data-ouia-component-id="OUIA-Generated-DropdownItem-6"
178
+ data-ouia-component-id="OUIA-Generated-DropdownItem-18"
179
179
  data-ouia-component-type="PF4/DropdownItem"
180
180
  data-ouia-safe="true"
181
181
  role="menuitem"
@@ -200,7 +200,7 @@ exports[`optionsMenu isDisabled 1`] = `
200
200
  <DocumentFragment>
201
201
  <div
202
202
  class="pf-c-options-menu"
203
- data-ouia-component-id="OUIA-Generated-OptionsMenu-8"
203
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-10"
204
204
  data-ouia-component-type="PF4/OptionsMenu"
205
205
  data-ouia-safe="true"
206
206
  id="disabled"
@@ -210,7 +210,7 @@ exports[`optionsMenu isDisabled 1`] = `
210
210
  aria-haspopup="listbox"
211
211
  aria-label="Options menu"
212
212
  class="pf-c-options-menu__toggle"
213
- data-ouia-component-id="OUIA-Generated-DropdownToggle-7"
213
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-9"
214
214
  data-ouia-component-type="PF4/DropdownToggle"
215
215
  data-ouia-safe="true"
216
216
  disabled=""
@@ -246,7 +246,7 @@ exports[`optionsMenu open up 1`] = `
246
246
  <DocumentFragment>
247
247
  <div
248
248
  class="pf-c-options-menu pf-m-top"
249
- data-ouia-component-id="OUIA-Generated-OptionsMenu-3"
249
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-5"
250
250
  data-ouia-component-type="PF4/OptionsMenu"
251
251
  data-ouia-safe="true"
252
252
  id="openUp"
@@ -256,7 +256,7 @@ exports[`optionsMenu open up 1`] = `
256
256
  aria-haspopup="listbox"
257
257
  aria-label="Options menu"
258
258
  class="pf-c-options-menu__toggle"
259
- data-ouia-component-id="OUIA-Generated-DropdownToggle-3"
259
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-5"
260
260
  data-ouia-component-type="PF4/DropdownToggle"
261
261
  data-ouia-safe="true"
262
262
  id="openUp-toggle"
@@ -291,7 +291,7 @@ exports[`optionsMenu plain 1`] = `
291
291
  <DocumentFragment>
292
292
  <div
293
293
  class="pf-c-options-menu"
294
- data-ouia-component-id="OUIA-Generated-OptionsMenu-6"
294
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-8"
295
295
  data-ouia-component-type="PF4/OptionsMenu"
296
296
  data-ouia-safe="true"
297
297
  id="plain"
@@ -301,7 +301,7 @@ exports[`optionsMenu plain 1`] = `
301
301
  aria-haspopup="listbox"
302
302
  aria-label="Options menu"
303
303
  class="pf-c-options-menu__toggle pf-m-plain"
304
- data-ouia-component-id="OUIA-Generated-DropdownToggle-6"
304
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-8"
305
305
  data-ouia-component-type="PF4/DropdownToggle"
306
306
  data-ouia-safe="true"
307
307
  id="plain-toggle"
@@ -358,11 +358,207 @@ exports[`optionsMenu regular 1`] = `
358
358
  </DocumentFragment>
359
359
  `;
360
360
 
361
+ exports[`optionsMenu renders in strict mode 1`] = `
362
+ <DocumentFragment>
363
+ <div
364
+ class="pf-c-options-menu pf-m-expanded"
365
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-3"
366
+ data-ouia-component-type="PF4/OptionsMenu"
367
+ data-ouia-safe="true"
368
+ id="regular"
369
+ >
370
+ <button
371
+ aria-expanded="true"
372
+ aria-haspopup="listbox"
373
+ aria-label="Options menu"
374
+ class="pf-c-options-menu__toggle"
375
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-3"
376
+ data-ouia-component-type="PF4/DropdownToggle"
377
+ data-ouia-safe="true"
378
+ id="regular-toggle"
379
+ type="button"
380
+ >
381
+ <span
382
+ class="pf-c-options-menu__toggle-text"
383
+ />
384
+ <span
385
+ class="pf-c-options-menu__toggle-icon"
386
+ >
387
+ <svg
388
+ aria-hidden="true"
389
+ fill="currentColor"
390
+ height="1em"
391
+ role="img"
392
+ style="vertical-align: -0.125em;"
393
+ viewBox="0 0 320 512"
394
+ width="1em"
395
+ >
396
+ <path
397
+ 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"
398
+ />
399
+ </svg>
400
+ </span>
401
+ </button>
402
+ <ul
403
+ aria-labelledby="regular-toggle"
404
+ class="pf-c-options-menu__menu"
405
+ role="menu"
406
+ >
407
+ <section
408
+ class="pf-c-options-menu__group"
409
+ index="0"
410
+ role="none"
411
+ >
412
+ <h1
413
+ class="pf-c-options-menu__group-title"
414
+ >
415
+ Sort order
416
+ </h1>
417
+ <ul
418
+ aria-label=""
419
+ class=""
420
+ role="group"
421
+ >
422
+ <li
423
+ id=""
424
+ role="none"
425
+ >
426
+ <button
427
+ aria-disabled="false"
428
+ class="pf-c-options-menu__menu-item"
429
+ data-ouia-component-id="OUIA-Generated-DropdownItem-2"
430
+ data-ouia-component-type="PF4/DropdownItem"
431
+ data-ouia-safe="true"
432
+ role="menuitem"
433
+ tabindex="-1"
434
+ type="button"
435
+ >
436
+ Name
437
+ </button>
438
+ </li>
439
+ <li
440
+ id=""
441
+ role="none"
442
+ >
443
+ <button
444
+ aria-disabled="false"
445
+ class="pf-c-options-menu__menu-item"
446
+ data-ouia-component-id="OUIA-Generated-DropdownItem-4"
447
+ data-ouia-component-type="PF4/DropdownItem"
448
+ data-ouia-safe="true"
449
+ role="menuitem"
450
+ tabindex="-1"
451
+ type="button"
452
+ >
453
+ Date
454
+ </button>
455
+ </li>
456
+ <li
457
+ id=""
458
+ role="none"
459
+ >
460
+ <button
461
+ aria-disabled="true"
462
+ class="pf-m-disabled pf-c-options-menu__menu-item"
463
+ data-ouia-component-id="OUIA-Generated-DropdownItem-6"
464
+ data-ouia-component-type="PF4/DropdownItem"
465
+ data-ouia-safe="true"
466
+ role="menuitem"
467
+ tabindex="-1"
468
+ type="button"
469
+ >
470
+ Disabled
471
+ </button>
472
+ </li>
473
+ <li
474
+ id=""
475
+ role="none"
476
+ >
477
+ <button
478
+ aria-disabled="false"
479
+ class="pf-c-options-menu__menu-item"
480
+ data-ouia-component-id="OUIA-Generated-DropdownItem-8"
481
+ data-ouia-component-type="PF4/DropdownItem"
482
+ data-ouia-safe="true"
483
+ role="menuitem"
484
+ tabindex="-1"
485
+ type="button"
486
+ >
487
+ Size
488
+ </button>
489
+ </li>
490
+ </ul>
491
+ </section>
492
+ <li
493
+ class="pf-c-divider"
494
+ index="1"
495
+ role="separator"
496
+ />
497
+ <section
498
+ class="pf-c-options-menu__group"
499
+ index="2"
500
+ role="none"
501
+ >
502
+ <h1
503
+ class="pf-c-options-menu__group-title"
504
+ >
505
+ Sort direction
506
+ </h1>
507
+ <ul
508
+ aria-label=""
509
+ class=""
510
+ role="group"
511
+ >
512
+ <li
513
+ id=""
514
+ role="none"
515
+ >
516
+ <button
517
+ aria-disabled="false"
518
+ class="pf-c-options-menu__menu-item"
519
+ data-ouia-component-id="OUIA-Generated-DropdownItem-10"
520
+ data-ouia-component-type="PF4/DropdownItem"
521
+ data-ouia-safe="true"
522
+ role="menuitem"
523
+ tabindex="-1"
524
+ type="button"
525
+ >
526
+ Ascending
527
+ </button>
528
+ </li>
529
+ <li
530
+ id=""
531
+ role="none"
532
+ >
533
+ <button
534
+ aria-disabled="false"
535
+ class="pf-c-options-menu__menu-item"
536
+ data-ouia-component-id="OUIA-Generated-DropdownItem-12"
537
+ data-ouia-component-type="PF4/DropdownItem"
538
+ data-ouia-safe="true"
539
+ role="menuitem"
540
+ tabindex="-1"
541
+ type="button"
542
+ >
543
+ Descending
544
+ </button>
545
+ </li>
546
+ <li
547
+ class="pf-c-divider"
548
+ role="separator"
549
+ />
550
+ </ul>
551
+ </section>
552
+ </ul>
553
+ </div>
554
+ </DocumentFragment>
555
+ `;
556
+
361
557
  exports[`optionsMenu right aligned + open up 1`] = `
362
558
  <DocumentFragment>
363
559
  <div
364
560
  class="pf-c-options-menu pf-m-top pf-m-align-right"
365
- data-ouia-component-id="OUIA-Generated-OptionsMenu-4"
561
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-6"
366
562
  data-ouia-component-type="PF4/OptionsMenu"
367
563
  data-ouia-safe="true"
368
564
  id="rightAlignedOpenUp"
@@ -372,7 +568,7 @@ exports[`optionsMenu right aligned + open up 1`] = `
372
568
  aria-haspopup="listbox"
373
569
  aria-label="Options menu"
374
570
  class="pf-c-options-menu__toggle"
375
- data-ouia-component-id="OUIA-Generated-DropdownToggle-4"
571
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-6"
376
572
  data-ouia-component-type="PF4/DropdownToggle"
377
573
  data-ouia-safe="true"
378
574
  id="rightAlignedOpenUp-toggle"
@@ -407,7 +603,7 @@ exports[`optionsMenu right aligned 1`] = `
407
603
  <DocumentFragment>
408
604
  <div
409
605
  class="pf-c-options-menu pf-m-align-right"
410
- data-ouia-component-id="OUIA-Generated-OptionsMenu-2"
606
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-4"
411
607
  data-ouia-component-type="PF4/OptionsMenu"
412
608
  data-ouia-safe="true"
413
609
  id="rightAligned"
@@ -417,7 +613,7 @@ exports[`optionsMenu right aligned 1`] = `
417
613
  aria-haspopup="listbox"
418
614
  aria-label="Options menu"
419
615
  class="pf-c-options-menu__toggle"
420
- data-ouia-component-id="OUIA-Generated-DropdownToggle-2"
616
+ data-ouia-component-id="OUIA-Generated-DropdownToggle-4"
421
617
  data-ouia-component-type="PF4/DropdownToggle"
422
618
  data-ouia-safe="true"
423
619
  id="rightAligned-toggle"
@@ -452,14 +648,14 @@ exports[`optionsMenu text 1`] = `
452
648
  <DocumentFragment>
453
649
  <div
454
650
  class="pf-c-options-menu"
455
- data-ouia-component-id="OUIA-Generated-OptionsMenu-7"
651
+ data-ouia-component-id="OUIA-Generated-OptionsMenu-9"
456
652
  data-ouia-component-type="PF4/OptionsMenu"
457
653
  data-ouia-safe="true"
458
654
  id="text"
459
655
  >
460
656
  <div
461
657
  class="pf-c-options-menu__toggle pf-m-text"
462
- id="pf-dropdown-toggle-id-6"
658
+ id="pf-dropdown-toggle-id-8"
463
659
  >
464
660
  <span
465
661
  class="pf-c-options-menu__toggle-text"
@@ -203,6 +203,8 @@ export interface PopoverProps {
203
203
  boundary?: 'scrollParent' | 'window' | 'viewport' | HTMLElement;
204
204
  /** @deprecated - no longer used */
205
205
  tippyProps?: Partial<TippyProps>;
206
+ /** @beta Opt-in for updated popper that does not use findDOMNode. */
207
+ removeFindDomNode?: boolean;
206
208
  }
207
209
 
208
210
  const alertStyle = {
@@ -252,6 +254,7 @@ export const Popover: React.FunctionComponent<PopoverProps> = ({
252
254
  reference,
253
255
  hasNoPadding = false,
254
256
  hasAutoWidth = false,
257
+ removeFindDomNode = false,
255
258
  ...rest
256
259
  }: PopoverProps) => {
257
260
  if (process.env.NODE_ENV !== 'production') {
@@ -466,6 +469,7 @@ export const Popover: React.FunctionComponent<PopoverProps> = ({
466
469
  enableFlip={enableFlip}
467
470
  zIndex={zIndex}
468
471
  flipBehavior={flipBehavior}
472
+ removeFindDomNode={removeFindDomNode}
469
473
  />
470
474
  </PopoverContext.Provider>
471
475
  );
@@ -1,27 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import { Button } from '../Button';
3
3
  import TimesIcon from '@patternfly/react-icons/dist/esm/icons/times-icon';
4
- import { FindRefWrapper } from '../../helpers/Popper/FindRefWrapper';
5
4
 
6
5
  export const PopoverCloseButton: React.FunctionComponent<PopoverCloseButtonProps> = ({
7
6
  onClose = () => undefined as void,
8
7
  ...props
9
- }: PopoverCloseButtonProps) => {
10
- const [closeButtonElement, setCloseButtonElement] = React.useState(null);
11
- React.useEffect(() => {
12
- closeButtonElement && closeButtonElement.addEventListener('click', onClose, false);
13
- return () => {
14
- closeButtonElement && closeButtonElement.removeEventListener('click', onClose, false);
15
- };
16
- }, [closeButtonElement]);
17
- return (
18
- <FindRefWrapper onFoundRef={(foundRef: any) => setCloseButtonElement(foundRef)}>
19
- <Button variant="plain" aria-label {...props} style={{ pointerEvents: 'auto' }}>
20
- <TimesIcon />
21
- </Button>
22
- </FindRefWrapper>
23
- );
24
- };
8
+ }: PopoverCloseButtonProps) => (
9
+ <Button onClick={onClose} variant="plain" aria-label {...props} style={{ pointerEvents: 'auto' }}>
10
+ <TimesIcon />
11
+ </Button>
12
+ );
13
+
25
14
  PopoverCloseButton.displayName = 'PopoverCloseButton';
26
15
 
27
16
  export interface PopoverCloseButtonProps {
@@ -90,3 +90,28 @@ test('popover can close from content (uncontrolled)', () => {
90
90
  );
91
91
  expect(asFragment()).toMatchSnapshot();
92
92
  });
93
+
94
+ test('popover renders in strict mode', () => {
95
+ const consoleError = jest.spyOn(console, 'error');
96
+ const { asFragment } = render(
97
+ <React.StrictMode>
98
+ <Popover
99
+ id="test"
100
+ position="top"
101
+ isVisible
102
+ hideOnOutsideClick
103
+ headerContent={<div>Popover Header</div>}
104
+ bodyContent={
105
+ <div>
106
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.
107
+ </div>
108
+ }
109
+ removeFindDomNode
110
+ >
111
+ <div>Toggle Popover</div>
112
+ </Popover>
113
+ </React.StrictMode>
114
+ );
115
+ expect(consoleError).not.toHaveBeenCalled();
116
+ expect(asFragment()).toMatchSnapshot();
117
+ });
@@ -33,3 +33,13 @@ exports[`popover renders close-button, header and body 1`] = `
33
33
  </div>
34
34
  </DocumentFragment>
35
35
  `;
36
+
37
+ exports[`popover renders in strict mode 1`] = `
38
+ <DocumentFragment>
39
+ <div>
40
+ <div>
41
+ Toggle Popover
42
+ </div>
43
+ </div>
44
+ </DocumentFragment>
45
+ `;
@@ -90,6 +90,8 @@ export interface SearchInputProps extends Omit<React.HTMLProps<HTMLDivElement>,
90
90
  * appendTo={document.getElementById('target')}
91
91
  */
92
92
  appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
93
+ /** @beta Opt-in for updated popper that does not use findDOMNode. */
94
+ removeFindDomNode?: boolean;
93
95
  }
94
96
 
95
97
  const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
@@ -120,6 +122,7 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
120
122
  submitSearchButtonLabel = 'Search',
121
123
  isDisabled = false,
122
124
  appendTo,
125
+ removeFindDomNode = false,
123
126
  ...props
124
127
  }: SearchInputProps) => {
125
128
  const [isSearchMenuOpen, setIsSearchMenuOpen] = React.useState(false);
@@ -316,6 +319,7 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
316
319
  isVisible={isSearchMenuOpen}
317
320
  enableFlip={true}
318
321
  appendTo={() => appendTo || searchInputRef.current}
322
+ removeFindDomNode={removeFindDomNode}
319
323
  />
320
324
  </div>
321
325
  );
@@ -33,6 +33,32 @@ describe('SearchInput', () => {
33
33
  expect(screen.getByTestId('test-id').querySelector('.pf-c-badge')).toBeInTheDocument();
34
34
  });
35
35
 
36
+ test('renders search input in strict mode', async () => {
37
+ const user = userEvent.setup();
38
+
39
+ const consoleError = jest.spyOn(console, 'error');
40
+ const { asFragment } = render(
41
+ <React.StrictMode>
42
+ <SearchInput
43
+ attributes={[
44
+ { attr: 'username', display: 'Username' },
45
+ { attr: 'firstname', display: 'First name' }
46
+ ]}
47
+ advancedSearchDelimiter=":"
48
+ value="username:player firstname:john"
49
+ onChange={props.onChange}
50
+ onSearch={props.onSearch}
51
+ onClear={props.onClear}
52
+ removeFindDomNode
53
+ />
54
+ </React.StrictMode>
55
+ );
56
+ await user.click(screen.getByRole('button', { name: 'Search' }));
57
+ expect(consoleError).not.toHaveBeenCalled();
58
+ expect(props.onSearch).toHaveBeenCalled();
59
+ expect(asFragment()).toMatchSnapshot();
60
+ });
61
+
36
62
  test('navigable search results', async () => {
37
63
  const user = userEvent.setup();
38
64
 
@@ -110,7 +136,7 @@ describe('SearchInput', () => {
110
136
  await user.click(screen.getByRole('button', { name: 'Search' }));
111
137
 
112
138
  await user.click(screen.getByRole('button', { name: 'Open advanced search' }));
113
- expect(screen.getByTestId('test-id')).toContainElement(screen.getByText('First name'))
139
+ expect(screen.getByTestId('test-id')).toContainElement(screen.getByText('First name'));
114
140
 
115
141
  expect(props.onSearch).toHaveBeenCalled();
116
142
  expect(asFragment()).toMatchSnapshot();