UNPKG

zent

Version:

一套前端设计语言和基于React的实现

1,600 lines (1,223 loc) 291 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof define === 'function' && define.amd) define(["react", "react-dom"], factory); else if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react"), require("react-dom")); else if(typeof exports === 'object') exports["zent-menu"] = factory(require("react"), require("react-dom")); else root["zent-menu"] = factory(root["React"], root["ReactDOM"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_15__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _Menu = __webpack_require__(2); var _Menu2 = _interopRequireDefault(_Menu); var _MenuItem = __webpack_require__(11); var _MenuItem2 = _interopRequireDefault(_MenuItem); var _SubMenu = __webpack_require__(12); var _SubMenu2 = _interopRequireDefault(_SubMenu); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } _Menu2['default'].MenuItem = _MenuItem2['default']; _Menu2['default'].SubMenu = _SubMenu2['default']; exports['default'] = _Menu2['default']; module.exports = exports['default']; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _class, _temp2; var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _classnames = __webpack_require__(4); var _classnames2 = _interopRequireDefault(_classnames); var _noop = __webpack_require__(7); var _noop2 = _interopRequireDefault(_noop); var _CommonMenu2 = __webpack_require__(9); var _CommonMenu3 = _interopRequireDefault(_CommonMenu2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } 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) : subClass.__proto__ = superClass; } var Menu = (_temp2 = _class = function (_CommonMenu) { _inherits(Menu, _CommonMenu); function Menu() { var _ref; var _temp, _this, _ret; _classCallCheck(this, Menu); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Menu.__proto__ || Object.getPrototypeOf(Menu)).call.apply(_ref, [this].concat(args))), _this), _this.onClick = function (e, index) { var onClick = _this.props.onClick; onClick(index, e); }, _this.renderMenuItem = function (c, i, index) { if (!c) { return null; } return _this.renderCommonMenuItem(c, i, index); }, _temp), _possibleConstructorReturn(_this, _ret); } _createClass(Menu, [{ key: 'render', value: function render() { var _props = this.props, children = _props.children, prefix = _props.prefix, className = _props.className; return _react2['default'].createElement( 'ul', { className: (0, _classnames2['default'])(prefix + '-menu', className) }, _react2['default'].Children.map(children, this.renderMenuItem) ); } }]); return Menu; }(_CommonMenu3['default']), _class.propTypes = { prefix: _react.PropTypes.string, className: _react.PropTypes.string, onClick: _react.PropTypes.func }, _class.defaultProps = { prefix: 'zent', onClick: _noop2['default'] }, _temp2); exports['default'] = Menu; module.exports = exports['default']; /***/ }, /* 3 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_3__; /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _classnames = __webpack_require__(5); Object.defineProperty(exports, 'default', { enumerable: true, get: function get() { return _interopRequireDefault(_classnames)['default']; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } module.exports = exports['default']; /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ /* global define */ (function () { 'use strict'; var hasOwn = {}.hasOwnProperty; function classNames() { var classes = []; for (var i = 0; i < arguments.length; i++) { var arg = arguments[i]; if (!arg) continue; var argType = typeof arg === 'undefined' ? 'undefined' : _typeof(arg); if (argType === 'string' || argType === 'number') { classes.push(arg); } else if (Array.isArray(arg)) { classes.push(classNames.apply(null, arg)); } else if (argType === 'object') { for (var key in arg) { if (hasOwn.call(arg, key) && arg[key]) { classes.push(key); } } } } return classes.join(' '); } if (typeof module !== 'undefined' && module.exports) { module.exports = classNames; } else if ("function" === 'function' && _typeof(__webpack_require__(6)) === 'object' && __webpack_require__(6)) { // register as 'classnames', consistent with npm package name !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () { return classNames; }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else { window.classNames = classNames; } })(); /***/ }, /* 6 */ /***/ function(module, exports) { /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__; /* WEBPACK VAR INJECTION */}.call(exports, {})) /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; /* DO NOT EDIT!! Auto genetated wrapper for lodash/noop. */ var noop = __webpack_require__(8); module.exports = noop; /***/ }, /* 8 */ /***/ function(module, exports) { "use strict"; /** * This method returns `undefined`. * * @static * @memberOf _ * @since 2.3.0 * @category Util * @example * * _.times(2, _.noop); * // => [undefined, undefined] */ function noop() { // No operation performed. } module.exports = noop; /***/ }, /* 9 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = undefined; 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _utils = __webpack_require__(10); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } 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) : subClass.__proto__ = superClass; } var CommonMenu = function (_Component) { _inherits(CommonMenu, _Component); function CommonMenu() { _classCallCheck(this, CommonMenu); return _possibleConstructorReturn(this, (CommonMenu.__proto__ || Object.getPrototypeOf(CommonMenu)).apply(this, arguments)); } _createClass(CommonMenu, [{ key: 'renderCommonMenuItem', value: function renderCommonMenuItem(c, i, subIndex, extraProps) { var newChildProps = _extends({ index: (0, _utils.getKeyFromChildrenIndex)(c, i), onClick: this.onClick }, extraProps); return _react2['default'].cloneElement(c, newChildProps); } }]); return CommonMenu; }(_react.Component); exports['default'] = CommonMenu; module.exports = exports['default']; /***/ }, /* 10 */ /***/ function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getKeyFromChildrenIndex = getKeyFromChildrenIndex; function getKeyFromChildrenIndex(child, index) { return child.key || "item_" + index; } /***/ }, /* 11 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _class, _temp2; var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _classnames = __webpack_require__(4); var _classnames2 = _interopRequireDefault(_classnames); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': 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 _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) : subClass.__proto__ = superClass; } var MenuItem = (_temp2 = _class = function (_Component) { _inherits(MenuItem, _Component); function MenuItem() { var _ref; var _temp, _this, _ret; _classCallCheck(this, MenuItem); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MenuItem.__proto__ || Object.getPrototypeOf(MenuItem)).call.apply(_ref, [this].concat(args))), _this), _this.onClick = function (ev) { var _this$props = _this.props, index = _this$props.index, onClick = _this$props.onClick, disabled = _this$props.disabled; if (disabled) return; onClick(index, ev); }, _temp), _possibleConstructorReturn(_this, _ret); } _createClass(MenuItem, [{ key: 'render', value: function render() { var _props = this.props, prefix = _props.prefix, className = _props.className, children = _props.children, disabled = _props.disabled; return _react2['default'].createElement( 'li', { className: (0, _classnames2['default'])(prefix + '-menu-item', className, _defineProperty({}, prefix + '-menu-item-disabled', disabled)), onClick: this.onClick }, children ); } }]); return MenuItem; }(_react.Component), _class.propTypes = { prefix: _react.PropTypes.string, className: _react.PropTypes.string }, _class.defaultProps = { prefix: 'zent' }, _temp2); exports['default'] = MenuItem; module.exports = exports['default']; /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = undefined; var _class2, _temp3; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _zentPopover = __webpack_require__(13); var _zentPopover2 = _interopRequireDefault(_zentPopover); var _zentIcon = __webpack_require__(232); var _zentIcon2 = _interopRequireDefault(_zentIcon); var _classnames = __webpack_require__(4); var _classnames2 = _interopRequireDefault(_classnames); var _CommonMenu2 = __webpack_require__(9); var _CommonMenu3 = _interopRequireDefault(_CommonMenu2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': 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 _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) : subClass.__proto__ = superClass; } var PopoverContent = _zentPopover2['default'].Content; var PopoverHoverTrigger = _zentPopover2['default'].Trigger.Hover; var withPopover = _zentPopover2['default'].withPopover; var HoverContent = withPopover(function (_CommonMenu) { _inherits(_HoverContent, _CommonMenu); function _HoverContent() { var _ref; var _temp, _this, _ret; _classCallCheck(this, _HoverContent); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = _HoverContent.__proto__ || Object.getPrototypeOf(_HoverContent)).call.apply(_ref, [this].concat(args))), _this), _this.onClick = function (e, index) { var _this$props = _this.props, onClick = _this$props.onClick, popover = _this$props.popover; popover.close(); onClick(e, index); }, _this.renderMenuItem = function (c, i, index) { if (!c) { return null; } return _this.renderCommonMenuItem(c, i, index); }, _temp), _possibleConstructorReturn(_this, _ret); } _createClass(_HoverContent, [{ key: 'render', value: function render() { var _props = this.props, prefix = _props.prefix, children = _props.children; return _react2['default'].createElement( 'ul', { className: (0, _classnames2['default'])(prefix + '-menu', prefix + '-sub-menu') }, _react2['default'].Children.map(children, this.renderMenuItem) ); } }]); return _HoverContent; }(_CommonMenu3['default'])); var MenuItem = (_temp3 = _class2 = function (_Component) { _inherits(MenuItem, _Component); function MenuItem() { var _ref2; var _temp2, _this2, _ret2; _classCallCheck(this, MenuItem); for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, (_ref2 = MenuItem.__proto__ || Object.getPrototypeOf(MenuItem)).call.apply(_ref2, [this].concat(args))), _this2), _this2.renderContent = function () { var _this2$props = _this2.props, title = _this2$props.title, prefix = _this2$props.prefix, children = _this2$props.children, onClick = _this2$props.onClick, className = _this2$props.className, overlayClassName = _this2$props.overlayClassName, disabled = _this2$props.disabled; if (disabled) { return title; } return _react2['default'].createElement( _zentPopover2['default'], { wrapperClassName: prefix + '-sub-menu-popover-wrapper', className: (0, _classnames2['default'])(prefix + '-sub-menu-overlay', overlayClassName), position: _zentPopover2['default'].Position.RightTop, display: 'inline-block', cushion: 5 }, _react2['default'].createElement( PopoverHoverTrigger, { showDelay: 200, hideDelay: 200 }, _react2['default'].createElement( 'div', { className: prefix + '-sub-menu-trigger' }, title, _react2['default'].createElement(_zentIcon2['default'], { type: 'right' }) ) ), _react2['default'].createElement( PopoverContent, null, _react2['default'].createElement( HoverContent, { prefix: prefix, onClick: onClick, className: className }, children ) ) ); }, _temp2), _possibleConstructorReturn(_this2, _ret2); } _createClass(MenuItem, [{ key: 'render', value: function render() { var _props2 = this.props, prefix = _props2.prefix, className = _props2.className, disabled = _props2.disabled; return _react2['default'].createElement( 'li', { className: (0, _classnames2['default'])(prefix + '-menu-item', className, _defineProperty({}, prefix + '-menu-item-disabled', disabled)) }, this.renderContent() ); } }]); return MenuItem; }(_react.Component), _class2.propTypes = { title: _react.PropTypes.string, prefix: _react.PropTypes.string, className: _react.PropTypes.string, overlayClassName: _react.PropTypes.string, disabled: _react.PropTypes.bool, onClick: _react.PropTypes.func }, _class2.defaultProps = { prefix: 'zent', disabled: false }, _temp3); exports['default'] = MenuItem; module.exports = exports['default']; /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _Popover = __webpack_require__(14); var _Popover2 = _interopRequireDefault(_Popover); var _withPopover = __webpack_require__(194); var _withPopover2 = _interopRequireDefault(_withPopover); var _trigger = __webpack_require__(195); var _trigger2 = _interopRequireDefault(_trigger); var _Content = __webpack_require__(36); var _Content2 = _interopRequireDefault(_Content); var _placement = __webpack_require__(219); var _placement2 = _interopRequireDefault(_placement); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } _Popover2['default'].Content = _Content2['default']; _Popover2['default'].Trigger = _trigger2['default']; _Popover2['default'].Position = _placement2['default']; _Popover2['default'].withPopover = _withPopover2['default']; exports['default'] = _Popover2['default']; module.exports = exports['default']; /***/ }, /* 14 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = exports.PopoverContextType = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor); } }return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor; }; }(); var _class, _temp, _initialiseProps; /** * 设计: * * Popover组件只是一个壳子,负责组装Trigger和Content。 * * 弹层实际的打开/关闭都是Content完成的,而什么情况打开弹层是Trigger控制的。 */ var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _reactDom = __webpack_require__(15); var _reactDom2 = _interopRequireDefault(_reactDom); var _classnames = __webpack_require__(4); var _classnames2 = _interopRequireDefault(_classnames); var _noop = __webpack_require__(7); var _noop2 = _interopRequireDefault(_noop); var _uniqueId = __webpack_require__(16); var _uniqueId2 = _interopRequireDefault(_uniqueId); var _isFunction = __webpack_require__(30); var _isFunction2 = _interopRequireDefault(_isFunction); var _isBoolean = __webpack_require__(33); var _isBoolean2 = _interopRequireDefault(_isBoolean); var _isPromise = __webpack_require__(35); var _isPromise2 = _interopRequireDefault(_isPromise); var _Content = __webpack_require__(36); var _Content2 = _interopRequireDefault(_Content); var _Trigger = __webpack_require__(193); var _Trigger2 = _interopRequireDefault(_Trigger); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } 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 === 'undefined' ? 'undefined' : _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 === 'undefined' ? 'undefined' : _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) : subClass.__proto__ = superClass; } var SKIPPED = function SKIPPED() {}; function instanceOf(MaybeDerive, Base) { return MaybeDerive === Base || MaybeDerive.prototype instanceof Base; } function handleBeforeHook(beforeFn, arity, continuation) { // 有参数,传入continuation,由外部去控制何时调用 if (arity >= 1) { return beforeFn(continuation); } // 无参数,如果返回Promise那么resolve后调用continuation;如果返回不是Promise,直接调用Promise var mayBePromise = beforeFn(); if (!(0, _isPromise2['default'])(mayBePromise) && mayBePromise !== SKIPPED) { return continuation(); } mayBePromise.then(continuation); } var PopoverContextType = exports.PopoverContextType = { popover: _react.PropTypes.shape({ close: _react.PropTypes.func.isRequired, open: _react.PropTypes.func.isRequired, getContentNode: _react.PropTypes.func.isRequired, getTriggerNode: _react.PropTypes.func.isRequired }) }; var Popover = (_temp = _class = function (_Component) { _inherits(Popover, _Component); _createClass(Popover, [{ key: 'getChildContext', value: function getChildContext() { return { popover: { close: this.close, open: this.open, getContentNode: this.getPopoverNode, getTriggerNode: this.getTriggerNode } }; } }]); function Popover(props) { _classCallCheck(this, Popover); // id用来唯一标识popover实例 var _this = _possibleConstructorReturn(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).call(this, props)); _initialiseProps.call(_this); _this.id = (0, _uniqueId2['default'])(props.prefix + '-popover-internal-id-'); if (!_this.isVisibilityControlled(props)) { _this.state = { visible: false }; } return _this; } _createClass(Popover, [{ key: 'isVisibilityControlled', value: function isVisibilityControlled(props) { var _ref = props || this.props, visible = _ref.visible, onVisibleChange = _ref.onVisibleChange; var hasOnChange = (0, _isFunction2['default'])(onVisibleChange); var hasVisible = (0, _isBoolean2['default'])(visible); if (hasVisible && !hasOnChange || hasOnChange && !hasVisible) { throw new Error('visible and onVisibleChange must be used together'); } return hasVisible && hasOnChange; } }, { key: 'validateChildren', value: function validateChildren() { var children = this.props.children; var childArray = _react.Children.toArray(children); if (childArray.length !== 2) { throw new Error('There must be one and only one trigger and content in Popover'); } var _childArray$reduce = childArray.reduce(function (state, c) { var type = c.type; if (instanceOf(type, _Trigger2['default'])) { state.trigger = c; } else if (instanceOf(type, _Content2['default'])) { state.content = c; } return state; }, { trigger: null, content: null }), trigger = _childArray$reduce.trigger, content = _childArray$reduce.content; if (!trigger) { throw new Error('Missing trigger in Popover'); } if (!content) { throw new Error('Missing content in Popover'); } return { trigger: trigger, content: content }; } }, { key: 'componentDidMount', value: function componentDidMount() { if (this.isVisibilityControlled() && this.props.visible) { this.props.onShow(); } } }, { key: 'componentDidUpdate', value: function componentDidUpdate(prevProps, prevState) { var visible = this.getVisible(); if (visible !== this.getVisible(prevProps, prevState)) { var afterHook = visible ? this.props.onShow : this.props.onClose; afterHook(); } } }, { key: 'render', value: function render() { var _validateChildren = this.validateChildren(), trigger = _validateChildren.trigger, content = _validateChildren.content; var _props = this.props, display = _props.display, prefix = _props.prefix, className = _props.className, wrapperClassName = _props.wrapperClassName, containerSelector = _props.containerSelector, position = _props.position, cushion = _props.cushion; var visible = this.getVisible(); return _react2['default'].createElement('div', { style: { display: display }, className: (0, _classnames2['default'])(prefix + '-popover-wrapper', wrapperClassName) }, _react2['default'].cloneElement(trigger, { prefix: prefix, contentVisible: visible, onTriggerRefChange: this.onTriggerRefChange, getTriggerNode: this.getTriggerNode, getContentNode: this.getPopoverNode, open: this.open, close: this.close }), _react2['default'].cloneElement(content, { prefix: prefix, className: className, id: this.id, getContentNode: this.getPopoverNode, getAnchor: this.getTriggerNode, visible: visible, cushion: cushion, containerSelector: containerSelector, placement: position })); } }]); return Popover; }(_react.Component), _class.propTypes = { prefix: _react.PropTypes.string, className: _react.PropTypes.string, // custom classname for trigger wrapper wrapperClassName: _react.PropTypes.string, // container的display属性 display: _react.PropTypes.string, // position strategy position: _react.PropTypes.func.isRequired, // 定位时的偏移量 cushion: _react.PropTypes.number, // 只有用户触发的打开/关闭才会触发这两个毁掉 onBeforeClose: _react.PropTypes.func, onBeforeShow: _react.PropTypes.func, // 不管打开/关闭时如何触发的都会被调用 onClose: _react.PropTypes.func, onShow: _react.PropTypes.func, // defaults to body containerSelector: _react.PropTypes.string, children: _react.PropTypes.node.isRequired, // 两个必须一起出现 visible: _react.PropTypes.bool, onVisibleChange: _react.PropTypes.func }, _class.defaultProps = { prefix: 'zent', className: '', wrapperClassName: '', display: 'block', onBeforeClose: _noop2['default'], onBeforeShow: _noop2['default'], onClose: _noop2['default'], onShow: _noop2['default'], cushion: 0, containerSelector: 'body' }, _class.childContextTypes = PopoverContextType, _initialiseProps = function _initialiseProps() { var _this2 = this; this.getVisible = function (props, state) { if (_this2.isVisibilityControlled(props)) { props = props || _this2.props; return props.visible; } state = state || _this2.state; return state.visible; }; this.setVisible = function (visible, props, state) { props = props || _this2.props; state = state || _this2.state; var beforeHook = visible ? props.onBeforeShow : props.onBeforeClose; var onBefore = function onBefore() { // 确保pending的时候不会触发多次beforeHook if (_this2.pendingOnBeforeHook) { return SKIPPED; } _this2.pendingOnBeforeHook = true; return beforeHook.apply(undefined, arguments); }; if (_this2.isVisibilityControlled(props)) { if (_this2.pendingOnBeforeHook || props.visible === visible) { return; } handleBeforeHook(onBefore, beforeHook.length, function () { props.onVisibleChange(visible); _this2.pendingOnBeforeHook = false; }); } else { if (_this2.pendingOnBeforeHook || state.visible === visible) { return; } handleBeforeHook(onBefore, beforeHook.length, function () { _this2.setState({ visible: visible }); _this2.pendingOnBeforeHook = false; }); } }; this.getPopoverNode = function () { return document.querySelector('.' + _this2.id); }; this.onTriggerRefChange = function (triggerInstance) { _this2.triggerNode = _reactDom2['default'].findDOMNode(triggerInstance); }; this.getTriggerNode = function () { return _this2.triggerNode; }; this.open = function () { _this2.setVisible(true); }; this.close = function () { _this2.setVisible(false); }; }, _temp); exports['default'] = Popover; /***/ }, /* 15 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_15__; /***/ }, /* 16 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; /* DO NOT EDIT!! Auto genetated wrapper for lodash/uniqueId. */ var uniqueId = __webpack_require__(17); module.exports = uniqueId; /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var toString = __webpack_require__(18); /** Used to generate unique IDs. */ var idCounter = 0; /** * Generates a unique ID. If `prefix` is given, the ID is appended to it. * * @static * @since 0.1.0 * @memberOf _ * @category Util * @param {string} [prefix=''] The value to prefix the ID with. * @returns {string} Returns the unique ID. * @example * * _.uniqueId('contact_'); * // => 'contact_104' * * _.uniqueId(); * // => '105' */ function uniqueId(prefix) { var id = ++idCounter; return toString(prefix) + id; } module.exports = uniqueId; /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var baseToString = __webpack_require__(19); /** * Converts `value` to a string. An empty string is returned for `null` * and `undefined` values. The sign of `-0` is preserved. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to convert. * @returns {string} Returns the converted string. * @example * * _.toString(null); * // => '' * * _.toString(-0); * // => '-0' * * _.toString([1, 2, 3]); * // => '1,2,3' */ function toString(value) { return value == null ? '' : baseToString(value); } module.exports = toString; /***/ }, /* 19 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _Symbol = __webpack_require__(20), arrayMap = __webpack_require__(23), isArray = __webpack_require__(24), isSymbol = __webpack_require__(25); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; /** Used to convert symbols to primitives and strings. */ var symbolProto = _Symbol ? _Symbol.prototype : undefined, symbolToString = symbolProto ? symbolProto.toString : undefined; /** * The base implementation of `_.toString` which doesn't convert nullish * values to empty strings. * * @private * @param {*} value The value to process. * @returns {string} Returns the string. */ function baseToString(value) { // Exit early for strings to avoid a performance hit in some environments. if (typeof value == 'string') { return value; } if (isArray(value)) { // Recursively convert values (susceptible to call stack limits). return arrayMap(value, baseToString) + ''; } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ''; } var result = value + ''; return result == '0' && 1 / value == -INFINITY ? '-0' : result; } module.exports = baseToString; /***/ }, /* 20 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var root = __webpack_require__(21); /** Built-in value references. */ var _Symbol = root.Symbol; module.exports = _Symbol; /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var freeGlobal = __webpack_require__(22); /** Detect free variable `self`. */ var freeSelf = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) == 'object' && self && self.Object === Object && self; /** Used as a reference to the global object. */ var root = freeGlobal || freeSelf || Function('return this')(); module.exports = root; /***/ }, /* 22 */ /***/ function(module, exports) { /* WEBPACK VAR INJECTION */(function(global) {'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /** Detect free variable `global` from Node.js. */ var freeGlobal = (typeof global === 'undefined' ? 'undefined' : _typeof(global)) == 'object' && global && global.Object === Object && global; module.exports = freeGlobal; /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, /* 23 */ /***/ function(module, exports) { "use strict"; /** * A specialized version of `_.map` for arrays without support for iteratee * shorthands. * * @private * @param {Array} [array] The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function arrayMap(array, iteratee) { var index = -1, length = array == null ? 0 : array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } module.exports = arrayMap; /***/ }, /* 24 */ /***/ function(module, exports) { "use strict"; /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an array, else `false`. * @example * * _.isArray([1, 2, 3]); * // => true * * _.isArray(document.body.children); * // => false * * _.isArray('abc'); * // => false * * _.isArray(_.noop); * // => false */ var isArray = Array.isArray; module.exports = isArray; /***/ }, /* 25 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var baseGetTag = __webpack_require__(26), isObjectLike = __webpack_require__(29); /** `Object#toString` result references. */ var symbolTag = '[object Symbol]'; /** * Checks if `value` is classified as a `Symbol` primitive or object. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. * @example * * _.isSymbol(Symbol.iterator); * // => true * * _.isSymbol('abc'); * // => false */ function isSymbol(value) { return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag; } module.exports = isSymbol; /***/ }, /* 26 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _Symbol = __webpack_require__(20), getRawTag = __webpack_require__(27), objectToString = __webpack_require__(28); /** `Object#toString` result references. */ var nullTag = '[object Null]', undefinedTag = '[object Undefined]'; /** Built-in value references. */ var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined; /** * The base implementation of `getTag` without fallbacks for buggy environments. * * @private * @param {*} value The value to query. * @returns {string} Returns the `toStringTag`. */ function baseGetTag(value) { if (value == null) { return value === undefined ? undefinedTag : nullTag; } return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); } module.exports = baseGetTag; /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _Symbol = __webpack_require__(20); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var nativeObjectToString = objectProto.toString; /** Built-in value references. */ var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined; /** * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. * * @private * @param {*} value The value to query. * @returns {string} Returns the raw `toStringTag`. */ function getRawTag(value) { var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; try { value[symToStringTag] = undefined; var unmasked = true; } catch (e) {} var result = nativeObjectToString.call(value); if (unmasked) { if (isOwn) { value[symToStringTag] = tag; } else { delete value[symToStringTag]; } } return result; } module.exports = getRawTag; /***/ }, /* 28 */ /***/ function(module, exports) { "use strict"; /** Used for built-in method references. */ var objectProto = Object.prototype; /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var nativeObjectToString = objectProto.toString; /** * Converts `value` to a string using `Object.prototype.toString`. * * @private * @param {*} value The value to convert. * @returns {string} Returns the converted string. */ function objectToString(value) { return nativeObjectToString.call(value); } module.exports = objectToString; /***/ }, /* 29 */ /***/ function(module, exports) { 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /** * Checks if `value` is object-like. A value is object-like if it's not `null` * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * * _.isObjectLike({}); * // => true * * _.isObjectLike([1, 2, 3]); * // => true * * _.isObjectLike(_.noop); * // => false * * _.isObjectLike(null); * // => false */ function isObjectLike(value) { return value != null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) == 'object'; } module.exports = isObjectLike; /***/ }, /* 30 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; /* DO NOT EDIT!! Auto genetated wrapper for lodash/isFunction. */ var isFunction = __webpack_require__(31); module.exports = isFunction; /***/ }, /* 31 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var baseGetTag = __webpack_require__(26), isObject = __webpack_require__(32); /** `Object#toString` result references. */ var asyncTag = '[object AsyncFunction]', funcTag = '[object Function]', genTag = '[object GeneratorFunction]', proxyTag = '[object Proxy]'; /** * Checks if `value` is classified as a `Function` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a function, else `false`. * @example * * _.isFunction(_); * // => true * * _.isFunction(/abc/); * // => false */ function isFunction(value) { if (!isObject(value)) { return false; } // The use of `Object#toString` avoids issues with the `typeof` operator // in Safari 9 which returns 'object' for typed arrays and other constructors. var tag = baseGetTag(value); return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; } module.exports = isFunction; /***/ }, /* 32 */ /***/ function(module, exports) { 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /** * Checks if `value` is the * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. *