UNPKG

antd-mobile

Version:

基于 React 的移动设计规范实现

195 lines (159 loc) 6.57 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = undefined; var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var React = _interopRequireWildcard(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); var _SubMenu = require('./SubMenu.web'); var _SubMenu2 = _interopRequireDefault(_SubMenu); var _list = require('../list'); var _list2 = _interopRequireDefault(_list); var _flex = require('../flex'); var _flex2 = _interopRequireDefault(_flex); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var Menu = function (_React$Component) { (0, _inherits3["default"])(Menu, _React$Component); function Menu(props) { (0, _classCallCheck3["default"])(this, Menu); var _this = (0, _possibleConstructorReturn3["default"])(this, _React$Component.call(this, props)); _this.onClickListItem = function (el) { if (el.isLeaf === true) { _this.setState({ firstValue: el.value, SubMenuData: [] }, function () { _this.props.onChange([el.value]); }); } _this.setState({ firstValue: el.value, SubMenuData: el.children || [] }); }; _this.onClickSubMenuItem = function (el) { var _this$props = _this.props; var level = _this$props.level; var onChange = _this$props.onChange; setTimeout(function () { onChange(level === 2 ? [_this.state.firstValue, el.value] : [el.value]); }, 300); }; var data = props.data; var value = props.value; var level = props.level; if (level !== 2) { _this.state = { SubMenuData: data }; return (0, _possibleConstructorReturn3["default"])(_this); } if (value.length > 0) { var _SubMenuData = data.filter(function (el) { return el.value === (value.length > 0 && value[0] || null); })[0].children || []; _this.state = { SubMenuData: _SubMenuData, firstValue: value[0] || '' }; return (0, _possibleConstructorReturn3["default"])(_this); } var SubMenuData = data[0].children || []; if (data[0].isLeaf) { _this.state = { SubMenuData: [], firstValue: '' }; } else { _this.state = { SubMenuData: SubMenuData, firstValue: data[0].value }; } return _this; } Menu.prototype.render = function render() { var _classNames, _this2 = this; var _props = this.props; var className = _props.className; var data = _props.data; var prefixCls = _props.prefixCls; var value = _props.value; var level = _props.level; var style = _props.style; var height = this.props.height; if (!height) { height = document.documentElement.clientHeight / 2; } var heightStyle = { height: Math.round(height) + 'px', overflowY: 'scroll' }; var _state = this.state; var SubMenuData = _state.SubMenuData; var firstValue = _state.firstValue; var wrapCls = (0, _classnames2["default"])((_classNames = {}, (0, _defineProperty3["default"])(_classNames, prefixCls, true), (0, _defineProperty3["default"])(_classNames, className, !!className), _classNames)); var listContent = data.map(function (el, index) { return React.createElement( _list2["default"].Item, { className: el.value === firstValue ? prefixCls + '-selected' : '', onClick: _this2.onClickListItem.bind(_this2, el), key: 'listitem-1-' + index }, el.label ); }); return React.createElement( 'div', { className: wrapCls, style: (0, _objectAssign2["default"])({}, style, heightStyle) }, React.createElement( _flex2["default"], { align: 'top' }, level === 2 ? React.createElement( _flex2["default"].Item, { style: heightStyle }, React.createElement( _list2["default"], null, React.createElement( _list2["default"].Body, null, listContent ) ) ) : null, React.createElement( _flex2["default"].Item, { style: heightStyle }, React.createElement(_SubMenu2["default"], { value: SubMenuData.filter(function (el) { return el.value === (value.length && value[value.length - 1]); }), data: SubMenuData, onChange: this.onClickSubMenuItem }) ) ) ); }; return Menu; }(React.Component); exports["default"] = Menu; Menu.propTypes = { level: _react.PropTypes.oneOf([1, 2]) }; Menu.defaultProps = { prefixCls: 'am-menu', value: [], data: [], level: 2, onChange: function onChange() {} }; module.exports = exports['default'];