forked from folio-org/stripes-components
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOptionsListWrapper.js
More file actions
56 lines (50 loc) · 1.23 KB
/
Copy pathOptionsListWrapper.js
File metadata and controls
56 lines (50 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import React from 'react';
import PropTypes from 'prop-types';
import Popper from '../Popper';
const OptionsListWrapper = React.forwardRef(({
useLegacy,
children,
controlRef,
isOpen,
renderToOverlay,
menuPropGetter,
modifiers,
...props
}, ref) => {
if (useLegacy) {
return <div {...menuPropGetter({ ref })} {...props} hidden={!isOpen}>{children}</div>;
}
const {
overlayRef,
...menuRest
} = menuPropGetter({ ref, refKey: 'overlayRef' });
let portal;
if (renderToOverlay) {
portal = document.getElementById('OverlayContainer');
}
return (
<Popper
anchorRef={controlRef}
overlayProps={{ ...menuRest, ...props }}
overlayRef={overlayRef}
isOpen={isOpen}
portal={portal}
placement="bottom-start"
modifiers={modifiers}
hideIfClosed
>
{children}
</Popper>
);
});
OptionsListWrapper.displayName = 'OptionsListWrapper';
OptionsListWrapper.propTypes = {
children: PropTypes.node,
controlRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
isOpen: PropTypes.bool,
menuPropGetter: PropTypes.func,
modifiers: PropTypes.object,
renderToOverlay: PropTypes.bool,
useLegacy: PropTypes.bool,
};
export default OptionsListWrapper;