this.lazyLoadedList.indexOf(value) < 0,
);
- if (this.$listeners.lazyLoad && slidesToLoad.length > 0) {
+ if (getListeners(this).lazyLoad && slidesToLoad.length > 0) {
this.$emit('lazyLoad', slidesToLoad);
}
this.setState(state, () => {
diff --git a/components/vc-slick/src/slider.js b/components/vc-slick/src/slider.js
index 9dd7d76bd..8caddc8e8 100644
--- a/components/vc-slick/src/slider.js
+++ b/components/vc-slick/src/slider.js
@@ -3,7 +3,7 @@ import Vue from 'vue';
import ref from 'vue-ref';
import BaseMixin from '../../_util/BaseMixin';
import { cloneElement } from '../../_util/vnode';
-import { getStyle } from '../../_util/props-util';
+import { getStyle, getListeners } from '../../_util/props-util';
import InnerSlider from './inner-slider';
import defaultProps from './default-props';
import { canUseDOM } from './utils/innerSliderUtils';
@@ -197,9 +197,7 @@ export default {
children: newChildren,
__propsSymbol__: Symbol(),
},
- on: {
- ...this.$listeners,
- },
+ on: getListeners(this),
directives: [
{
name: 'ant-ref',
diff --git a/components/vc-slider/src/Handle.jsx b/components/vc-slider/src/Handle.jsx
index c346ff4d8..6c56f30a6 100644
--- a/components/vc-slider/src/Handle.jsx
+++ b/components/vc-slider/src/Handle.jsx
@@ -1,7 +1,7 @@
import classNames from 'classnames';
import PropTypes from '../../_util/vue-types';
import BaseMixin from '../../_util/BaseMixin';
-import { getOptionProps } from '../../_util/props-util';
+import { getOptionProps, getListeners } from '../../_util/props-util';
import addEventListener from '../../_util/Dom/addEventListener';
export default {
@@ -92,7 +92,7 @@ export default {
},
class: className,
on: {
- ...this.$listeners,
+ ...getListeners(this),
blur: this.handleBlur,
keydown: this.handleKeyDown,
mousedown: this.handleMousedown,
diff --git a/components/vc-steps/Step.jsx b/components/vc-steps/Step.jsx
index ed7c1219b..8334bc024 100644
--- a/components/vc-steps/Step.jsx
+++ b/components/vc-steps/Step.jsx
@@ -1,5 +1,5 @@
import PropTypes from '../_util/vue-types';
-import { getOptionProps, getComponentFromProp } from '../_util/props-util';
+import { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';
function isString(str) {
return typeof str === 'string';
@@ -88,7 +88,7 @@ export default {
};
const stepProps = {
class: classString,
- on: this.$listeners,
+ on: getListeners(this),
};
const stepItemStyle = {};
if (itemWidth) {
diff --git a/components/vc-steps/Steps.jsx b/components/vc-steps/Steps.jsx
index e4682b009..831e92b45 100644
--- a/components/vc-steps/Steps.jsx
+++ b/components/vc-steps/Steps.jsx
@@ -2,7 +2,7 @@ import PropTypes from '../_util/vue-types';
import BaseMixin from '../_util/BaseMixin';
import debounce from 'lodash/debounce';
import isFlexSupported from '../_util/isFlexSupported';
-import { filterEmpty, getEvents, getPropsData } from '../_util/props-util';
+import { filterEmpty, getEvents, getPropsData, getListeners } from '../_util/props-util';
import { cloneElement } from '../_util/vnode';
export default {
@@ -111,7 +111,7 @@ export default {
const stepsProps = {
class: classString,
ref: 'vcStepsRef',
- on: this.$listeners,
+ on: getListeners(this),
};
return (
diff --git a/components/vc-switch/Switch.jsx b/components/vc-switch/Switch.jsx
index a206d8e5b..db14e5bd0 100644
--- a/components/vc-switch/Switch.jsx
+++ b/components/vc-switch/Switch.jsx
@@ -1,6 +1,6 @@
import { switchPropTypes } from './PropTypes';
import BaseMixin from '../_util/BaseMixin';
-import { hasProp, getOptionProps, getComponentFromProp } from '../_util/props-util';
+import { hasProp, getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';
// function noop () {
// }
@@ -89,7 +89,7 @@ export default {
const spanProps = {
props: { ...restProps },
on: {
- ...this.$listeners,
+ ...getListeners(this),
keydown: this.handleKeyDown,
click: this.handleClick,
mouseup: this.handleMouseUp,
diff --git a/components/vc-tabs/src/ScrollableInkTabBar.jsx b/components/vc-tabs/src/ScrollableInkTabBar.jsx
index 98eb27418..751ae24dd 100644
--- a/components/vc-tabs/src/ScrollableInkTabBar.jsx
+++ b/components/vc-tabs/src/ScrollableInkTabBar.jsx
@@ -3,6 +3,7 @@ import TabBarTabsNode from './TabBarTabsNode';
import TabBarRootNode from './TabBarRootNode';
import ScrollableTabBarNode from './ScrollableTabBarNode';
import SaveRef from './SaveRef';
+import { getListeners } from '../../_util/props-util';
export default {
name: 'ScrollableInkTabBar',
@@ -21,7 +22,7 @@ export default {
],
render() {
const props = { ...this.$props };
- const listeners = this.$listeners;
+ const listeners = getListeners(this);
const { default: renderTabBarNode } = this.$scopedSlots;
return (
(
diff --git a/components/vc-tabs/src/Tabs.jsx b/components/vc-tabs/src/Tabs.jsx
index 199cf052a..e1760bba9 100644
--- a/components/vc-tabs/src/Tabs.jsx
+++ b/components/vc-tabs/src/Tabs.jsx
@@ -3,7 +3,7 @@ import BaseMixin from '../../_util/BaseMixin';
import PropTypes from '../../_util/vue-types';
import raf from 'raf';
import KeyCode from './KeyCode';
-import { getOptionProps } from '../../_util/props-util';
+import { getOptionProps, getListeners } from '../../_util/props-util';
import { cloneElement } from '../../_util/vnode';
import Sentinel from './Sentinel';
@@ -248,7 +248,7 @@ export default {
contents.push(tabBar, sentinelStart, tabContent, sentinelEnd);
}
const listeners = {
- ...omit(this.$listeners, ['change']),
+ ...omit(getListeners(this), ['change']),
scroll: this.onScroll,
};
return {contents}
;
diff --git a/components/vc-time-picker/Panel.jsx b/components/vc-time-picker/Panel.jsx
index edc79a52b..cf0ee2e71 100644
--- a/components/vc-time-picker/Panel.jsx
+++ b/components/vc-time-picker/Panel.jsx
@@ -3,7 +3,7 @@ import PropTypes from '../_util/vue-types';
import BaseMixin from '../_util/BaseMixin';
import Header from './Header';
import Combobox from './Combobox';
-import { getComponentFromProp } from '../_util/props-util';
+import { getComponentFromProp, getListeners } from '../_util/props-util';
function noop() {}
@@ -144,10 +144,9 @@ const Panel = {
inputReadOnly,
sValue,
currentSelectPanel,
- $listeners = {},
} = this;
const clearIcon = getComponentFromProp(this, 'clearIcon');
- const { esc = noop, clear = noop, keydown = noop } = $listeners;
+ const { esc = noop, clear = noop, keydown = noop } = getListeners(this);
const disabledHourOptions = this.disabledHours2();
const disabledMinuteOptions = disabledMinutes(sValue ? sValue.hour() : null);
diff --git a/components/vc-tree-select/src/Base/BaseSelector.jsx b/components/vc-tree-select/src/Base/BaseSelector.jsx
index 26b89e737..5d657740c 100644
--- a/components/vc-tree-select/src/Base/BaseSelector.jsx
+++ b/components/vc-tree-select/src/Base/BaseSelector.jsx
@@ -8,7 +8,7 @@
import { createRef } from '../util';
import PropTypes from '../../../_util/vue-types';
import classNames from 'classnames';
-import { initDefaultProps, getComponentFromProp } from '../../../_util/props-util';
+import { initDefaultProps, getComponentFromProp, getListeners } from '../../../_util/props-util';
import BaseMixin from '../../../_util/BaseMixin';
export const selectorPropTypes = () => ({
prefixCls: PropTypes.string,
@@ -134,7 +134,6 @@ export default function(modeName) {
} = this.$props;
const {
vcTreeSelect: { onSelectorKeyDown },
- $listeners,
} = this;
let myTabIndex = tabIndex;
@@ -145,7 +144,7 @@ export default function(modeName) {
return (
);
diff --git a/components/vc-tree-select/src/Select.jsx b/components/vc-tree-select/src/Select.jsx
index f722aea28..7338b78a3 100644
--- a/components/vc-tree-select/src/Select.jsx
+++ b/components/vc-tree-select/src/Select.jsx
@@ -56,6 +56,7 @@ import {
mergeProps,
getPropsData,
filterEmpty,
+ getListeners,
} from '../../_util/props-util';
function getWatch(keys = []) {
const watch = {};
@@ -958,7 +959,7 @@ const Select = {
}
// Only do the logic when `onChange` function provided
- if (this.$listeners.change) {
+ if (getListeners(this).change) {
let connectValueList;
// Get value by mode
@@ -1034,7 +1035,7 @@ const Select = {
ariaId: this.ariaId,
},
on: {
- ...this.$listeners,
+ ...getListeners(this),
choiceAnimationLeave: this.onChoiceAnimationLeave,
},
scopedSlots: this.$scopedSlots,
diff --git a/components/vc-tree-select/src/Selector/MultipleSelector/Selection.jsx b/components/vc-tree-select/src/Selector/MultipleSelector/Selection.jsx
index 380002bd2..5fa35a17a 100644
--- a/components/vc-tree-select/src/Selector/MultipleSelector/Selection.jsx
+++ b/components/vc-tree-select/src/Selector/MultipleSelector/Selection.jsx
@@ -1,6 +1,6 @@
import PropTypes from '../../../../_util/vue-types';
import { toTitle, UNSELECTABLE_ATTRIBUTE, UNSELECTABLE_STYLE } from '../../util';
-import { getComponentFromProp } from '../../../../_util/props-util';
+import { getComponentFromProp, getListeners } from '../../../../_util/props-util';
import BaseMixin from '../../../../_util/BaseMixin';
const Selection = {
@@ -24,7 +24,6 @@ const Selection = {
render() {
const { prefixCls, maxTagTextLength, label, value } = this.$props;
- const { $listeners } = this;
let content = label || value;
if (maxTagTextLength && typeof content === 'string' && content.length > maxTagTextLength) {
content = `${content.slice(0, maxTagTextLength)}...`;
@@ -38,7 +37,7 @@ const Selection = {
class={`${prefixCls}-selection__choice`}
title={toTitle(label)}
>
- {$listeners.remove && (
+ {getListeners(this).remove && (
{getComponentFromProp(this, 'removeIcon')}
diff --git a/components/vc-tree-select/src/Selector/SingleSelector.jsx b/components/vc-tree-select/src/Selector/SingleSelector.jsx
index 941afcab7..15cd1ecfd 100644
--- a/components/vc-tree-select/src/Selector/SingleSelector.jsx
+++ b/components/vc-tree-select/src/Selector/SingleSelector.jsx
@@ -1,6 +1,6 @@
import generateSelector, { selectorPropTypes } from '../Base/BaseSelector';
import { toTitle } from '../util';
-import { getOptionProps } from '../../../_util/props-util';
+import { getOptionProps, getListeners } from '../../../_util/props-util';
import { createRef } from '../util';
const Selector = generateSelector('single');
@@ -47,7 +47,7 @@ const SingleSelector = {
...getOptionProps(this),
renderSelection: this.renderSelection,
},
- on: this.$listeners,
+ on: getListeners(this),
directives: [
{
name: 'ant-ref',
diff --git a/components/vc-trigger/PopupInner.jsx b/components/vc-trigger/PopupInner.jsx
index 6d54d433e..502069ebc 100644
--- a/components/vc-trigger/PopupInner.jsx
+++ b/components/vc-trigger/PopupInner.jsx
@@ -1,5 +1,6 @@
import PropTypes from '../_util/vue-types';
import LazyRenderBox from './LazyRenderBox';
+import { getListeners } from '../_util/props-util';
export default {
props: {
@@ -9,9 +10,8 @@ export default {
},
render() {
const { prefixCls, visible, hiddenClassName } = this.$props;
- const { $listeners } = this;
const divProps = {
- on: $listeners,
+ on: getListeners(this),
};
return (
diff --git a/components/vc-trigger/Trigger.jsx b/components/vc-trigger/Trigger.jsx
index e8abd270d..d11b24e56 100644
--- a/components/vc-trigger/Trigger.jsx
+++ b/components/vc-trigger/Trigger.jsx
@@ -375,7 +375,7 @@ export default {
}
mouseProps.mousedown = this.onPopupMouseDown;
mouseProps.touchstart = this.onPopupMouseDown;
- const { handleGetPopupClassFromAlign, getRootDomNode, getContainer, $listeners } = self;
+ const { handleGetPopupClassFromAlign, getRootDomNode, getContainer } = self;
const {
prefixCls,
destroyPopupOnHide,
@@ -415,7 +415,7 @@ export default {
popupStyle,
},
on: {
- align: $listeners.popupAlign || noop,
+ align: getListeners(this).popupAlign || noop,
...mouseProps,
},
directives: [
@@ -520,7 +520,7 @@ export default {
createTwoChains(event) {
let fn = () => {};
- const events = this.$listeners;
+ const events = getListeners(this);
if (this.childOriginEvents[event] && events[event]) {
return this[`fire${event}`];
}
diff --git a/components/vc-upload/src/AjaxUploader.jsx b/components/vc-upload/src/AjaxUploader.jsx
index bffd55d84..c6013d895 100644
--- a/components/vc-upload/src/AjaxUploader.jsx
+++ b/components/vc-upload/src/AjaxUploader.jsx
@@ -6,6 +6,7 @@ import defaultRequest from './request';
import getUid from './uid';
import attrAccept from './attr-accept';
import traverseFileTree from './traverseFileTree';
+import { getListeners } from '../../_util/props-util';
const upLoadPropTypes = {
componentTag: PropTypes.string,
@@ -206,7 +207,7 @@ const AjaxUploader = {
};
const tagProps = {
on: {
- ...this.$listeners,
+ ...getListeners(this),
...events,
},
attrs: {
diff --git a/components/vc-upload/src/Upload.jsx b/components/vc-upload/src/Upload.jsx
index ac3172271..1a3974744 100644
--- a/components/vc-upload/src/Upload.jsx
+++ b/components/vc-upload/src/Upload.jsx
@@ -1,5 +1,5 @@
import PropTypes from '../../_util/vue-types';
-import { initDefaultProps } from '../../_util/props-util';
+import { initDefaultProps, getListeners } from '../../_util/props-util';
import BaseMixin from '../../_util/BaseMixin';
import AjaxUpload from './AjaxUploader';
import IframeUpload from './IframeUploader';
@@ -83,7 +83,7 @@ export default {
props: {
...this.$props,
},
- on: this.$listeners,
+ on: getListeners(this),
ref: 'uploaderRef',
attrs: this.$attrs,
};