aboutsummaryrefslogtreecommitdiffstats
path: root/src/react/PopupMenu.js
diff options
context:
space:
mode:
authorIsrael Lavi <israel.lavi@intl.att.com>2018-05-21 17:42:00 +0300
committerIsrael Lavi <il0695@att.com>2018-05-21 17:52:01 +0300
commit1994c98063c27a41797dec01f2ca9fcbe33ceab0 (patch)
treef30beeaf15a8358f6da78fdd74bcbda74bd334f8 /src/react/PopupMenu.js
parent4749f4631426fcbe29ed98cef8f24cab18b501d0 (diff)
init commit onap ui
Change-Id: I1dace78817dbba752c550c182dfea118b4a38646 Issue-ID: SDC-1350 Signed-off-by: Israel Lavi <il0695@att.com>
Diffstat (limited to 'src/react/PopupMenu.js')
-rw-r--r--src/react/PopupMenu.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/react/PopupMenu.js b/src/react/PopupMenu.js
new file mode 100644
index 0000000..d2cd29a
--- /dev/null
+++ b/src/react/PopupMenu.js
@@ -0,0 +1,39 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import PopupMenuItem from './PopupMenuItem';
+
+class PopupMenu extends React.Component {
+ render() {
+ const {children = [], onMenuItemClick, position = {}, relative} = this.props;
+ const style = relative ? {left: position.x, top: position.y} : {};
+
+ return (
+ <ul className={`sdc-menu-list ${relative ? 'relative' : ''}`} style={style}>
+ {React.Children.toArray(children).map((child, i) => React.cloneElement(child,
+ {
+ onClick: child.props.onClick || onMenuItemClick,
+ key: i
+ }))}
+ </ul>
+ );
+ }
+}
+
+PopupMenu.propTypes = {
+ relative: PropTypes.bool,
+ position: PropTypes.shape({
+ x: PropTypes.number,
+ y: PropTypes.number
+ }),
+ onMenuItemClick: PropTypes.func
+};
+
+PopupMenu.defaultProps = {
+ relative: false
+};
+
+export const PopupMenuSeparator = () => <li className='separator' />;
+
+PopupMenu.Separator = PopupMenuSeparator;
+PopupMenu.Item = PopupMenuItem;
+export default PopupMenu;