import { kebabCase } from 'element-ui/src/utils/util';
|
/**
|
* Show migrating guide in browser console.
|
*
|
* Usage:
|
* import Migrating from 'element-ui/src/mixins/migrating';
|
*
|
* mixins: [Migrating]
|
*
|
* add getMigratingConfig method for your component.
|
* getMigratingConfig() {
|
* return {
|
* props: {
|
* 'allow-no-selection': 'allow-no-selection is removed.',
|
* 'selection-mode': 'selection-mode is removed.'
|
* },
|
* events: {
|
* selectionchange: 'selectionchange is renamed to selection-change.'
|
* }
|
* };
|
* },
|
*/
|
export default {
|
mounted() {
|
if (process.env.NODE_ENV === 'production') return;
|
if (!this.$vnode) return;
|
const { props = {}, events = {} } = this.getMigratingConfig();
|
const { data, componentOptions } = this.$vnode;
|
const definedProps = data.attrs || {};
|
const definedEvents = componentOptions.listeners || {};
|
|
for (let propName in definedProps) {
|
propName = kebabCase(propName); // compatible with camel case
|
if (props[propName]) {
|
console.warn(`[Element Migrating][${this.$options.name}][Attribute]: ${props[propName]}`);
|
}
|
}
|
|
for (let eventName in definedEvents) {
|
eventName = kebabCase(eventName); // compatible with camel case
|
if (events[eventName]) {
|
console.warn(`[Element Migrating][${this.$options.name}][Event]: ${events[eventName]}`);
|
}
|
}
|
},
|
methods: {
|
getMigratingConfig() {
|
return {
|
props: {},
|
events: {}
|
};
|
}
|
}
|
};
|