mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-23 18:41:38 +01:00
99 lines
2.2 KiB
JavaScript
99 lines
2.2 KiB
JavaScript
|
const Component = require('react').Component
|
||
|
const PropTypes = require('react').PropTypes
|
||
|
const h = require('react-hyperscript')
|
||
|
const MenuDroppo = require('./menu-droppo')
|
||
|
const extend = require('xtend')
|
||
|
|
||
|
const noop = () => {}
|
||
|
|
||
|
class Dropdown extends Component {
|
||
|
render () {
|
||
|
const { isOpen, onClickOutside, style, innerStyle, children, useCssTransition } = this.props
|
||
|
|
||
|
const innerStyleDefaults = extend({
|
||
|
borderRadius: '4px',
|
||
|
padding: '8px 16px',
|
||
|
background: 'rgba(0, 0, 0, 0.8)',
|
||
|
boxShadow: 'rgba(0, 0, 0, 0.15) 0px 2px 2px 2px',
|
||
|
}, innerStyle)
|
||
|
|
||
|
return h(
|
||
|
MenuDroppo,
|
||
|
{
|
||
|
useCssTransition,
|
||
|
isOpen,
|
||
|
zIndex: 11,
|
||
|
onClickOutside,
|
||
|
style,
|
||
|
innerStyle: innerStyleDefaults,
|
||
|
},
|
||
|
[
|
||
|
h(
|
||
|
'style',
|
||
|
`
|
||
|
li.dropdown-menu-item:hover { color:rgb(225, 225, 225); }
|
||
|
li.dropdown-menu-item { color: rgb(185, 185, 185); position: relative }
|
||
|
`
|
||
|
),
|
||
|
...children,
|
||
|
]
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Dropdown.defaultProps = {
|
||
|
isOpen: false,
|
||
|
onClick: noop,
|
||
|
useCssTransition: false,
|
||
|
}
|
||
|
|
||
|
Dropdown.propTypes = {
|
||
|
isOpen: PropTypes.bool.isRequired,
|
||
|
onClick: PropTypes.func.isRequired,
|
||
|
children: PropTypes.node,
|
||
|
style: PropTypes.object.isRequired,
|
||
|
onClickOutside: PropTypes.func,
|
||
|
innerStyle: PropTypes.object,
|
||
|
useCssTransition: PropTypes.bool,
|
||
|
}
|
||
|
|
||
|
class DropdownMenuItem extends Component {
|
||
|
render () {
|
||
|
const { onClick, closeMenu, children, style } = this.props
|
||
|
|
||
|
return h(
|
||
|
'li.dropdown-menu-item',
|
||
|
{
|
||
|
onClick: () => {
|
||
|
onClick()
|
||
|
closeMenu()
|
||
|
},
|
||
|
style: Object.assign({
|
||
|
listStyle: 'none',
|
||
|
padding: '8px 0px 8px 0px',
|
||
|
fontSize: '18px',
|
||
|
fontStyle: 'normal',
|
||
|
fontFamily: 'Montserrat Regular',
|
||
|
cursor: 'pointer',
|
||
|
display: 'flex',
|
||
|
justifyContent: 'flex-start',
|
||
|
alignItems: 'center',
|
||
|
}, style),
|
||
|
},
|
||
|
children
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DropdownMenuItem.propTypes = {
|
||
|
closeMenu: PropTypes.func.isRequired,
|
||
|
onClick: PropTypes.func.isRequired,
|
||
|
children: PropTypes.node,
|
||
|
style: PropTypes.object,
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
Dropdown,
|
||
|
DropdownMenuItem,
|
||
|
}
|