File tree 1 file changed +22
-10
lines changed
packages/react-core/src/next/components/Dropdown
1 file changed +22
-10
lines changed Original file line number Diff line number Diff line change @@ -32,6 +32,14 @@ export interface DropdownProps extends MenuProps, OUIAProps {
32
32
ouiaSafe ?: boolean ;
33
33
/** z-index of the dropdown menu */
34
34
zIndex ?: number ;
35
+ /** The container to append the dropdown to. Defaults to 'inline'.
36
+ * If your dropdown is being cut off you can append it to an element higher up the DOM tree.
37
+ * Some examples:
38
+ * appendTo="inline"
39
+ * appendTo={() => document.body}
40
+ * appendTo={document.getElementById('target')}
41
+ */
42
+ appendTo ?: HTMLElement | ( ( ) => HTMLElement ) | 'inline' ;
35
43
}
36
44
37
45
const DropdownBase : React . FunctionComponent < DropdownProps > = ( {
@@ -48,6 +56,7 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
48
56
ouiaId,
49
57
ouiaSafe = true ,
50
58
zIndex = 9999 ,
59
+ appendTo = 'inline' ,
51
60
...props
52
61
} : DropdownProps ) => {
53
62
const localMenuRef = React . useRef < HTMLDivElement > ( ) ;
@@ -109,21 +118,24 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
109
118
} as React . CSSProperties
110
119
} ) }
111
120
{ ...props }
121
+ { ...ouiaProps }
112
122
>
113
123
< MenuContent > { children } </ MenuContent >
114
124
</ Menu >
115
125
) ;
116
- return (
117
- < div ref = { containerRef } { ... ouiaProps } >
118
- < Popper
119
- trigger = { toggle ( toggleRef ) }
120
- removeFindDomNode
121
- popper = { menu }
122
- appendTo = { containerRef . current || undefined }
123
- isVisible = { isOpen }
124
- zIndex = { zIndex }
125
- />
126
+ const popperProps = {
127
+ trigger : toggle ( toggleRef ) ,
128
+ removeFindDomNode : true ,
129
+ popper : menu ,
130
+ isVisible : isOpen ,
131
+ zIndex
132
+ } ;
133
+ return appendTo === 'inline' ? (
134
+ < div ref = { containerRef } >
135
+ < Popper { ... popperProps } appendTo = { containerRef . current || undefined } />
126
136
</ div >
137
+ ) : (
138
+ < Popper { ...popperProps } appendTo = { appendTo } />
127
139
) ;
128
140
} ;
129
141
You can’t perform that action at this time.
0 commit comments