navigation refactored, used in mobile nav as well

This commit is contained in:
Henry Jameson 2022-08-11 21:56:30 +03:00
commit 3a16a59f37
11 changed files with 363 additions and 63 deletions

View file

@ -3,6 +3,7 @@ import { mapState, mapGetters } from 'vuex'
import { TIMELINES, ROOT_ITEMS } from 'src/components/navigation/navigation.js'
import { filterNavigation } from 'src/components/navigation/filter.js'
import NavigationEntry from 'src/components/navigation/navigation_entry.vue'
import NavigationPins from 'src/components/navigation/navigation_pins.vue'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
@ -40,7 +41,8 @@ const NavPanel = {
},
components: {
ListsMenuContent,
NavigationEntry
NavigationEntry,
NavigationPins
},
data () {
return {
@ -90,26 +92,7 @@ const NavPanel = {
.entries({ ...ROOT_ITEMS })
.map(([k, v]) => ({ ...v, name: k })),
{
isFederating: this.federating,
isPrivate: this.private,
currentUser: this.currentUser
}
)
},
pinnedList () {
return filterNavigation(
[
...Object
.entries({ ...TIMELINES })
.filter(([k]) => this.pinnedItems.has(k))
.map(([k, v]) => ({ ...v, name: k })),
...this.lists.filter((k) => this.pinnedItems.has(k.name)),
...Object
.entries({ ...ROOT_ITEMS })
.filter(([k]) => this.pinnedItems.has(k))
.map(([k, v]) => ({ ...v, name: k }))
],
{
hasChats: this.pleromaChatMessagesAvailable,
isFederating: this.federating,
isPrivate: this.private,
currentUser: this.currentUser

View file

@ -2,24 +2,7 @@
<div class="NavPanel">
<div class="panel panel-default">
<div class="panel-heading">
<span>
<span v-for="item in pinnedList" :key="item.name" class="pinned-item">
<router-link
:to="item.routeObject || { name: (currentUser || item.anon) ? item.route : item.anonRoute, params: { username: currentUser.screen_name } }"
>
<FAIcon
v-if="item.icon"
fixed-width
class="fa-scale-110 fa-old-padding"
:icon="item.icon"
/>
<span
v-if="item.iconLetter"
class="iconLetter fa-scale-110 fa-old-padding"
>{{ item.iconLetter }}</span>
</router-link>
</span>
</span>
<NavigationPins />
<div class="spacer"/>
<button
class="button-unstyled"
@ -203,14 +186,5 @@
margin-right: 0.8em;
}
.pinned-item {
.router-link-active {
& .svg-inline--fa,
& .iconLetter {
color: $fallback--text;
color: var(--selectedMenuText, $fallback--text);
}
}
}
}
</style>