menu-mixin.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. export default {
  2. inject: ['rootMenu'],
  3. computed: {
  4. indexPath() {
  5. const path = [this.index];
  6. let parent = this.$parent;
  7. while (parent.$options.componentName !== 'ElMenu') {
  8. if (parent.index) {
  9. path.unshift(parent.index);
  10. }
  11. parent = parent.$parent;
  12. }
  13. return path;
  14. },
  15. parentMenu() {
  16. let parent = this.$parent;
  17. while (
  18. parent &&
  19. ['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1
  20. ) {
  21. parent = parent.$parent;
  22. }
  23. return parent;
  24. },
  25. paddingStyle() {
  26. if (this.rootMenu.mode !== 'vertical') return {};
  27. let padding = 20;
  28. let parent = this.$parent;
  29. if (this.rootMenu.collapse) {
  30. padding = 20;
  31. } else {
  32. while (parent && parent.$options.componentName !== 'ElMenu') {
  33. if (parent.$options.componentName === 'ElSubmenu') {
  34. padding += 20;
  35. }
  36. parent = parent.$parent;
  37. }
  38. }
  39. return {paddingLeft: padding + 'px'};
  40. }
  41. }
  42. };