UNPKG

@codementor/ui-kit

Version:
145 lines (111 loc) 5.13 kB
'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;