aboutsummaryrefslogtreecommitdiff
path: root/src/components/mobile_nav/mobile_nav.vue
blob: cb1aaa46795bae03f7d081899d2b06033184f18e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<template>
  <nav class='nav-bar container asd' id="nav">
    <div class='inner-nav mobile-inner-nav' @click="scrollToTop()" :class="{ 'shifted': notificationsOpen }">
      <div class='item'>
        <a href="#" class="menu-button" @click.stop.prevent="toggleMobileSidebar()">
          <i class="button-icon icon-menu"></i>
        </a>
        <router-link class="site-name" :to="{ name: 'root' }" active-class="home">{{sitename}}</router-link>
      </div>
      <div class='item right'>
        <a v-if="currentUser" href="#" class="menu-button" @click.stop.prevent="toggleMobileNotifications()">
          <i class="button-icon icon-bell-alt"></i>
          <div class="alert-dot" v-if="unseenNotificationsCount"></div>
        </a>
      </div>
      <div class="mobile-notifications-header">
        <span>{{$t('notifications.notifications')}}</span>
        <i class="icon-cancel" @click.stop.prevent="toggleMobileNotifications()"/>
      </div>
    </div>
    <SideDrawer ref="sideDrawer" :logout="logout"/>
    <div v-if="currentUser" class="mobile-notifications" :class="{ 'closed': !notificationsOpen }">
      <Notifications ref="notifications" noHeading="true"/>
    </div>
    <MobilePostStatusModal />
  </nav>
</template>

<script src="./mobile_nav.js"></script>

<style lang="scss">
@import '../../_variables.scss';

.mobile-inner-nav {
  transition: transform 0.25s;
  &.shifted {
    transform: translateX(-100%);
  }
}

.mobile-notifications-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: calc(100% - 1.6em);
  height: 100%;
  margin: 0 0.8em 0 0.8em;
  position: absolute;
  font-size: 1.3em;
  color: $fallback--text;
  color: var(--text, $fallback--text);
  top: 0;
  left: 100%;
}

.menu-button {
  position: relative;
}

.alert-dot {
  border-radius: 100%;
  height: 8px;
  width: 8px;
  position: absolute;
  left: calc(50% - 4px);
  top: calc(50% - 4px);
  margin-left: 6px;
  margin-top: -6px;
  background-color: $fallback--cRed;
  background-color: var(--badgeNotification, $fallback--cRed);
}

.mobile-notifications {
  position: fixed;
  width: 100vw;
  height: calc(100vh - 50px);
  top: 50px;
  left: 0;
  overflow-x: hidden;
  overflow-y: scroll;
  transition-property: transform;
  transition-duration: 0.25s;
  transform: translate(0);

  color: $fallback--text;
  color: var(--text, $fallback--text);
  background-color: $fallback--bg;
  background-color: var(--bg, $fallback--bg);

  .notifications {
    margin: 0;
    padding: 0;
    border-radius: 0;
    box-shadow: none;
    .panel {
      border-radius: 0;
      margin: 0;
      box-shadow: none;
    }
    .panel:after {
      border-radius: 0;
    }
    .panel .panel-heading {
      border-radius: 0;
      box-shadow: none;
    }
  }

  &.closed {
    transform: translate(100%);
  }
}

</style>