import React, { Component } from 'react';
import PropTypes from 'prop-types';
import MenuDroppo from '../menu-droppo';
export class Dropdown extends Component {
render() {
const {
containerClassName,
isOpen,
onClickOutside,
style,
innerStyle,
children,
useCssTransition,
} = this.props;
const innerStyleDefaults = {
borderRadius: '4px',
padding: '8px 16px',
background: 'var(--color-background-default)',
boxShadow: 'var(--shadow-size-sm) var(--color-shadow-default)',
...innerStyle,
};
return (
{children}
);
}
}
Dropdown.defaultProps = {
useCssTransition: false,
};
Dropdown.propTypes = {
isOpen: PropTypes.bool.isRequired,
children: PropTypes.node,
style: PropTypes.object.isRequired,
onClickOutside: PropTypes.func,
innerStyle: PropTypes.object,
useCssTransition: PropTypes.bool,
containerClassName: PropTypes.string,
};
export class DropdownMenuItem extends Component {
render() {
const { onClick, closeMenu, children, style } = this.props;
return (
{
onClick();
closeMenu();
}}
onKeyPress={(event) => {
if (event.key === 'Enter') {
onClick();
closeMenu();
}
}}
style={{
listStyle: 'none',
padding: '8px 0px',
fontSize: '18px',
fontStyle: 'normal',
cursor: 'pointer',
display: 'flex',
justifyContent: 'flex-start',
alignItems: 'center',
...style,
}}
tabIndex="0"
>
{children}
);
}
}
DropdownMenuItem.propTypes = {
closeMenu: PropTypes.func.isRequired,
onClick: PropTypes.func.isRequired,
children: PropTypes.node,
style: PropTypes.object,
};