@patternfly/react-core 6.0.0-alpha.55 → 6.0.0-alpha.56

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 (143) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/DataList/package.json +1 -1
  23. package/dist/dynamic/components/DatePicker/package.json +1 -1
  24. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  25. package/dist/dynamic/components/Divider/package.json +1 -1
  26. package/dist/dynamic/components/Drawer/package.json +1 -1
  27. package/dist/dynamic/components/Dropdown/package.json +1 -1
  28. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  29. package/dist/dynamic/components/EmptyState/package.json +1 -1
  30. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  31. package/dist/dynamic/components/FileUpload/package.json +1 -1
  32. package/dist/dynamic/components/Form/package.json +1 -1
  33. package/dist/dynamic/components/FormSelect/package.json +1 -1
  34. package/dist/dynamic/components/HelperText/package.json +1 -1
  35. package/dist/dynamic/components/Hint/package.json +1 -1
  36. package/dist/dynamic/components/Icon/package.json +1 -1
  37. package/dist/dynamic/components/InputGroup/package.json +1 -1
  38. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  39. package/dist/dynamic/components/Label/package.json +1 -1
  40. package/dist/dynamic/components/List/package.json +1 -1
  41. package/dist/dynamic/components/LoginPage/package.json +1 -1
  42. package/dist/dynamic/components/Masthead/package.json +1 -1
  43. package/dist/dynamic/components/Menu/package.json +1 -1
  44. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  45. package/dist/dynamic/components/Modal/package.json +1 -1
  46. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  47. package/dist/dynamic/components/Nav/package.json +1 -1
  48. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  49. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  50. package/dist/dynamic/components/NumberInput/package.json +1 -1
  51. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  52. package/dist/dynamic/components/Page/package.json +1 -1
  53. package/dist/dynamic/components/Pagination/package.json +1 -1
  54. package/dist/dynamic/components/Panel/package.json +1 -1
  55. package/dist/dynamic/components/Popover/package.json +1 -1
  56. package/dist/dynamic/components/Progress/package.json +1 -1
  57. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  58. package/dist/dynamic/components/Radio/package.json +1 -1
  59. package/dist/dynamic/components/SearchInput/package.json +1 -1
  60. package/dist/dynamic/components/Select/package.json +1 -1
  61. package/dist/dynamic/components/Sidebar/package.json +1 -1
  62. package/dist/dynamic/components/SimpleList/package.json +1 -1
  63. package/dist/dynamic/components/Skeleton/package.json +1 -1
  64. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  65. package/dist/dynamic/components/Slider/package.json +1 -1
  66. package/dist/dynamic/components/Spinner/package.json +1 -1
  67. package/dist/dynamic/components/Switch/package.json +1 -1
  68. package/dist/dynamic/components/Tabs/package.json +1 -1
  69. package/dist/dynamic/components/Text/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/Tile/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/DualListSelector/package.json +1 -1
  119. package/dist/dynamic/next/components/Modal/package.json +1 -1
  120. package/dist/dynamic/next/components/package.json +1 -1
  121. package/dist/dynamic/styles/package.json +1 -1
  122. package/dist/esm/components/Form/FormGroupLabelHelp.d.ts +3 -1
  123. package/dist/esm/components/Form/FormGroupLabelHelp.d.ts.map +1 -1
  124. package/dist/esm/components/Form/FormGroupLabelHelp.js +14 -3
  125. package/dist/esm/components/Form/FormGroupLabelHelp.js.map +1 -1
  126. package/dist/js/components/Form/FormGroupLabelHelp.d.ts +3 -1
  127. package/dist/js/components/Form/FormGroupLabelHelp.d.ts.map +1 -1
  128. package/dist/js/components/Form/FormGroupLabelHelp.js +14 -4
  129. package/dist/js/components/Form/FormGroupLabelHelp.js.map +1 -1
  130. package/dist/umd/react-core.min.js +2 -2
  131. package/helpers/package.json +1 -1
  132. package/layouts/package.json +1 -1
  133. package/next/package.json +1 -1
  134. package/package.json +2 -2
  135. package/src/components/Button/examples/ButtonInlineSpanLink.tsx +3 -3
  136. package/src/components/Form/FormGroupLabelHelp.tsx +40 -6
  137. package/src/components/Form/examples/FormBasic.tsx +3 -1
  138. package/src/components/Form/examples/FormGroupLabelInfo.tsx +3 -1
  139. package/src/components/Form/examples/FormLimitWidth.tsx +3 -1
  140. package/src/components/Modal/examples/ModalWithForm.tsx +9 -3
  141. package/src/demos/SearchInput/SearchInput.md +2 -2
  142. package/src/demos/examples/PasswordStrength/PasswordStrengthDemo.tsx +8 -2
  143. package/src/next/components/Modal/examples/ModalWithForm.tsx +9 -3
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.54","private":true}
1
+ {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.55","private":true}
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.54","private":true}
1
+ {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.55","private":true}
package/next/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.54","private":true}
1
+ {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.55","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.0.0-alpha.55",
3
+ "version": "6.0.0-alpha.56",
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",
@@ -74,5 +74,5 @@
74
74
  "react": "^17 || ^18",
75
75
  "react-dom": "^17 || ^18"
76
76
  },
77
- "gitHead": "9500bdfebf53ce5f486c92eaa0b1a371dccf4d76"
77
+ "gitHead": "cd60d82eeb90a83acd096f6105405f41484534f0"
78
78
  }
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- import { Button } from '@patternfly/react-core';
2
+ import { Button, KeyTypes } from '@patternfly/react-core';
3
3
 
4
4
  const handleKeydown = (event: React.KeyboardEvent<HTMLButtonElement>) => {
5
5
  const { key } = event;
6
- const isEnterKey: boolean = key === 'Enter';
7
- const isEnterOrSpaceKey: boolean = isEnterKey || key === 'Space';
6
+ const isEnterKey: boolean = key === KeyTypes.Enter;
7
+ const isEnterOrSpaceKey: boolean = isEnterKey || key === KeyTypes.Space;
8
8
 
9
9
  if (isEnterOrSpaceKey) {
10
10
  event.preventDefault();
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Button, ButtonProps } from '../Button';
3
3
  import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
4
+ import { KeyTypes } from '../../helpers/constants';
4
5
 
5
6
  /** A help button to be passed to the FormGroup's labelHelp property. This should be wrapped or linked
6
7
  * to our Popover component.
@@ -10,15 +11,48 @@ export interface FormGroupLabelHelpProps extends ButtonProps {
10
11
  'aria-label': string;
11
12
  /** Additional classes added to the help button. */
12
13
  className?: string;
14
+ /** @hide Forwarded ref */
15
+ innerRef?: React.Ref<HTMLSpanElement>;
13
16
  }
14
17
 
15
- export const FormGroupLabelHelp: React.FunctionComponent<FormGroupLabelHelpProps> = ({
18
+ const FormGroupLabelHelpBase: React.FunctionComponent<FormGroupLabelHelpProps> = ({
16
19
  'aria-label': ariaLabel,
17
20
  className,
21
+ innerRef,
18
22
  ...props
19
- }) => (
20
- <Button aria-label={ariaLabel} className={className} variant="plain" hasNoPadding {...props}>
21
- <QuestionCircleIcon />
22
- </Button>
23
- );
23
+ }) => {
24
+ const ref = React.useRef<HTMLSpanElement>(null);
25
+ const buttonRef = innerRef || ref;
26
+
27
+ const isMutableRef = (ref: React.Ref<HTMLSpanElement>): ref is React.MutableRefObject<HTMLSpanElement> =>
28
+ typeof ref === 'object' && ref !== null && 'current' in ref && ref.current !== undefined;
29
+
30
+ const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {
31
+ if ([KeyTypes.Space, KeyTypes.Enter].includes(event.key) && isMutableRef(buttonRef) && buttonRef.current) {
32
+ event.preventDefault();
33
+ buttonRef.current.click();
34
+ }
35
+ };
36
+
37
+ return (
38
+ <Button
39
+ component="span"
40
+ isInline
41
+ ref={buttonRef}
42
+ onKeyDown={handleKeyDown}
43
+ aria-label={ariaLabel}
44
+ className={className}
45
+ variant="plain"
46
+ hasNoPadding
47
+ {...props}
48
+ >
49
+ <QuestionCircleIcon />
50
+ </Button>
51
+ );
52
+ };
53
+
54
+ export const FormGroupLabelHelp = React.forwardRef((props: FormGroupLabelHelpProps, ref: React.Ref<any>) => (
55
+ <FormGroupLabelHelpBase innerRef={ref} {...props} />
56
+ ));
57
+
24
58
  FormGroupLabelHelp.displayName = 'FormGroupLabelHelp';
@@ -18,6 +18,7 @@ export const FormBasic: React.FunctionComponent = () => {
18
18
  const [name, setName] = React.useState('');
19
19
  const [email, setEmail] = React.useState('');
20
20
  const [phone, setPhone] = React.useState('');
21
+ const labelHelpRef = React.useRef(null);
21
22
 
22
23
  const handleNameChange = (_event, name: string) => {
23
24
  setName(name);
@@ -37,6 +38,7 @@ export const FormBasic: React.FunctionComponent = () => {
37
38
  label="Full name"
38
39
  labelHelp={
39
40
  <Popover
41
+ triggerRef={labelHelpRef}
40
42
  headerContent={
41
43
  <div>
42
44
  The{' '}
@@ -63,7 +65,7 @@ export const FormBasic: React.FunctionComponent = () => {
63
65
  </div>
64
66
  }
65
67
  >
66
- <FormGroupLabelHelp aria-label="More info for name field" />
68
+ <FormGroupLabelHelp ref={labelHelpRef} aria-label="More info for name field" />
67
69
  </Popover>
68
70
  }
69
71
  isRequired
@@ -12,6 +12,7 @@ import {
12
12
 
13
13
  export const FormGroupLabelInfo: React.FunctionComponent = () => {
14
14
  const [name, setName] = React.useState('');
15
+ const labelHelpRef = React.useRef(null);
15
16
 
16
17
  const handleNameChange = (_event, name: string) => {
17
18
  setName(name);
@@ -24,6 +25,7 @@ export const FormGroupLabelInfo: React.FunctionComponent = () => {
24
25
  labelInfo="Additional label info"
25
26
  labelHelp={
26
27
  <Popover
28
+ triggerRef={labelHelpRef}
27
29
  headerContent={
28
30
  <div>
29
31
  The{' '}
@@ -50,7 +52,7 @@ export const FormGroupLabelInfo: React.FunctionComponent = () => {
50
52
  </div>
51
53
  }
52
54
  >
53
- <FormGroupLabelHelp aria-label="More info for name field" />
55
+ <FormGroupLabelHelp ref={labelHelpRef} aria-label="More info for name field" />
54
56
  </Popover>
55
57
  }
56
58
  isRequired
@@ -18,6 +18,7 @@ export const FormLimitWidth: React.FunctionComponent = () => {
18
18
  const [name, setName] = React.useState('');
19
19
  const [email, setEmail] = React.useState('');
20
20
  const [phone, setPhone] = React.useState('');
21
+ const labelHelpRef = React.useRef(null);
21
22
 
22
23
  const handleNameChange = (_event, name: string) => {
23
24
  setName(name);
@@ -37,6 +38,7 @@ export const FormLimitWidth: React.FunctionComponent = () => {
37
38
  label="Full name"
38
39
  labelHelp={
39
40
  <Popover
41
+ triggerRef={labelHelpRef}
40
42
  headerContent={
41
43
  <div>
42
44
  The{' '}
@@ -63,7 +65,7 @@ export const FormLimitWidth: React.FunctionComponent = () => {
63
65
  </div>
64
66
  }
65
67
  >
66
- <FormGroupLabelHelp aria-label="More info for name field" />
68
+ <FormGroupLabelHelp ref={labelHelpRef} aria-label="More info for name field" />
67
69
  </Popover>
68
70
  }
69
71
  isRequired
@@ -15,6 +15,9 @@ export const ModalWithForm: React.FunctionComponent = () => {
15
15
  const [nameValue, setNameValue] = React.useState('');
16
16
  const [emailValue, setEmailValue] = React.useState('');
17
17
  const [addressValue, setAddressValue] = React.useState('');
18
+ const nameLabelHelpRef = React.useRef(null);
19
+ const emailLabelHelpRef = React.useRef(null);
20
+ const addressLabelHelpRef = React.useRef(null);
18
21
 
19
22
  const handleModalToggle = (_event: KeyboardEvent | React.MouseEvent) => {
20
23
  setModalOpen(!isModalOpen);
@@ -56,6 +59,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
56
59
  label="Name"
57
60
  labelHelp={
58
61
  <Popover
62
+ triggerRef={nameLabelHelpRef}
59
63
  headerContent={
60
64
  <div>
61
65
  The
@@ -82,7 +86,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
82
86
  </div>
83
87
  }
84
88
  >
85
- <FormGroupLabelHelp aria-label="More info for name field" />
89
+ <FormGroupLabelHelp ref={nameLabelHelpRef} aria-label="More info for name field" />
86
90
  </Popover>
87
91
  }
88
92
  isRequired
@@ -101,6 +105,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
101
105
  label="E-mail"
102
106
  labelHelp={
103
107
  <Popover
108
+ triggerRef={emailLabelHelpRef}
104
109
  headerContent={
105
110
  <div>
106
111
  The
@@ -123,7 +128,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
123
128
  </div>
124
129
  }
125
130
  >
126
- <FormGroupLabelHelp aria-label="More info for e-mail field" />
131
+ <FormGroupLabelHelp ref={emailLabelHelpRef} aria-label="More info for e-mail field" />
127
132
  </Popover>
128
133
  }
129
134
  isRequired
@@ -142,6 +147,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
142
147
  label="Address"
143
148
  labelHelp={
144
149
  <Popover
150
+ triggerRef={addressLabelHelpRef}
145
151
  headerContent={
146
152
  <div>
147
153
  The
@@ -163,7 +169,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
163
169
  </div>
164
170
  }
165
171
  >
166
- <FormGroupLabelHelp aria-label="More info for address field" />
172
+ <FormGroupLabelHelp ref={addressLabelHelpRef} aria-label="More info for address field" />
167
173
  </Popover>
168
174
  }
169
175
  isRequired
@@ -128,9 +128,9 @@ SearchAutocomplete = () => {
128
128
  event.preventDefault(); // by default, the up and down arrow keys scroll the window
129
129
  // the tab, enter, and space keys will close the menu, and the tab key will move browser
130
130
  // focus forward one element (by default)
131
- } else if (event.key === 'Tab' || event.key === 'Enter' || event.key === 'Space') {
131
+ } else if (event.key === 'Tab' || event.key === 'Enter' || event.key === ' ') {
132
132
  setIsAutocompleteOpen(false);
133
- if (event.key === 'Enter' || event.key === 'Space') {
133
+ if (event.key === 'Enter' || event.key === ' ') {
134
134
  event.preventDefault();
135
135
  }
136
136
  }
@@ -89,9 +89,15 @@ export const PasswordStrengthDemo: React.FunctionComponent = () => {
89
89
  }
90
90
  };
91
91
 
92
+ const labelHelpRef = React.useRef(null);
93
+
92
94
  const iconPopover = (
93
- <Popover headerContent={<div>Password Requirements</div>} bodyContent={<div>Password rules</div>}>
94
- <FormGroupLabelHelp aria-label="More info for name field" />
95
+ <Popover
96
+ triggerRef={labelHelpRef}
97
+ headerContent={<div>Password Requirements</div>}
98
+ bodyContent={<div>Password rules</div>}
99
+ >
100
+ <FormGroupLabelHelp ref={labelHelpRef} aria-label="More info for name field" />
95
101
  </Popover>
96
102
  );
97
103
 
@@ -7,6 +7,9 @@ export const ModalWithForm: React.FunctionComponent = () => {
7
7
  const [nameValue, setNameValue] = React.useState('');
8
8
  const [emailValue, setEmailValue] = React.useState('');
9
9
  const [addressValue, setAddressValue] = React.useState('');
10
+ const nameLabelHelpRef = React.useRef(null);
11
+ const emailLabelHelpRef = React.useRef(null);
12
+ const addressLabelHelpRef = React.useRef(null);
10
13
 
11
14
  const handleModalToggle = (_event: KeyboardEvent | React.MouseEvent) => {
12
15
  setModalOpen(!isModalOpen);
@@ -47,6 +50,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
47
50
  label="Name"
48
51
  labelHelp={
49
52
  <Popover
53
+ triggerRef={nameLabelHelpRef}
50
54
  headerContent={
51
55
  <div>
52
56
  The
@@ -73,7 +77,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
73
77
  </div>
74
78
  }
75
79
  >
76
- <FormGroupLabelHelp aria-label="More info for name field" />
80
+ <FormGroupLabelHelp ref={nameLabelHelpRef} aria-label="More info for name field" />
77
81
  </Popover>
78
82
  }
79
83
  isRequired
@@ -92,6 +96,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
92
96
  label="E-mail"
93
97
  labelHelp={
94
98
  <Popover
99
+ triggerRef={emailLabelHelpRef}
95
100
  headerContent={
96
101
  <div>
97
102
  The
@@ -114,7 +119,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
114
119
  </div>
115
120
  }
116
121
  >
117
- <FormGroupLabelHelp aria-label="More info for e-mail field" />
122
+ <FormGroupLabelHelp ref={emailLabelHelpRef} aria-label="More info for e-mail field" />
118
123
  </Popover>
119
124
  }
120
125
  isRequired
@@ -133,6 +138,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
133
138
  label="Address"
134
139
  labelHelp={
135
140
  <Popover
141
+ triggerRef={addressLabelHelpRef}
136
142
  headerContent={
137
143
  <div>
138
144
  The
@@ -154,7 +160,7 @@ export const ModalWithForm: React.FunctionComponent = () => {
154
160
  </div>
155
161
  }
156
162
  >
157
- <FormGroupLabelHelp aria-label="More info for address field" />
163
+ <FormGroupLabelHelp ref={addressLabelHelpRef} aria-label="More info for address field" />
158
164
  </Popover>
159
165
  }
160
166
  isRequired