k-form-design
Version:
基于vue、ant-design-vue的表单设计器,可视化开发表单
1,627 lines (1,333 loc) • 76.3 kB
JavaScript
((typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] || []).push([[1,23,25],{
/***/ "0952":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = __webpack_require__("41b2");
var _extends3 = _interopRequireDefault(_extends2);
var _vue = __webpack_require__("8bbf");
var _vue2 = _interopRequireDefault(_vue);
var _vueRef = __webpack_require__("46cf");
var _vueRef2 = _interopRequireDefault(_vueRef);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _contains = __webpack_require__("af8e");
var _contains2 = _interopRequireDefault(_contains);
var _propsUtil = __webpack_require__("73c8");
var _requestAnimationTimeout = __webpack_require__("31f2");
var _addEventListener = __webpack_require__("3355");
var _addEventListener2 = _interopRequireDefault(_addEventListener);
var _warning = __webpack_require__("a7e2");
var _warning2 = _interopRequireDefault(_warning);
var _Popup = __webpack_require__("d27c");
var _Popup2 = _interopRequireDefault(_Popup);
var _utils = __webpack_require__("dd42");
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _vnode = __webpack_require__("d2f9");
var _ContainerRender = __webpack_require__("f772d");
var _ContainerRender2 = _interopRequireDefault(_ContainerRender);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
_vue2['default'].use(_vueRef2['default'], { name: 'ant-ref' });
function returnEmptyString() {
return '';
}
function returnDocument() {
return window.document;
}
var ALL_HANDLERS = ['click', 'mousedown', 'touchstart', 'mouseenter', 'mouseleave', 'focus', 'blur', 'contextmenu'];
exports['default'] = {
name: 'Trigger',
mixins: [_BaseMixin2['default']],
props: {
action: _vueTypes2['default'].oneOfType([_vueTypes2['default'].string, _vueTypes2['default'].arrayOf(_vueTypes2['default'].string)]).def([]),
showAction: _vueTypes2['default'].any.def([]),
hideAction: _vueTypes2['default'].any.def([]),
getPopupClassNameFromAlign: _vueTypes2['default'].any.def(returnEmptyString),
// onPopupVisibleChange: PropTypes.func.def(noop),
afterPopupVisibleChange: _vueTypes2['default'].func.def(_utils.noop),
popup: _vueTypes2['default'].any,
popupStyle: _vueTypes2['default'].object.def(function () {
return {};
}),
prefixCls: _vueTypes2['default'].string.def('rc-trigger-popup'),
popupClassName: _vueTypes2['default'].string.def(''),
popupPlacement: _vueTypes2['default'].string,
builtinPlacements: _vueTypes2['default'].object,
popupTransitionName: _vueTypes2['default'].oneOfType([_vueTypes2['default'].string, _vueTypes2['default'].object]),
popupAnimation: _vueTypes2['default'].any,
mouseEnterDelay: _vueTypes2['default'].number.def(0),
mouseLeaveDelay: _vueTypes2['default'].number.def(0.1),
zIndex: _vueTypes2['default'].number,
focusDelay: _vueTypes2['default'].number.def(0),
blurDelay: _vueTypes2['default'].number.def(0.15),
getPopupContainer: _vueTypes2['default'].func,
getDocument: _vueTypes2['default'].func.def(returnDocument),
forceRender: _vueTypes2['default'].bool,
destroyPopupOnHide: _vueTypes2['default'].bool.def(false),
mask: _vueTypes2['default'].bool.def(false),
maskClosable: _vueTypes2['default'].bool.def(true),
// onPopupAlign: PropTypes.func.def(noop),
popupAlign: _vueTypes2['default'].object.def(function () {
return {};
}),
popupVisible: _vueTypes2['default'].bool,
defaultPopupVisible: _vueTypes2['default'].bool.def(false),
maskTransitionName: _vueTypes2['default'].oneOfType([_vueTypes2['default'].string, _vueTypes2['default'].object]),
maskAnimation: _vueTypes2['default'].string,
stretch: _vueTypes2['default'].string,
alignPoint: _vueTypes2['default'].bool // Maybe we can support user pass position in the future
},
provide: function provide() {
return {
vcTriggerContext: this
};
},
inject: {
vcTriggerContext: { 'default': function _default() {
return {};
} },
savePopupRef: { 'default': function _default() {
return _utils.noop;
} },
dialogContext: { 'default': function _default() {
return null;
} }
},
data: function data() {
var _this = this;
var props = this.$props;
var popupVisible = void 0;
if ((0, _propsUtil.hasProp)(this, 'popupVisible')) {
popupVisible = !!props.popupVisible;
} else {
popupVisible = !!props.defaultPopupVisible;
}
ALL_HANDLERS.forEach(function (h) {
_this['fire' + h] = function (e) {
_this.fireEvents(h, e);
};
});
return {
prevPopupVisible: popupVisible,
sPopupVisible: popupVisible,
point: null
};
},
watch: {
popupVisible: function popupVisible(val) {
if (val !== undefined) {
this.prevPopupVisible = this.sPopupVisible;
this.sPopupVisible = val;
}
}
},
deactivated: function deactivated() {
this.setPopupVisible(false);
},
mounted: function mounted() {
var _this2 = this;
this.$nextTick(function () {
_this2.renderComponent(null);
_this2.updatedCal();
});
},
updated: function updated() {
var _this3 = this;
var triggerAfterPopupVisibleChange = function triggerAfterPopupVisibleChange() {
if (_this3.sPopupVisible !== _this3.prevPopupVisible) {
_this3.afterPopupVisibleChange(_this3.sPopupVisible);
}
_this3.prevPopupVisible = _this3.sPopupVisible;
};
this.renderComponent(null, triggerAfterPopupVisibleChange);
this.$nextTick(function () {
_this3.updatedCal();
});
},
beforeDestroy: function beforeDestroy() {
this.clearDelayTimer();
this.clearOutsideHandler();
clearTimeout(this.mouseDownTimeout);
},
methods: {
updatedCal: function updatedCal() {
var props = this.$props;
var state = this.$data;
// We must listen to `mousedown` or `touchstart`, edge case:
// https://github.com/ant-design/ant-design/issues/5804
// https://github.com/react-component/calendar/issues/250
// https://github.com/react-component/trigger/issues/50
if (state.sPopupVisible) {
var currentDocument = void 0;
if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextmenuToShow())) {
currentDocument = props.getDocument();
this.clickOutsideHandler = (0, _addEventListener2['default'])(currentDocument, 'mousedown', this.onDocumentClick);
}
// always hide on mobile
if (!this.touchOutsideHandler) {
currentDocument = currentDocument || props.getDocument();
this.touchOutsideHandler = (0, _addEventListener2['default'])(currentDocument, 'touchstart', this.onDocumentClick);
}
// close popup when trigger type contains 'onContextmenu' and document is scrolling.
if (!this.contextmenuOutsideHandler1 && this.isContextmenuToShow()) {
currentDocument = currentDocument || props.getDocument();
this.contextmenuOutsideHandler1 = (0, _addEventListener2['default'])(currentDocument, 'scroll', this.onContextmenuClose);
}
// close popup when trigger type contains 'onContextmenu' and window is blur.
if (!this.contextmenuOutsideHandler2 && this.isContextmenuToShow()) {
this.contextmenuOutsideHandler2 = (0, _addEventListener2['default'])(window, 'blur', this.onContextmenuClose);
}
} else {
this.clearOutsideHandler();
}
},
onMouseenter: function onMouseenter(e) {
var mouseEnterDelay = this.$props.mouseEnterDelay;
this.fireEvents('mouseenter', e);
this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);
},
onMouseMove: function onMouseMove(e) {
this.fireEvents('mousemove', e);
this.setPoint(e);
},
onMouseleave: function onMouseleave(e) {
this.fireEvents('mouseleave', e);
this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);
},
onPopupMouseenter: function onPopupMouseenter() {
this.clearDelayTimer();
},
onPopupMouseleave: function onPopupMouseleave(e) {
if (e && e.relatedTarget && !e.relatedTarget.setTimeout && this._component && this._component.getPopupDomNode && (0, _contains2['default'])(this._component.getPopupDomNode(), e.relatedTarget)) {
return;
}
this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);
},
onFocus: function onFocus(e) {
this.fireEvents('focus', e);
// incase focusin and focusout
this.clearDelayTimer();
if (this.isFocusToShow()) {
this.focusTime = Date.now();
this.delaySetPopupVisible(true, this.$props.focusDelay);
}
},
onMousedown: function onMousedown(e) {
this.fireEvents('mousedown', e);
this.preClickTime = Date.now();
},
onTouchstart: function onTouchstart(e) {
this.fireEvents('touchstart', e);
this.preTouchTime = Date.now();
},
onBlur: function onBlur(e) {
if (!(0, _contains2['default'])(e.target, e.relatedTarget || document.activeElement)) {
this.fireEvents('blur', e);
this.clearDelayTimer();
if (this.isBlurToHide()) {
this.delaySetPopupVisible(false, this.$props.blurDelay);
}
}
},
onContextmenu: function onContextmenu(e) {
e.preventDefault();
this.fireEvents('contextmenu', e);
this.setPopupVisible(true, e);
},
onContextmenuClose: function onContextmenuClose() {
if (this.isContextmenuToShow()) {
this.close();
}
},
onClick: function onClick(event) {
this.fireEvents('click', event);
// focus will trigger click
if (this.focusTime) {
var preTime = void 0;
if (this.preClickTime && this.preTouchTime) {
preTime = Math.min(this.preClickTime, this.preTouchTime);
} else if (this.preClickTime) {
preTime = this.preClickTime;
} else if (this.preTouchTime) {
preTime = this.preTouchTime;
}
if (Math.abs(preTime - this.focusTime) < 20) {
return;
}
this.focusTime = 0;
}
this.preClickTime = 0;
this.preTouchTime = 0;
// Only prevent default when all the action is click.
// https://github.com/ant-design/ant-design/issues/17043
// https://github.com/ant-design/ant-design/issues/17291
if (this.isClickToShow() && (this.isClickToHide() || this.isBlurToHide()) && event && event.preventDefault) {
event.preventDefault();
}
if (event && event.domEvent) {
event.domEvent.preventDefault();
}
var nextVisible = !this.$data.sPopupVisible;
if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) {
this.setPopupVisible(!this.$data.sPopupVisible, event);
}
},
onPopupMouseDown: function onPopupMouseDown() {
var _this4 = this;
var _vcTriggerContext = this.vcTriggerContext,
vcTriggerContext = _vcTriggerContext === undefined ? {} : _vcTriggerContext;
this.hasPopupMouseDown = true;
clearTimeout(this.mouseDownTimeout);
this.mouseDownTimeout = setTimeout(function () {
_this4.hasPopupMouseDown = false;
}, 0);
if (vcTriggerContext.onPopupMouseDown) {
vcTriggerContext.onPopupMouseDown.apply(vcTriggerContext, arguments);
}
},
onDocumentClick: function onDocumentClick(event) {
if (this.$props.mask && !this.$props.maskClosable) {
return;
}
var target = event.target;
var root = this.$el;
if (!(0, _contains2['default'])(root, target) && !this.hasPopupMouseDown) {
this.close();
}
},
getPopupDomNode: function getPopupDomNode() {
if (this._component && this._component.getPopupDomNode) {
return this._component.getPopupDomNode();
}
return null;
},
getRootDomNode: function getRootDomNode() {
return this.$el;
// return this.$el.children[0] || this.$el
},
handleGetPopupClassFromAlign: function handleGetPopupClassFromAlign(align) {
var className = [];
var props = this.$props;
var popupPlacement = props.popupPlacement,
builtinPlacements = props.builtinPlacements,
prefixCls = props.prefixCls,
alignPoint = props.alignPoint,
getPopupClassNameFromAlign = props.getPopupClassNameFromAlign;
if (popupPlacement && builtinPlacements) {
className.push((0, _utils.getAlignPopupClassName)(builtinPlacements, prefixCls, align, alignPoint));
}
if (getPopupClassNameFromAlign) {
className.push(getPopupClassNameFromAlign(align));
}
return className.join(' ');
},
getPopupAlign: function getPopupAlign() {
var props = this.$props;
var popupPlacement = props.popupPlacement,
popupAlign = props.popupAlign,
builtinPlacements = props.builtinPlacements;
if (popupPlacement && builtinPlacements) {
return (0, _utils.getAlignFromPlacement)(builtinPlacements, popupPlacement, popupAlign);
}
return popupAlign;
},
savePopup: function savePopup(node) {
this._component = node;
this.savePopupRef(node);
},
getComponent: function getComponent() {
var h = this.$createElement;
var self = this;
var mouseProps = {};
if (this.isMouseEnterToShow()) {
mouseProps.mouseenter = self.onPopupMouseenter;
}
if (this.isMouseLeaveToHide()) {
mouseProps.mouseleave = self.onPopupMouseleave;
}
mouseProps.mousedown = this.onPopupMouseDown;
mouseProps.touchstart = this.onPopupMouseDown;
var handleGetPopupClassFromAlign = self.handleGetPopupClassFromAlign,
getRootDomNode = self.getRootDomNode,
getContainer = self.getContainer;
var _self$$props = self.$props,
prefixCls = _self$$props.prefixCls,
destroyPopupOnHide = _self$$props.destroyPopupOnHide,
popupClassName = _self$$props.popupClassName,
action = _self$$props.action,
popupAnimation = _self$$props.popupAnimation,
popupTransitionName = _self$$props.popupTransitionName,
popupStyle = _self$$props.popupStyle,
mask = _self$$props.mask,
maskAnimation = _self$$props.maskAnimation,
maskTransitionName = _self$$props.maskTransitionName,
zIndex = _self$$props.zIndex,
stretch = _self$$props.stretch,
alignPoint = _self$$props.alignPoint;
var _$data = this.$data,
sPopupVisible = _$data.sPopupVisible,
point = _$data.point;
var align = this.getPopupAlign();
var popupProps = {
props: {
prefixCls: prefixCls,
destroyPopupOnHide: destroyPopupOnHide,
visible: sPopupVisible,
point: alignPoint && point,
action: action,
align: align,
animation: popupAnimation,
getClassNameFromAlign: handleGetPopupClassFromAlign,
stretch: stretch,
getRootDomNode: getRootDomNode,
mask: mask,
zIndex: zIndex,
transitionName: popupTransitionName,
maskAnimation: maskAnimation,
maskTransitionName: maskTransitionName,
getContainer: getContainer,
popupClassName: popupClassName,
popupStyle: popupStyle
},
on: (0, _extends3['default'])({
align: (0, _propsUtil.getListeners)(this).popupAlign || _utils.noop
}, mouseProps),
directives: [{
name: 'ant-ref',
value: this.savePopup
}]
};
return h(
_Popup2['default'],
popupProps,
[(0, _propsUtil.getComponentFromProp)(self, 'popup')]
);
},
getContainer: function getContainer() {
var props = this.$props,
dialogContext = this.dialogContext;
var popupContainer = document.createElement('div');
// Make sure default popup container will never cause scrollbar appearing
// https://github.com/react-component/trigger/issues/41
popupContainer.style.position = 'absolute';
popupContainer.style.top = '0';
popupContainer.style.left = '0';
popupContainer.style.width = '100%';
var mountNode = props.getPopupContainer ? props.getPopupContainer(this.$el, dialogContext) : props.getDocument().body;
mountNode.appendChild(popupContainer);
this.popupContainer = popupContainer;
return popupContainer;
},
setPopupVisible: function setPopupVisible(sPopupVisible, event) {
var alignPoint = this.alignPoint,
prevPopupVisible = this.sPopupVisible;
this.clearDelayTimer();
if (prevPopupVisible !== sPopupVisible) {
if (!(0, _propsUtil.hasProp)(this, 'popupVisible')) {
this.setState({
sPopupVisible: sPopupVisible,
prevPopupVisible: prevPopupVisible
});
}
var listeners = (0, _propsUtil.getListeners)(this);
listeners.popupVisibleChange && listeners.popupVisibleChange(sPopupVisible);
}
// Always record the point position since mouseEnterDelay will delay the show
if (alignPoint && event) {
this.setPoint(event);
}
},
setPoint: function setPoint(point) {
var alignPoint = this.$props.alignPoint;
if (!alignPoint || !point) return;
this.setState({
point: {
pageX: point.pageX,
pageY: point.pageY
}
});
},
delaySetPopupVisible: function delaySetPopupVisible(visible, delayS, event) {
var _this5 = this;
var delay = delayS * 1000;
this.clearDelayTimer();
if (delay) {
var point = event ? { pageX: event.pageX, pageY: event.pageY } : null;
this.delayTimer = (0, _requestAnimationTimeout.requestAnimationTimeout)(function () {
_this5.setPopupVisible(visible, point);
_this5.clearDelayTimer();
}, delay);
} else {
this.setPopupVisible(visible, event);
}
},
clearDelayTimer: function clearDelayTimer() {
if (this.delayTimer) {
(0, _requestAnimationTimeout.cancelAnimationTimeout)(this.delayTimer);
this.delayTimer = null;
}
},
clearOutsideHandler: function clearOutsideHandler() {
if (this.clickOutsideHandler) {
this.clickOutsideHandler.remove();
this.clickOutsideHandler = null;
}
if (this.contextmenuOutsideHandler1) {
this.contextmenuOutsideHandler1.remove();
this.contextmenuOutsideHandler1 = null;
}
if (this.contextmenuOutsideHandler2) {
this.contextmenuOutsideHandler2.remove();
this.contextmenuOutsideHandler2 = null;
}
if (this.touchOutsideHandler) {
this.touchOutsideHandler.remove();
this.touchOutsideHandler = null;
}
},
createTwoChains: function createTwoChains(event) {
var fn = function fn() {};
var events = (0, _propsUtil.getListeners)(this);
if (this.childOriginEvents[event] && events[event]) {
return this['fire' + event];
}
fn = this.childOriginEvents[event] || events[event] || fn;
return fn;
},
isClickToShow: function isClickToShow() {
var _$props = this.$props,
action = _$props.action,
showAction = _$props.showAction;
return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;
},
isContextmenuToShow: function isContextmenuToShow() {
var _$props2 = this.$props,
action = _$props2.action,
showAction = _$props2.showAction;
return action.indexOf('contextmenu') !== -1 || showAction.indexOf('contextmenu') !== -1;
},
isClickToHide: function isClickToHide() {
var _$props3 = this.$props,
action = _$props3.action,
hideAction = _$props3.hideAction;
return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;
},
isMouseEnterToShow: function isMouseEnterToShow() {
var _$props4 = this.$props,
action = _$props4.action,
showAction = _$props4.showAction;
return action.indexOf('hover') !== -1 || showAction.indexOf('mouseenter') !== -1;
},
isMouseLeaveToHide: function isMouseLeaveToHide() {
var _$props5 = this.$props,
action = _$props5.action,
hideAction = _$props5.hideAction;
return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseleave') !== -1;
},
isFocusToShow: function isFocusToShow() {
var _$props6 = this.$props,
action = _$props6.action,
showAction = _$props6.showAction;
return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;
},
isBlurToHide: function isBlurToHide() {
var _$props7 = this.$props,
action = _$props7.action,
hideAction = _$props7.hideAction;
return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;
},
forcePopupAlign: function forcePopupAlign() {
if (this.$data.sPopupVisible && this._component && this._component.$refs.alignInstance) {
this._component.$refs.alignInstance.forceAlign();
}
},
fireEvents: function fireEvents(type, e) {
if (this.childOriginEvents[type]) {
this.childOriginEvents[type](e);
}
this.__emit(type, e);
},
close: function close() {
this.setPopupVisible(false);
}
},
render: function render() {
var _this6 = this;
var h = arguments[0];
var sPopupVisible = this.sPopupVisible;
var children = (0, _propsUtil.filterEmpty)(this.$slots['default']);
var _$props8 = this.$props,
forceRender = _$props8.forceRender,
alignPoint = _$props8.alignPoint;
if (children.length > 1) {
(0, _warning2['default'])(false, 'Trigger $slots.default.length > 1, just support only one default', true);
}
var child = children[0];
this.childOriginEvents = (0, _propsUtil.getDataEvents)(child);
var newChildProps = {
props: {},
nativeOn: {},
key: 'trigger'
};
if (this.isContextmenuToShow()) {
newChildProps.nativeOn.contextmenu = this.onContextmenu;
} else {
newChildProps.nativeOn.contextmenu = this.createTwoChains('contextmenu');
}
if (this.isClickToHide() || this.isClickToShow()) {
newChildProps.nativeOn.click = this.onClick;
newChildProps.nativeOn.mousedown = this.onMousedown;
newChildProps.nativeOn.touchstart = this.onTouchstart;
} else {
newChildProps.nativeOn.click = this.createTwoChains('click');
newChildProps.nativeOn.mousedown = this.createTwoChains('mousedown');
newChildProps.nativeOn.touchstart = this.createTwoChains('onTouchstart');
}
if (this.isMouseEnterToShow()) {
newChildProps.nativeOn.mouseenter = this.onMouseenter;
if (alignPoint) {
newChildProps.nativeOn.mousemove = this.onMouseMove;
}
} else {
newChildProps.nativeOn.mouseenter = this.createTwoChains('mouseenter');
}
if (this.isMouseLeaveToHide()) {
newChildProps.nativeOn.mouseleave = this.onMouseleave;
} else {
newChildProps.nativeOn.mouseleave = this.createTwoChains('mouseleave');
}
if (this.isFocusToShow() || this.isBlurToHide()) {
newChildProps.nativeOn.focus = this.onFocus;
newChildProps.nativeOn.blur = this.onBlur;
} else {
newChildProps.nativeOn.focus = this.createTwoChains('focus');
newChildProps.nativeOn.blur = function (e) {
if (e && (!e.relatedTarget || !(0, _contains2['default'])(e.target, e.relatedTarget))) {
_this6.createTwoChains('blur')(e);
}
};
}
this.trigger = (0, _vnode.cloneElement)(child, newChildProps);
return h(_ContainerRender2['default'], {
attrs: {
parent: this,
visible: sPopupVisible,
autoMount: false,
forceRender: forceRender,
getComponent: this.getComponent,
getContainer: this.getContainer,
children: function children(_ref) {
var renderComponent = _ref.renderComponent;
_this6.renderComponent = renderComponent;
return _this6.trigger;
}
}
});
}
};
/***/ }),
/***/ "0ca5":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getRequestAnimationFrame;
exports.cancelRequestAnimationFrame = cancelRequestAnimationFrame;
var availablePrefixs = ['moz', 'ms', 'webkit'];
function requestAnimationFramePolyfill() {
var lastTime = 0;
return function (callback) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function () {
callback(currTime + timeToCall);
}, timeToCall);
lastTime = currTime + timeToCall;
return id;
};
}
function getRequestAnimationFrame() {
if (typeof window === 'undefined') {
return function () {};
}
if (window.requestAnimationFrame) {
// https://github.com/vuejs/vue/issues/4465
return window.requestAnimationFrame.bind(window);
}
var prefix = availablePrefixs.filter(function (key) {
return key + 'RequestAnimationFrame' in window;
})[0];
return prefix ? window[prefix + 'RequestAnimationFrame'] : requestAnimationFramePolyfill();
}
function cancelRequestAnimationFrame(id) {
if (typeof window === 'undefined') {
return null;
}
if (window.cancelAnimationFrame) {
return window.cancelAnimationFrame(id);
}
var prefix = availablePrefixs.filter(function (key) {
return key + 'CancelAnimationFrame' in window || key + 'CancelRequestAnimationFrame' in window;
})[0];
return prefix ? (window[prefix + 'CancelAnimationFrame'] || window[prefix + 'CancelRequestAnimationFrame']).call(this, id) : clearTimeout(id);
}
/***/ }),
/***/ "118f":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Align = __webpack_require__("875d");
var _Align2 = _interopRequireDefault(_Align);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = _Align2['default']; // based on vc-align 2.4.5
/***/ }),
/***/ "1db9":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.warning = warning;
exports.note = note;
exports.resetWarned = resetWarned;
exports.call = call;
exports.warningOnce = warningOnce;
exports.noteOnce = noteOnce;
/* eslint-disable no-console */
var warned = {};
function warning(valid, message) {
// Support uglify
if (false) {}
}
function note(valid, message) {
// Support uglify
if (false) {}
}
function resetWarned() {
warned = {};
}
function call(method, valid, message) {
if (!valid && !warned[message]) {
method(false, message);
warned[message] = true;
}
}
function warningOnce(valid, message) {
call(warning, valid, message);
}
function noteOnce(valid, message) {
call(note, valid, message);
}
exports['default'] = warningOnce;
/* eslint-enable */
/***/ }),
/***/ "2f52":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Trigger = __webpack_require__("0952");
var _Trigger2 = _interopRequireDefault(_Trigger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = _Trigger2['default']; // based on rc-trigger 2.6.5
/***/ }),
/***/ "31f2":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.requestAnimationTimeout = exports.cancelAnimationTimeout = undefined;
var _getRequestAnimationFrame = __webpack_require__("0ca5");
var _getRequestAnimationFrame2 = _interopRequireDefault(_getRequestAnimationFrame);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var raf = (0, _getRequestAnimationFrame2['default'])();
var cancelAnimationTimeout = exports.cancelAnimationTimeout = function cancelAnimationTimeout(frame) {
return (0, _getRequestAnimationFrame.cancelRequestAnimationFrame)(frame.id);
};
var requestAnimationTimeout = exports.requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {
var start = Date.now();
function timeout() {
if (Date.now() - start >= delay) {
callback.call();
} else {
frame.id = raf(timeout);
}
}
var frame = {
id: raf(timeout)
};
return frame;
};
/***/ }),
/***/ "3355":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = addEventListenerWrap;
var _addDomEventListener = __webpack_require__("2c80");
var _addDomEventListener2 = _interopRequireDefault(_addDomEventListener);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function addEventListenerWrap(target, eventType, cb, option) {
return (0, _addDomEventListener2['default'])(target, eventType, cb, option);
}
/***/ }),
/***/ "401b":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isCssAnimationSupported = undefined;
var _typeof2 = __webpack_require__("1098");
var _typeof3 = _interopRequireDefault(_typeof2);
var _Event = __webpack_require__("e098");
var _Event2 = _interopRequireDefault(_Event);
var _componentClasses = __webpack_require__("3c55");
var _componentClasses2 = _interopRequireDefault(_componentClasses);
var _requestAnimationTimeout = __webpack_require__("31f2");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var isCssAnimationSupported = _Event2['default'].endEvents.length !== 0; // https://github.com/yiminghe/css-animation 1.5.0
var capitalPrefixes = ['Webkit', 'Moz', 'O',
// ms is special .... !
'ms'];
var prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];
function getStyleProperty(node, name) {
// old ff need null, https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle
var style = window.getComputedStyle(node, null);
var ret = '';
for (var i = 0; i < prefixes.length; i++) {
ret = style.getPropertyValue(prefixes[i] + name);
if (ret) {
break;
}
}
return ret;
}
function fixBrowserByTimeout(node) {
if (isCssAnimationSupported) {
var transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0;
var transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0;
var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;
var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;
var time = Math.max(transitionDuration + transitionDelay, animationDuration + animationDelay);
// sometimes, browser bug
node.rcEndAnimTimeout = setTimeout(function () {
node.rcEndAnimTimeout = null;
if (node.rcEndListener) {
node.rcEndListener();
}
}, time * 1000 + 200);
}
}
function clearBrowserBugTimeout(node) {
if (node.rcEndAnimTimeout) {
clearTimeout(node.rcEndAnimTimeout);
node.rcEndAnimTimeout = null;
}
}
var cssAnimation = function cssAnimation(node, transitionName, endCallback) {
var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : (0, _typeof3['default'])(transitionName)) === 'object';
var className = nameIsObj ? transitionName.name : transitionName;
var activeClassName = nameIsObj ? transitionName.active : transitionName + '-active';
var end = endCallback;
var start = void 0;
var active = void 0;
var nodeClasses = (0, _componentClasses2['default'])(node);
if (endCallback && Object.prototype.toString.call(endCallback) === '[object Object]') {
end = endCallback.end;
start = endCallback.start;
active = endCallback.active;
}
if (node.rcEndListener) {
node.rcEndListener();
}
node.rcEndListener = function (e) {
if (e && e.target !== node) {
return;
}
if (node.rcAnimTimeout) {
(0, _requestAnimationTimeout.cancelAnimationTimeout)(node.rcAnimTimeout);
node.rcAnimTimeout = null;
}
clearBrowserBugTimeout(node);
nodeClasses.remove(className);
nodeClasses.remove(activeClassName);
_Event2['default'].removeEndEventListener(node, node.rcEndListener);
node.rcEndListener = null;
// Usually this optional end is used for informing an owner of
// a leave animation and telling it to remove the child.
if (end) {
end();
}
};
_Event2['default'].addEndEventListener(node, node.rcEndListener);
if (start) {
start();
}
nodeClasses.add(className);
node.rcAnimTimeout = (0, _requestAnimationTimeout.requestAnimationTimeout)(function () {
node.rcAnimTimeout = null;
nodeClasses.add(className);
nodeClasses.add(activeClassName);
if (active) {
(0, _requestAnimationTimeout.requestAnimationTimeout)(active, 0);
}
fixBrowserByTimeout(node);
// 30ms for firefox
}, 30);
return {
stop: function stop() {
if (node.rcEndListener) {
node.rcEndListener();
}
}
};
};
cssAnimation.style = function (node, style, callback) {
if (node.rcEndListener) {
node.rcEndListener();
}
node.rcEndListener = function (e) {
if (e && e.target !== node) {
return;
}
if (node.rcAnimTimeout) {
(0, _requestAnimationTimeout.cancelAnimationTimeout)(node.rcAnimTimeout);
node.rcAnimTimeout = null;
}
clearBrowserBugTimeout(node);
_Event2['default'].removeEndEventListener(node, node.rcEndListener);
node.rcEndListener = null;
// Usually this optional callback is used for informing an owner of
// a leave animation and telling it to remove the child.
if (callback) {
callback();
}
};
_Event2['default'].addEndEventListener(node, node.rcEndListener);
node.rcAnimTimeout = (0, _requestAnimationTimeout.requestAnimationTimeout)(function () {
for (var s in style) {
if (style.hasOwnProperty(s)) {
node.style[s] = style[s];
}
}
node.rcAnimTimeout = null;
fixBrowserByTimeout(node);
}, 0);
};
cssAnimation.setTransition = function (node, p, value) {
var property = p;
var v = value;
if (value === undefined) {
v = property;
property = '';
}
property = property || '';
capitalPrefixes.forEach(function (prefix) {
node.style[prefix + 'Transition' + property] = v;
});
};
cssAnimation.isCssAnimationSupported = isCssAnimationSupported;
exports.isCssAnimationSupported = isCssAnimationSupported;
exports['default'] = cssAnimation;
/***/ }),
/***/ "48bb":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _toConsumableArray2 = __webpack_require__("9b57");
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _extends2 = __webpack_require__("41b2");
var _extends3 = _interopRequireDefault(_extends2);
var _propsUtil = __webpack_require__("73c8");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = {
methods: {
setState: function setState() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var callback = arguments[1];
var newState = typeof state === 'function' ? state(this.$data, this.$props) : state;
if (this.getDerivedStateFromProps) {
var s = this.getDerivedStateFromProps((0, _propsUtil.getOptionProps)(this), (0, _extends3['default'])({}, this.$data, newState));
if (s === null) {
return;
} else {
newState = (0, _extends3['default'])({}, newState, s || {});
}
}
(0, _extends3['default'])(this.$data, newState);
this.$forceUpdate();
this.$nextTick(function () {
callback && callback();
});
},
__emit: function __emit() {
// 直接调用listeners,底层组件不需要vueTool记录events
var args = [].slice.call(arguments, 0);
var eventName = args[0];
var event = this.$listeners[eventName];
if (args.length && event) {
if (Array.isArray(event)) {
for (var i = 0, l = event.length; i < l; i++) {
event[i].apply(event, (0, _toConsumableArray3['default'])(args.slice(1)));
}
} else {
event.apply(undefined, (0, _toConsumableArray3['default'])(args.slice(1)));
}
}
}
}
};
/***/ }),
/***/ "8207":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _babelHelperVueJsxMergeProps = __webpack_require__("92fa");
var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _LazyRenderBox = __webpack_require__("ed5c");
var _LazyRenderBox2 = _interopRequireDefault(_LazyRenderBox);
var _propsUtil = __webpack_require__("73c8");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = {
props: {
hiddenClassName: _vueTypes2['default'].string.def(''),
prefixCls: _vueTypes2['default'].string,
visible: _vueTypes2['default'].bool
},
render: function render() {
var h = arguments[0];
var _$props = this.$props,
prefixCls = _$props.prefixCls,
visible = _$props.visible,
hiddenClassName = _$props.hiddenClassName;
var divProps = {
on: (0, _propsUtil.getListeners)(this)
};
return h(
'div',
(0, _babelHelperVueJsxMergeProps2['default'])([divProps, { 'class': !visible ? hiddenClassName : '' }]),
[h(
_LazyRenderBox2['default'],
{ 'class': prefixCls + '-content', attrs: { visible: visible }
},
[this.$slots['default']]
)]
);
}
};
/***/ }),
/***/ "875d":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = __webpack_require__("41b2");
var _extends3 = _interopRequireDefault(_extends2);
var _typeof2 = __webpack_require__("1098");
var _typeof3 = _interopRequireDefault(_typeof2);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _domAlign = __webpack_require__("91a5");
var _addEventListener = __webpack_require__("3355");
var _addEventListener2 = _interopRequireDefault(_addEventListener);
var _util = __webpack_require__("df4e");
var _vnode = __webpack_require__("d2f9");
var _cloneDeep = __webpack_require__("0644");
var _cloneDeep2 = _interopRequireDefault(_cloneDeep);
var _propsUtil = __webpack_require__("73c8");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getElement(func) {
if (typeof func !== 'function' || !func) return null;
return func();
}
function getPoint(point) {
if ((typeof point === 'undefined' ? 'undefined' : (0, _typeof3['default'])(point)) !== 'object' || !point) return null;
return point;
}
exports['default'] = {
props: {
childrenProps: _vueTypes2['default'].object,
align: _vueTypes2['default'].object.isRequired,
target: _vueTypes2['default'].oneOfType([_vueTypes2['default'].func, _vueTypes2['default'].object]).def(function () {
return window;
}),
monitorBufferTime: _vueTypes2['default'].number.def(50),
monitorWindowResize: _vueTypes2['default'].bool.def(false),
disabled: _vueTypes2['default'].bool.def(false)
},
data: function data() {
this.aligned = false;
return {};
},
mounted: function mounted() {
var _this = this;
this.$nextTick(function () {
_this.prevProps = (0, _extends3['default'])({}, _this.$props);
var props = _this.$props;
// if parent ref not attached .... use document.getElementById
!_this.aligned && _this.forceAlign();
if (!props.disabled && props.monitorWindowResize) {
_this.startMonitorWindowResize();
}
});
},
updated: function updated() {
var _this2 = this;
this.$nextTick(function () {
var prevProps = _this2.prevProps;
var props = _this2.$props;
var reAlign = false;
if (!props.disabled) {
var source = _this2.$el;
var sourceRect = source ? source.getBoundingClientRect() : null;
if (prevProps.disabled) {
reAlign = true;
} else {
var lastElement = getElement(prevProps.target);
var currentElement = getElement(props.target);
var lastPoint = getPoint(prevProps.target);
var currentPoint = getPoint(props.target);
if ((0, _util.isWindow)(lastElement) && (0, _util.isWindow)(currentElement)) {
// Skip if is window
reAlign = false;
} else if (lastElement !== currentElement || // Element change
lastElement && !currentElement && currentPoint || // Change from element to point
lastPoint && currentPoint && currentElement || // Change from point to element
currentPoint && !(0, _util.isSamePoint)(lastPoint, currentPoint)) {
reAlign = true;
}
// If source element size changed
var preRect = _this2.sourceRect || {};
if (!reAlign && source && (!(0, _util.isSimilarValue)(preRect.width, sourceRect.width) || !(0, _util.isSimilarValue)(preRect.height, sourceRect.height))) {
reAlign = true;
}
}
_this2.sourceRect = sourceRect;
}
if (reAlign) {
_this2.forceAlign();
}
if (props.monitorWindowResize && !props.disabled) {
_this2.startMonitorWindowResize();
} else {
_this2.stopMonitorWindowResize();
}
_this2.prevProps = (0, _extends3['default'])({}, _this2.$props, { align: (0, _cloneDeep2['default'])(_this2.$props.align) });
});
},
beforeDestroy: function beforeDestroy() {
this.stopMonitorWindowResize();
},
methods: {
startMonitorWindowResize: function startMonitorWindowResize() {
if (!this.resizeHandler) {
this.bufferMonitor = (0, _util.buffer)(this.forceAlign, this.$props.monitorBufferTime);
this.resizeHandler = (0, _addEventListener2['default'])(window, 'resize', this.bufferMonitor);
}
},
stopMonitorWindowResize: function stopMonitorWindowResize() {
if (this.resizeHandler) {
this.bufferMonitor.clear();
this.resizeHandler.remove();
this.resizeHandler = null;
}
},
forceAlign: function forceAlign() {
var _$props = this.$props,
disabled = _$props.disabled,
target = _$props.target,
align = _$props.align;
if (!disabled && target) {
var source = this.$el;
var listeners = (0, _propsUtil.getListeners)(this);
var result = void 0;
var element = getElement(target);
var point = getPoint(target);
// IE lose focus after element realign
// We should record activeElement and restore later
var activeElement = document.activeElement;
if (element) {
result = (0, _domAlign.alignElement)(source, element, align);
} else if (point) {
result = (0, _domAlign.alignPoint)(source, point, align);
}
(0, _util.restoreFocus)(activeElement, source);
this.aligned = true;
listeners.align && listeners.align(source, result);
}
}
},
render: function render() {
var childrenProps = this.$props.childrenProps;
var child = (0, _propsUtil.getSlot)(this)[0];
if (child && childrenProps) {
return (0, _vnode.cloneElement)(child, { props: childrenProps });
}
return child;
}
};
/***/ }),
/***/ "a7e2":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.resetWarned = undefined;
var _warning = __webpack_require__("1db9");
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports.resetWarned = _warning.resetWarned;
exports['default'] = function (valid, component) {
var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
(0, _warning2['default'])(valid, '[antdv: ' + component + '] ' + message);
};
/***/ }),
/***/ "af8e":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = contains;
function contains(root, n) {
var node = n;
while (node) {
if (node === root) {
return true;
}
node = node.parentNode;
}
return false;
}
/***/ }),
/***/ "d27c":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = __webpack_require__("1098");
var _typeof3 = _interopRequireDefault(_typeof2);
var _extends2 = __webpack_require__("41b2");
var _extends3 = _interopRequireDefault(_extends2);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _vcAlign = __webpack_require__("118f");
var _vcAlign2 = _interopRequireDefault(_vcAlign);
var _PopupInner = __webpack_require__("8207");
var _PopupInner2 = _interopRequireDefault(_PopupInner);
var _LazyRenderBox = __webpack_require__("ed5c");
var _LazyRenderBox2 = _interopRequireDefault(_LazyRenderBox);
var _cssAnimation = __webpack_require__("401b");
var _cssAnimation2 = _interopRequireDefault(_cssAnimation);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _propsUtil = __webpack_require__("73c8");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = {
name: 'VCTriggerPopup',
mixins: [_BaseMixin2['default']],
props: {
visible: _vueTypes2['default'].bool,
getClassNameFromAlign: _vueTypes2['default'].func,
getRootDomNode: _vueTypes2['default'].func,
align: _vueTypes2['default'].any,
destroyPopupOnHide: _vueTypes2['default'].bool,
prefixCls: _vueTypes2['default'].string,
getContainer: _vueTypes2['default'].func,
transitionName: _vueTypes2['default'].string,
animation: _vueTypes2['default'].any,
maskAnimation: _vueTypes2['default'].string,
maskTransitionName: _vueTypes2['default'].string,
mask: _vueTypes2['default'].bool,
zIndex: _vueTypes2['default'].number,
popupClassName: _vueTypes2['default'].any,
popupStyle: _vueTypes2['default'].object.def(function () {
return {};
}),
stretch: _vueTypes2['default'].string,
point: _vueTypes2['default'].shape({
pageX: _vueTypes2['default'].number,
pageY: _vueTypes2['default'].number
})
},
data: function data() {
this.domEl = null;
return {
// Used for stretch
stretchChecked: false,
targetWidth: undefined,
targetHeight: undefined
};
},
mounted: function mounted() {
var _this = this;
this.$nextTick(function () {
_this.rootNode = _this.getPopupDomNode();
_this.setStretchSize();
});
},
// 如添加会导致动画失效,如放开会导致快速输入时闪动 https://github.com/vueComponent/ant-design-vue/issues/1327,
// 目前方案是保留动画,闪动问题(动画多次执行)进一步定位
// beforeUpdate() {
// if (this.domEl && this.domEl.rcEndListener) {
// this.domEl.rcEndListener();
// this.domEl = null;
// }
// },
updated: function updated() {
var _this2 = this;
this.$nextTick(function () {
_this2.setStretchSize();
});
},
beforeDestroy: function beforeDestroy() {
if (this.$el.parentNode) {
this.$el.parentNode.removeChild(this.$el);
} else if (this.$el.remove) {
this.$el.remove();
}
},
methods: {
onAlign: function onAlign(popupDomNode, align) {
var props = this.$props;
var currentAlignClassName = props.getClassNameFromAlign(align);
// FIX: https://github.com/react-component/trigger/issues/56
// FIX: https://github.com/react-component/tooltip/issues/79
if (this.currentAlignClassName !== currentAlignClassName) {
this.currentAlignClassName = currentAlignClassName;
popupDomNode.className = this.getClassName(currentAlignClassName);
}
var listeners = (0, _propsUtil.getListeners)(this);
listeners.align && listeners.align(popupDomNode, align);
},
// Record size if stretch needed
setStretchSize: function setStretchSize() {
var _$props = this.$props,
stretch = _$props.stretch,
getRootDomNode = _$props.getRootDomNode,
visible = _$props.visible;
var _$data = this.$data,
stretchChecked = _$data.stretchChecked,
targetHeight = _$data.targetHeight,
targetWidth = _$data.targetWidth;
if (!stretch |