zent
Version:
一套前端设计语言和基于React的实现
1,699 lines (1,333 loc) • 296 kB
JavaScript
(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-pop"] = factory(require("react"), require("react-dom"));
else
root["zent-pop"] = factory(root["React"], root["ReactDOM"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_6__) {
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
});
exports['default'] = undefined;
var _Pop = __webpack_require__(2);
var _Pop2 = _interopRequireDefault(_Pop);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = _Pop2['default'];
module.exports = exports['default'];
/***/ },
/* 2 */
/***/ 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__(4);
var _zentPopover2 = _interopRequireDefault(_zentPopover);
var _zentButton = __webpack_require__(228);
var _zentButton2 = _interopRequireDefault(_zentButton);
var _classnames = __webpack_require__(7);
var _classnames2 = _interopRequireDefault(_classnames);
var _noop = __webpack_require__(10);
var _noop2 = _interopRequireDefault(_noop);
var _isFunction = __webpack_require__(26);
var _isFunction2 = _interopRequireDefault(_isFunction);
var _isPromise = __webpack_require__(31);
var _isPromise2 = _interopRequireDefault(_isPromise);
var _NoneTrigger = __webpack_require__(230);
var _NoneTrigger2 = _interopRequireDefault(_NoneTrigger);
var _position = __webpack_require__(231);
var _position2 = _interopRequireDefault(_position);
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 Trigger = _zentPopover2['default'].Trigger,
withPopover = _zentPopover2['default'].withPopover;
var stateMap = {
onConfirm: 'confirmPending',
onCancel: 'cancelPending'
};
var PopAction = function (_Component) {
_inherits(PopAction, _Component);
function PopAction() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, PopAction);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = PopAction.__proto__ || Object.getPrototypeOf(PopAction)).call.apply(_ref, [this].concat(args))), _this), _this.handleConfirm = function () {
_this.handleClick('onConfirm');
}, _this.handleCancel = function () {
_this.handleClick('onCancel');
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(PopAction, [{
key: 'handleClick',
// 支持异步的回调函数
// onConfirm/onCancel异步等待的时候要禁用用户关闭
value: function handleClick(callbackName) {
var callback = this.props[callbackName];
var popover = this.props.popover;
if (!(0, _isFunction2['default'])(callback)) {
return popover.close();
}
var changePending = this.props.changePending;
var stateKey = stateMap[callbackName];
var startClose = function startClose() {
changePending(stateKey, true);
};
var finishClose = function finishClose() {
changePending(stateKey, false, popover.close);
};
if (callback.length >= 1) {
startClose();
return callback(finishClose);
}
var maybePromise = callback();
if ((0, _isPromise2['default'])(maybePromise)) {
startClose();
maybePromise.then(finishClose)['catch'](function () {
return changePending(stateKey, false, popover.close);
});
} else {
popover.close();
}
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
prefix = _props.prefix,
type = _props.type,
onConfirm = _props.onConfirm,
onCancel = _props.onCancel,
confirmText = _props.confirmText,
cancelText = _props.cancelText,
confirmPending = _props.confirmPending,
cancelPending = _props.cancelPending;
if (!onConfirm && !onCancel) {
return null;
}
return _react2['default'].createElement(
'div',
{ className: prefix + '-pop-buttons' },
_react2['default'].createElement(
_zentButton2['default'],
{ loading: confirmPending, disabled: cancelPending, size: 'small', type: type, onClick: this.handleConfirm },
confirmText
),
_react2['default'].createElement(
_zentButton2['default'],
{ loading: cancelPending, disabled: confirmPending, size: 'small', onClick: this.handleCancel },
cancelText
)
);
}
}]);
return PopAction;
}(_react.Component);
var BoundPopAction = withPopover(PopAction);
var Pop = (_temp3 = _class2 = function (_Component2) {
_inherits(Pop, _Component2);
function Pop() {
var _ref2;
var _temp2, _this2, _ret2;
_classCallCheck(this, Pop);
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, (_ref2 = Pop.__proto__ || Object.getPrototypeOf(Pop)).call.apply(_ref2, [this].concat(args))), _this2), _this2.state = {
confirmPending: false,
cancelPending: false
}, _this2.changePending = function (key, pending, callback) {
if (_this2.isUnmounted) {
return;
}
_this2.setState(_defineProperty({}, key, pending), callback);
}, _temp2), _possibleConstructorReturn(_this2, _ret2);
}
_createClass(Pop, [{
key: 'renderContent',
value: function renderContent() {
var _props2 = this.props,
prefix = _props2.prefix,
content = _props2.content,
header = _props2.header,
onConfirm = _props2.onConfirm,
onCancel = _props2.onCancel,
confirmText = _props2.confirmText,
cancelText = _props2.cancelText,
type = _props2.type;
var _state = this.state,
confirmPending = _state.confirmPending,
cancelPending = _state.cancelPending;
return _react2['default'].createElement(
_zentPopover2['default'].Content,
null,
header && _react2['default'].createElement(
'div',
{ className: prefix + '-pop-header' },
header
),
_react2['default'].createElement(
'div',
{ className: prefix + '-pop-inner' },
content,
_react2['default'].createElement(BoundPopAction, {
prefix: prefix,
onConfirm: onConfirm,
onCancel: onCancel,
confirmText: confirmText,
cancelText: cancelText,
confirmPending: confirmPending,
cancelPending: cancelPending,
changePending: this.changePending,
type: type
})
),
_react2['default'].createElement('i', { className: prefix + '-pop-arrow' })
);
}
}, {
key: 'renderTrigger',
value: function renderTrigger() {
var _props3 = this.props,
trigger = _props3.trigger,
visible = _props3.visible,
onVisibleChange = _props3.onVisibleChange,
closeOnClickOutside = _props3.closeOnClickOutside,
isOutside = _props3.isOutside,
mouseLeaveDelay = _props3.mouseLeaveDelay,
mouseEnterDelay = _props3.mouseEnterDelay,
children = _props3.children;
if (trigger === 'click') {
return _react2['default'].createElement(
Trigger.Click,
{ autoClose: closeOnClickOutside, isOutside: isOutside },
children
);
}
if (trigger === 'hover') {
return _react2['default'].createElement(
Trigger.Hover,
{ showDelay: mouseEnterDelay, hideDelay: mouseLeaveDelay, isOutside: isOutside },
children
);
}
if (trigger === 'focus') {
return _react2['default'].createElement(
Trigger.Focus,
null,
children
);
}
if (trigger === 'none') {
return _react2['default'].createElement(
_NoneTrigger2['default'],
{ visible: visible, onVisibleChange: onVisibleChange },
children
);
}
return null;
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
this.isUnmounted = true;
}
}, {
key: 'render',
value: function render() {
var _props4 = this.props,
className = _props4.className,
wrapperClassName = _props4.wrapperClassName,
trigger = _props4.trigger,
visible = _props4.visible,
prefix = _props4.prefix,
block = _props4.block,
onShow = _props4.onShow,
onClose = _props4.onClose,
position = _props4.position,
centerArrow = _props4.centerArrow,
onBeforeClose = _props4.onBeforeClose,
onBeforeShow = _props4.onBeforeShow;
var onVisibleChange = this.props.onVisibleChange;
if (trigger === 'none') {
onVisibleChange = onVisibleChange || _noop2['default'];
}
var _state2 = this.state,
confirmPending = _state2.confirmPending,
cancelPending = _state2.cancelPending;
var closePending = confirmPending || cancelPending;
return _react2['default'].createElement(
_zentPopover2['default'],
{
visible: closePending ? true : visible,
onVisibleChange: closePending ? _noop2['default'] : onVisibleChange,
prefix: prefix,
wrapperClassName: (0, _classnames2['default'])(prefix + '-pop-wrapper', wrapperClassName),
className: (0, _classnames2['default'])(prefix + '-pop', className),
cushion: 10,
position: (0, _position2['default'])(position, centerArrow),
display: block ? 'block' : 'inline-block',
onShow: onShow,
onClose: onClose,
onBeforeClose: onBeforeClose,
onBeforeShow: onBeforeShow
},
this.renderTrigger(),
this.renderContent()
);
}
}]);
return Pop;
}(_react.Component), _class2.propTypes = {
trigger: _react.PropTypes.oneOf(['click', 'hover', 'focus', 'none']),
position: _react.PropTypes.oneOf(['left-top', 'left-center', 'left-bottom', 'right-top', 'right-center', 'right-bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right']),
// 是否按小箭头居中对齐trigger来定位
centerArrow: _react.PropTypes.bool,
// trigger是否块级显示
block: _react.PropTypes.bool,
content: _react.PropTypes.node,
header: _react.PropTypes.node,
// confirm形式相关
onConfirm: _react.PropTypes.func,
onCancel: _react.PropTypes.func,
confirmText: _react.PropTypes.string,
cancelText: _react.PropTypes.string,
type: _react.PropTypes.oneOf(['primary', 'default', 'danger', 'success']),
// 打开之后的回调函数
onShow: _react.PropTypes.func,
// 关闭之后的回调函数
onClose: _react.PropTypes.func,
// 打开/关闭前的回调函数,只有用户触发的操作才会调用;通过外部改变`visible`不会触发
onBeforeShow: _react.PropTypes.func,
onBeforeClose: _react.PropTypes.func,
visible: _react.PropTypes.bool,
onVisibleChange: _react.PropTypes.func,
// 只有trigger为hover时才有效
mouseLeaveDelay: _react.PropTypes.number,
mouseEnterDelay: _react.PropTypes.number,
// 只有trigger为click时才有效
closeOnClickOutside: _react.PropTypes.bool,
isClickOutside: _react.PropTypes.func,
prefix: _react.PropTypes.string,
className: _react.PropTypes.string,
wrapperClassName: _react.PropTypes.string
}, _class2.defaultProps = {
trigger: 'none',
position: 'top-center',
centerArrow: false,
block: false,
confirmText: '确定',
cancelText: '取消',
type: 'primary',
closeOnClickOutside: true,
mouseLeaveDelay: 200,
mouseEnterDelay: 200,
className: '',
wrapperClassName: '',
prefix: 'zent'
}, _temp3);
exports['default'] = Pop;
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 _Popover = __webpack_require__(5);
var _Popover2 = _interopRequireDefault(_Popover);
var _withPopover = __webpack_require__(190);
var _withPopover2 = _interopRequireDefault(_withPopover);
var _trigger = __webpack_require__(191);
var _trigger2 = _interopRequireDefault(_trigger);
var _Content = __webpack_require__(32);
var _Content2 = _interopRequireDefault(_Content);
var _placement = __webpack_require__(215);
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'];
/***/ },
/* 5 */
/***/ 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__(6);
var _reactDom2 = _interopRequireDefault(_reactDom);
var _classnames = __webpack_require__(7);
var _classnames2 = _interopRequireDefault(_classnames);
var _noop = __webpack_require__(10);
var _noop2 = _interopRequireDefault(_noop);
var _uniqueId = __webpack_require__(12);
var _uniqueId2 = _interopRequireDefault(_uniqueId);
var _isFunction = __webpack_require__(26);
var _isFunction2 = _interopRequireDefault(_isFunction);
var _isBoolean = __webpack_require__(29);
var _isBoolean2 = _interopRequireDefault(_isBoolean);
var _isPromise = __webpack_require__(31);
var _isPromise2 = _interopRequireDefault(_isPromise);
var _Content = __webpack_require__(32);
var _Content2 = _interopRequireDefault(_Content);
var _Trigger = __webpack_require__(189);
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;
/***/ },
/* 6 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_6__;
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classnames = __webpack_require__(8);
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'];
/***/ },
/* 8 */
/***/ 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__(9)) === 'object' && __webpack_require__(9)) {
// 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;
}
})();
/***/ },
/* 9 */
/***/ function(module, exports) {
/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__;
/* WEBPACK VAR INJECTION */}.call(exports, {}))
/***/ },
/* 10 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
/* DO NOT EDIT!! Auto genetated wrapper for lodash/noop. */
var noop = __webpack_require__(11);
module.exports = noop;
/***/ },
/* 11 */
/***/ 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;
/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
/* DO NOT EDIT!! Auto genetated wrapper for lodash/uniqueId. */
var uniqueId = __webpack_require__(13);
module.exports = uniqueId;
/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var toString = __webpack_require__(14);
/** 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;
/***/ },
/* 14 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var baseToString = __webpack_require__(15);
/**
* 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;
/***/ },
/* 15 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _Symbol = __webpack_require__(16),
arrayMap = __webpack_require__(19),
isArray = __webpack_require__(20),
isSymbol = __webpack_require__(21);
/** 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;
/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var root = __webpack_require__(17);
/** Built-in value references. */
var _Symbol = root.Symbol;
module.exports = _Symbol;
/***/ },
/* 17 */
/***/ 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__(18);
/** 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;
/***/ },
/* 18 */
/***/ 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; }())))
/***/ },
/* 19 */
/***/ 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;
/***/ },
/* 20 */
/***/ 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;
/***/ },
/* 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 baseGetTag = __webpack_require__(22),
isObjectLike = __webpack_require__(25);
/** `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;
/***/ },
/* 22 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _Symbol = __webpack_require__(16),
getRawTag = __webpack_require__(23),
objectToString = __webpack_require__(24);
/** `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;
/***/ },
/* 23 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _Symbol = __webpack_require__(16);
/** 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;
/***/ },
/* 24 */
/***/ 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;
/***/ },
/* 25 */
/***/ 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;
/***/ },
/* 26 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
/* DO NOT EDIT!! Auto genetated wrapper for lodash/isFunction. */
var isFunction = __webpack_require__(27);
module.exports = isFunction;
/***/ },
/* 27 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var baseGetTag = __webpack_require__(22),
isObject = __webpack_require__(28);
/** `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;
/***/ },
/* 28 */
/***/ 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.
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(_.noop);
* // => true
*
* _.isObject(null);
* // => false
*/
function isObject(value) {
var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);
return value != null && (type == 'object' || type == 'function');
}
module.exports = isObject;
/***/ },
/* 29 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
/* DO NOT EDIT!! Auto genetated wrapper for lodash/isBoolean. */
var isBoolean = __webpack_require__(30);
module.exports = isBoolean;
/***/ },
/* 30 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var baseGetTag = __webpack_require__(22),
isObjectLike = __webpack_require__(25);
/** `Object#toString` result references. */
var boolTag = '[object Boolean]';
/**
* Checks if `value` is classified as a boolean primitive or object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
* @example
*
* _.isBoolean(false);
* // => true
*
* _.isBoolean(null);
* // => false
*/
function isBoolean(value) {
return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
}
module.exports = isBoolean;
/***/ },
/* 31 */
/***/ function(module, exports) {
'use strict';
var _typeof2 = 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
});
var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
return typeof obj === "undefined" ? "undefined" : _typeof2(obj);
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof2(obj);
};
exports['default'] = isPromise;
/**
* Test whether an object looks like a promise
*
* @export
* @param {any} obj
* @returns {bool}
*/
function isPromise(obj) {
return !!obj && ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
}
module.exports = exports['default'];
/***/ },
/* 32 */
/***/ 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'] = 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__(7);
var _classnames2 = _interopRequireDefault(_classnames);
var _zentPortal = __webpack_require__(33);
var _zentPortal2 = _interopRequireDefault(_zentPortal);
var _WindowResizeHandler = __webpack_require__(178);
var _WindowResizeHandler2 = _interopRequireDefault(_WindowResizeHandler);
var _findPositionedParent = __webpack_require__(181);
var _findPositionedParent2 = _interopRequireDefault(_findPositionedParent);
var _throttle = __webpack_require__(182);
var _throttle2 = _interopRequireDefault(_throttle);
var _invisible = __webpack_require__(187);
var _invisible2 = _interopRequireDefault(_invisible);
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 === 'u