side-nav.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <style>
  2. .side-nav {
  3. width: 100%;
  4. box-sizing: border-box;
  5. border-right: 1px solid #eaeefa;
  6. li {
  7. list-style: none;
  8. }
  9. ul {
  10. padding: 0;
  11. }
  12. .nav-item {
  13. a {
  14. font-size:18px;
  15. color:#5e6d82;
  16. line-height: 32px;
  17. height: 32px;
  18. margin: 10px 0;
  19. padding: 0 0 0 10px;
  20. text-decoration: none;
  21. border-left: 2px solid transparent;
  22. display: block;
  23. &.active {
  24. color: #20a0ff;
  25. border-left-color: #20a0ff;
  26. }
  27. }
  28. .nav-item {
  29. a {
  30. font-size: 14px;
  31. padding-left: 20px;
  32. &:hover {
  33. background-color: #eee;
  34. }
  35. }
  36. }
  37. }
  38. .nav-group__title {
  39. color: #99a9bf;
  40. padding-left: 15px;
  41. line-height: 32px;
  42. }
  43. }
  44. </style>
  45. <template>
  46. <div class="side-nav">
  47. <ul>
  48. <li class="nav-item" v-for="item in data">
  49. <a>{{item.name}}</a>
  50. <ul class="pure-menu-list sub-nav" v-if="item.children">
  51. <li class="nav-item" v-for="navItem in item.children">
  52. <router-link
  53. class=""
  54. active-class="active"
  55. :to="'/component' + navItem.path"
  56. exact
  57. v-text="navItem.title || item.name">
  58. </router-link>
  59. </li>
  60. </ul>
  61. <template v-if="item.groups">
  62. <div class="nav-group" v-for="group in item.groups">
  63. <div class="nav-group__title">{{group.groupName}}</div>
  64. <ul class="pure-menu-list">
  65. <li
  66. class="nav-item"
  67. v-for="item in group.list"
  68. v-if="!item.disabled">
  69. <router-link
  70. active-class="active"
  71. :to="'/component' + item.path"
  72. exact
  73. v-text="item.title"></router-link>
  74. </li>
  75. </ul>
  76. </div>
  77. </template>
  78. </li>
  79. </ul>
  80. </div>
  81. </template>
  82. <script>
  83. export default {
  84. props: {
  85. data: Array
  86. },
  87. data() {
  88. return {
  89. highlights: [],
  90. navState: []
  91. };
  92. }
  93. };
  94. </script>