migrating.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * Show migrating guide in browser console.
  3. *
  4. * Usage:
  5. * import Migrating from 'element-ui/src/mixins/migrating';
  6. *
  7. * mixins: [Migrating]
  8. *
  9. * add getMigratingConfig method for your component.
  10. * getMigratingConfig() {
  11. * return {
  12. * props: {
  13. * 'allow-no-selection': 'allow-no-selection is removed.',
  14. * 'selection-mode': 'selection-mode is removed.'
  15. * },
  16. * events: {
  17. * selectionchange: 'selectionchange is renamed to selection-change.'
  18. * }
  19. * };
  20. * },
  21. */
  22. export default {
  23. mounted() {
  24. if (process.env.NODE_ENV === 'production') return;
  25. if (!this.$vnode) return;
  26. const { props = {}, events = {} } = this.getMigratingConfig();
  27. const { data, componentOptions } = this.$vnode;
  28. const definedProps = data.attrs || {};
  29. const definedEvents = componentOptions.listeners || {};
  30. for (let propName in definedProps) {
  31. if (definedProps.hasOwnProperty(propName) && props[propName]) {
  32. console.warn(`[Element Migrating][${this.$options.name}][Attribute]: ${props[propName]}`);
  33. }
  34. }
  35. for (let eventName in definedEvents) {
  36. if (definedEvents.hasOwnProperty(eventName) && events[eventName]) {
  37. console.warn(`[Element Migrating][${this.$options.name}][Event]: ${events[eventName]}`);
  38. }
  39. }
  40. },
  41. methods: {
  42. getMigratingConfig() {
  43. return {
  44. props: {},
  45. events: {}
  46. };
  47. }
  48. }
  49. };