UNPKG

uxcore-menu

Version:

uxcore-menu component for uxcore.

212 lines (162 loc) 10.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _rcMenu = require('rc-menu'); var _rcMenu2 = _interopRequireDefault(_rcMenu); var _cssAnimation = require('css-animation'); var _cssAnimation2 = _interopRequireDefault(_cssAnimation); var _classnames2 = require('classnames'); var _classnames3 = _interopRequireDefault(_classnames2); var _SubMenu = require('./SubMenu'); var _SubMenu2 = _interopRequireDefault(_SubMenu); var _Item = require('./Item'); var _Item2 = _interopRequireDefault(_Item); var _ItemGroup = require('./ItemGroup'); var _ItemGroup2 = _interopRequireDefault(_ItemGroup); var _utils = require('./utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } /** * Menu Component for uxcore * @author vincent.bian * * Copyright 2014-2015, Uxcore Team, Alinw. * All rights reserved. */ /* eslint-disable no-param-reassign */ var Menu = function (_React$Component) { _inherits(Menu, _React$Component); function Menu() { _classCallCheck(this, Menu); return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); } Menu.prototype.getChildContext = function getChildContext() { var _props = this.props, mode = _props.mode, level = _props.level, prefixCls = _props.prefixCls, className = _props.className, lineClamp = _props.lineClamp; return { mode: mode, level: level, prefixCls: prefixCls, theme: className ? className.replace(prefixCls + '-', '') : '', lineClamp: lineClamp }; }; Menu.prototype.animate = function animate(node, show, done) { var prefixCls = this.props.prefixCls; var height = void 0; return (0, _cssAnimation2["default"])(node, prefixCls + '-collapse', { start: function start() { if (!show) { node.style.height = node.offsetHeight + 'px'; node.style.opacity = 0; } else { height = node.offsetHeight; node.style.height = 0; node.style.opacity = 1; // node.style.transform = 'translate(-10px, 0)'; } }, active: function active() { node.style.height = (show ? height : 0) + 'px'; // node.style.transform = `translate(${show ? '0' : '-10px'}, 0)`; }, end: function end() { node.style.height = ''; done(); } }); }; Menu.prototype.render = function render() { var me = this; var _props2 = this.props, onOpen = _props2.onOpen, onClose = _props2.onClose, lineClamp = _props2.lineClamp, prefixCls = _props2.prefixCls, className = _props2.className, props = _objectWithoutProperties(_props2, ['onOpen', 'onClose', 'lineClamp', 'prefixCls', 'className']); props.prefixCls = prefixCls; props.className = (0, _classnames3["default"])(className, _defineProperty({}, prefixCls + '-lte-react16', _utils.IS_LET_REACT_16)); var openAnimation = { enter: function enter(node, done) { return me.animate(node, true, done); }, appear: function appear(node, done) { return me.animate(node, true, done); }, leave: function leave(node, done) { return me.animate(node, false, done); } }; var onOpenChange = function onOpenChange(openKeys) { if (props.onOpenChange) { props.onOpenChange(openKeys); } if (onOpen) { onOpen({ openKeys: openKeys }); } if (onClose) { onClose({ openKeys: openKeys }); } }; if (props.mode === 'inline') { return _react2["default"].createElement(_rcMenu2["default"], _extends({}, props, { openAnimation: openAnimation, onOpenChange: onOpenChange })); } return _react2["default"].createElement(_rcMenu2["default"], _extends({}, props, { onOpenChange: onOpenChange })); }; return Menu; }(_react2["default"].Component); Menu.defaultProps = { mode: 'vertical', level: 1, prefixCls: 'kuma-menu', onOpen: function onOpen() {}, onClose: function onClose() {}, onOpenChange: function onOpenChange() {}, inlineIndent: 14, lineClamp: 1, className: '', openAnimation: 'zoom' }; Menu.propTypes = { mode: _propTypes2["default"].string, level: _propTypes2["default"].number, prefixCls: _propTypes2["default"].string, onOpen: _propTypes2["default"].func, onClose: _propTypes2["default"].func, onOpenChange: _propTypes2["default"].func, inlineIndent: _propTypes2["default"].oneOfType([_propTypes2["default"].number, _propTypes2["default"].string]), lineClamp: _propTypes2["default"].number, className: _propTypes2["default"].string, openAnimation: _propTypes2["default"].string }; Menu.childContextTypes = { mode: _propTypes2["default"].string, level: _propTypes2["default"].number, prefixCls: _propTypes2["default"].string, theme: _propTypes2["default"].string, lineClamp: _propTypes2["default"].number }; Menu.ItemGroup = _ItemGroup2["default"]; Menu.SubMenu = _SubMenu2["default"]; Menu.Item = _Item2["default"]; Menu.Divider = _rcMenu.Divider; exports["default"] = Menu; module.exports = exports['default'];