MenuGroup.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <div
  3. v-if="data.children && data.children.length"
  4. class="menu-group"
  5. >
  6. <menu-item :data="data" />
  7. <div class="menu-list">
  8. <menu-group
  9. v-for="(item, index) in data.children"
  10. :key="index"
  11. :data="item"
  12. />
  13. </div>
  14. </div>
  15. <menu-item
  16. v-else
  17. :data="data"
  18. />
  19. </template>
  20. <script>
  21. import MenuItem from './MenuItem.vue'
  22. export default {
  23. name: 'MenuGroup',
  24. components: { MenuItem },
  25. props: {
  26. data: Object
  27. }
  28. }
  29. </script>
  30. <style lang="scss" scoped>
  31. $fs: .875rem;
  32. .menu-item {
  33. display: block;
  34. padding: .35rem 1rem .35rem 1.25rem;
  35. font-size: $fs;
  36. color: #2c3e50;
  37. text-decoration: none;
  38. cursor: pointer;
  39. &.router-link-active,
  40. &:hover {
  41. color: $color;
  42. }
  43. &.router-link-active {
  44. font-weight: 700;
  45. }
  46. }
  47. .menu-title {
  48. padding: 0 1.25rem;
  49. margin: .5rem 0;
  50. font-size: 1.1em;
  51. font-weight: 600;
  52. }
  53. .menu-list {
  54. margin: 0;
  55. padding: 0;
  56. padding-left: 1rem;
  57. .menu-list .router-link-active {
  58. font-weight: 400;
  59. }
  60. .menu-group .menu-title {
  61. margin: .3rem 0;
  62. font-size: $fs;
  63. }
  64. }
  65. </style>