OfficialHeader.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <nav class='nav'>
  3. <div class='nav-left'>
  4. <a class='nav-item logo' href='#' v-link='{ path: "/" }' @click='this.$dispatch("leaveStation", title)'>
  5. Musare
  6. </a>
  7. <a class='nav-item' href='#' v-if='isOwner()' @click='$parent.toggleModal("editStation")'>
  8. <span class='icon'>
  9. <i class='material-icons'>settings</i>
  10. </span>
  11. </a>
  12. <a class='nav-item' href='#' @click='$parent.toggleModal("addSongToQueue")' v-if='$parent.type === "official" && $parent.$parent.loggedIn'>
  13. <span class='icon'>
  14. <i class='material-icons'>queue_music</i>
  15. </span>
  16. </a>
  17. <a v-if='$parent.$parent.loggedIn && !$parent.noSong && !$parent.simpleSong' class='nav-item' href='#' @click='$parent.modals.report = !$parent.modals.report'>
  18. <span class='icon'>
  19. <i class='material-icons'>report</i>
  20. </span>
  21. </a>
  22. <a v-if='isOwner()' class='nav-item' href='#' @click='$parent.skipStation()'>
  23. <span class='icon'>
  24. <i class='material-icons'>skip_next</i>
  25. </span>
  26. </a>
  27. <a v-if='!isOwner() && $parent.$parent.loggedIn && !$parent.noSong' class='nav-item' href='#' @click='$parent.voteSkipStation()'>
  28. <span class='icon'>
  29. <i class='material-icons'>skip_next</i>
  30. </span>
  31. <span class="skip-votes">{{$parent.currentSong.skipVotes}}</span>
  32. </a>
  33. <a class='nav-item' href='#' v-if='isOwner() && $parent.paused' @click='$parent.resumeStation()'>
  34. <span class='icon'>
  35. <i class='material-icons'>play_arrow</i>
  36. </span>
  37. </a>
  38. <a class='nav-item' href='#' v-if='isOwner() && !$parent.paused' @click='$parent.pauseStation()'>
  39. <span class='icon'>
  40. <i class='material-icons'>pause</i>
  41. </span>
  42. </a>
  43. </div>
  44. <div class='nav-center stationDisplayName'>
  45. {{ $parent.station.displayName }}
  46. </div>
  47. <span class="nav-toggle" :class="{ 'is-active': isMobile }" @click="isMobile = !isMobile">
  48. <span></span>
  49. <span></span>
  50. <span></span>
  51. </span>
  52. <div class="nav-right nav-menu" :class="{ 'is-active': isMobile }">
  53. <a class='nav-item' href='#' @click='$parent.sidebars.officialqueue = !$parent.sidebars.officialqueue'>
  54. <span class='icon'>
  55. <i class='material-icons'>queue_music</i>
  56. </span>
  57. </a>
  58. <!--<a class='nav-item' href='#'>
  59. <span class='icon'>
  60. <i class='material-icons'>chat</i>
  61. </span>
  62. </a>-->
  63. <!--<a class='nav-item' href='#' @click='$parent.sidebars.users = !$parent.sidebars.users'>
  64. <span class='icon'>
  65. <i class='material-icons'>people</i>
  66. </span>
  67. </a>-->
  68. <!--a class='nav-item' href='#' @click='$parent.sidebars.playlist = !$parent.sidebars.playlist'>
  69. <span class='icon'>
  70. <i class='material-icons'>library_music</i>
  71. </span>
  72. </a-->
  73. </div>
  74. </nav>
  75. </template>
  76. <script>
  77. export default {
  78. data() {
  79. return {
  80. title: this.$route.params.id,
  81. isMobile: false
  82. }
  83. },
  84. methods: {
  85. isOwner: function () {
  86. return this.$parent.$parent.loggedIn && this.$parent.$parent.role === 'admin';
  87. }
  88. }
  89. }
  90. </script>
  91. <style lang='scss' scoped>
  92. @import 'theme.scss';
  93. .nav {
  94. background-color: #03a9f4;
  95. }
  96. a.nav-item {
  97. color: $white;
  98. &:hover {
  99. color: $white;
  100. }
  101. padding: 0 18px;
  102. .icon {
  103. height: 64px;
  104. i {
  105. font-size: 2rem;
  106. line-height: 64px;
  107. height: 64px;
  108. width: 34px;
  109. }
  110. }
  111. }
  112. .skip-votes {
  113. position: relative;
  114. left: 11px;
  115. }
  116. .nav-toggle {
  117. height: 64px;
  118. }
  119. .logo {
  120. font-size: 2.1rem;
  121. line-height: 64px;
  122. padding-left: 20px !important;
  123. padding-right: 20px !important;
  124. }
  125. .nav-center {
  126. display: flex;
  127. align-items: center;
  128. color: $blue;
  129. font-size: 22px;
  130. }
  131. .nav-right.is-active .nav-item {
  132. background: #03a9f4;
  133. border: 0;
  134. }
  135. </style>