menu-item-group.vue 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <script>
  2. module.exports = {
  3. name: 'el-menu-item-group',
  4. componentName: 'menu-item-group',
  5. props: {
  6. title: {
  7. type: String,
  8. required: true
  9. }
  10. },
  11. data() {
  12. return {
  13. paddingLeft: 15
  14. };
  15. },
  16. computed: {
  17. activeIndex() {
  18. return this.$parent.activeIndex;
  19. }
  20. },
  21. methods: {
  22. initPadding() {
  23. var parent = this.$parent;
  24. var level = 0;
  25. var componentTag = parent.$options._componentTag;
  26. while (componentTag !== 'el-menu') {
  27. if (componentTag === 'el-submenu') {
  28. level++;
  29. }
  30. parent = parent.$parent;
  31. componentTag = parent.$options._componentTag;
  32. }
  33. this.paddingLeft += level * 10;
  34. }
  35. },
  36. mounted() {
  37. this.initPadding();
  38. }
  39. };
  40. </script>
  41. <template>
  42. <li class="el-menu-item-group">
  43. <div class="el-menu-item-group__title" :style="{'padding-left': paddingLeft + 'px'}">{{title}}</div>
  44. <ul>
  45. <slot></slot>
  46. </ul>
  47. </li>
  48. </template>