@codementor/ui-kit
Version:
145 lines (111 loc) • 5.13 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _style = require('styled-jsx/style');
var _style2 = _interopRequireDefault(_style);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _ClickAwayListener = require('../ClickAwayListener');
var _ClickAwayListener2 = _interopRequireDefault(_ClickAwayListener);
var _DefaultMenuIcon = require('./DefaultMenuIcon');
var _DefaultMenuIcon2 = _interopRequireDefault(_DefaultMenuIcon);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DropdownMenu = function (_PureComponent) {
(0, _inherits3.default)(DropdownMenu, _PureComponent);
function DropdownMenu(props) {
(0, _classCallCheck3.default)(this, DropdownMenu);
var _this = (0, _possibleConstructorReturn3.default)(this, (DropdownMenu.__proto__ || (0, _getPrototypeOf2.default)(DropdownMenu)).call(this, props));
_this._toggleDropdownMenu = _this._toggleDropdownMenu.bind(_this);
_this._closeDropdownMenu = _this._closeDropdownMenu.bind(_this);
_this.state = {
showDropdownMenu: false
};
return _this;
}
(0, _createClass3.default)(DropdownMenu, [{
key: 'render',
value: function render() {
var _props = this.props,
triggerNode = _props.triggerNode,
children = _props.children,
menuAlign = _props.menuAlign,
menuTopOffset = _props.menuTopOffset,
darkMode = _props.darkMode;
var showDropdownMenu = this.state.showDropdownMenu;
var settingDropdownBoxClasses = (0, _classnames2.default)({
'dropdown-menu__box': true,
'dropdown-menu__box--hide': !showDropdownMenu,
'dropdown-menu__box--right': menuAlign === 'right',
'dropdown-menu__box--left': menuAlign === 'left'
});
return _react2.default.createElement(
_ClickAwayListener2.default,
{ onClickAway: this._closeDropdownMenu },
_react2.default.createElement(
'div',
{ onClick: this._toggleDropdownMenu, className: _style2.default.dynamic([['3591167013', [menuTopOffset, darkMode ? '#00445b' : '#eee']]]) + ' ' + 'dropdown-menu'
},
triggerNode || _react2.default.createElement(_DefaultMenuIcon2.default, {
darkMode: darkMode,
active: showDropdownMenu }),
_react2.default.createElement(
'div',
{
className: _style2.default.dynamic([['3591167013', [menuTopOffset, darkMode ? '#00445b' : '#eee']]]) + ' ' + (settingDropdownBoxClasses || '')
},
children
),
_react2.default.createElement(_style2.default, {
styleId: '3591167013',
css: '.dropdown-menu.__jsx-style-dynamic-selector{position:relative;cursor:pointer;display:inline-block;}.dropdown-menu__box.__jsx-style-dynamic-selector{position:absolute;width:220px;box-shadow:0 3px 3px 0 rgba(0,0,0,0.17);top:' + menuTopOffset + ';border-top:1px solid ' + (darkMode ? '#00445b' : '#eee') + ';z-index:4;}.dropdown-menu__box--left.__jsx-style-dynamic-selector{left:0;}.dropdown-menu__box--right.__jsx-style-dynamic-selector{right:0;}.dropdown-menu__box--hide.__jsx-style-dynamic-selector{display:none;}',
dynamic: [menuTopOffset, darkMode ? '#00445b' : '#eee']
})
)
);
}
}, {
key: '_closeDropdownMenu',
value: function _closeDropdownMenu() {
if (this.state.showDropdownMenu) {
this.setState({ showDropdownMenu: false });
}
}
}, {
key: '_toggleDropdownMenu',
value: function _toggleDropdownMenu() {
this.setState(function (state) {
return {
showDropdownMenu: !state.showDropdownMenu
};
});
}
}]);
return DropdownMenu;
}(_react.PureComponent);
DropdownMenu.propTypes = {
children: _propTypes2.default.node.isRequired,
menuAlign: _propTypes2.default.oneOf(['left', 'right']),
menuTopOffset: _propTypes2.default.string,
triggerNode: _propTypes2.default.node,
darkMode: _propTypes2.default.bool
};
DropdownMenu.defaultTypes = {
menuAlign: 'left',
menuTopOffset: '40px'
};
exports.default = DropdownMenu;