fix bookmark folders not being pinnable

This commit is contained in:
Henry Jameson 2025-01-27 13:17:16 +02:00
parent 92c82a0a34
commit 031f8e65e6
6 changed files with 28 additions and 3 deletions

View file

@ -3,6 +3,9 @@ import NavigationEntry from 'src/components/navigation/navigation_entry.vue'
import { getBookmarkFolderEntries } from 'src/components/navigation/filter.js' import { getBookmarkFolderEntries } from 'src/components/navigation/filter.js'
export const BookmarkFoldersMenuContent = { export const BookmarkFoldersMenuContent = {
props: [
'showPin'
],
components: { components: {
NavigationEntry NavigationEntry
}, },

View file

@ -7,10 +7,12 @@
label: 'nav.all_bookmarks', label: 'nav.all_bookmarks',
icon: 'bookmark' icon: 'bookmark'
}" }"
:show-pin="showPin"
/> />
<NavigationEntry <NavigationEntry
v-for="item in folders" v-for="item in folders"
:key="item.id" :key="item.id"
:show-pin="showPin"
:item="item" :item="item"
/> />
</ul> </ul>

View file

@ -113,6 +113,7 @@
:class="{ '-expanded': showBookmarkFolders }" :class="{ '-expanded': showBookmarkFolders }"
> >
<BookmarkFoldersMenuContent <BookmarkFoldersMenuContent
:show-pin="editMode || forceEditMode"
class="timelines" class="timelines"
/> />
</div> </div>

View file

@ -24,6 +24,6 @@ export const getBookmarkFolderEntries = state => state.bookmarkFolders.allFolder
routeObject: { name: 'bookmark-folder', params: { id: folder.id } }, routeObject: { name: 'bookmark-folder', params: { id: folder.id } },
labelRaw: folder.name, labelRaw: folder.name,
iconEmoji: folder.emoji, iconEmoji: folder.emoji,
iconEmojiUrl: folder.emoji_url, iconEmojiUrl: console.log(folder) || folder.emoji_url,
iconLetter: folder.name[0] iconLetter: folder.name[0]
})) }))

View file

@ -1,6 +1,8 @@
import { mapState } from 'vuex' import { mapState } from 'vuex'
import { TIMELINES, ROOT_ITEMS, routeTo } from 'src/components/navigation/navigation.js' import { TIMELINES, ROOT_ITEMS, routeTo } from 'src/components/navigation/navigation.js'
import { getListEntries, filterNavigation } from 'src/components/navigation/filter.js' import { getBookmarkFolderEntries, getListEntries, filterNavigation } from 'src/components/navigation/filter.js'
import StillImage from 'src/components/still-image/still-image.vue'
import { library } from '@fortawesome/fontawesome-svg-core' import { library } from '@fortawesome/fontawesome-svg-core'
import { import {
@ -34,12 +36,16 @@ const NavPanel = {
return routeTo(item, this.currentUser) return routeTo(item, this.currentUser)
} }
}, },
components: {
StillImage
},
computed: { computed: {
getters () { getters () {
return this.$store.getters return this.$store.getters
}, },
...mapState({ ...mapState({
lists: getListEntries, lists: getListEntries,
bookmarks: getBookmarkFolderEntries,
currentUser: state => state.users.currentUser, currentUser: state => state.users.currentUser,
followRequestCount: state => state.api.followRequests.length, followRequestCount: state => state.api.followRequests.length,
privateMode: state => state.instance.private, privateMode: state => state.instance.private,
@ -70,6 +76,7 @@ const NavPanel = {
.filter(([k]) => this.pinnedItems.has(k)) .filter(([k]) => this.pinnedItems.has(k))
.map(([k, v]) => ({ ...v, name: k })), .map(([k, v]) => ({ ...v, name: k })),
...this.lists.filter((k) => this.pinnedItems.has(k.name)), ...this.lists.filter((k) => this.pinnedItems.has(k.name)),
...this.bookmarks.filter((k) => this.pinnedItems.has(k.name)),
...Object ...Object
.entries({ ...ROOT_ITEMS }) .entries({ ...ROOT_ITEMS })
.filter(([k]) => this.pinnedItems.has(k)) .filter(([k]) => this.pinnedItems.has(k))

View file

@ -14,9 +14,14 @@
:icon="item.icon" :icon="item.icon"
/> />
<span <span
v-if="item.iconLetter" v-if="item.iconLetter && !item.iconEmoji"
class="iconLetter fa-scale-110 fa-old-padding" class="iconLetter fa-scale-110 fa-old-padding"
>{{ item.iconLetter }}</span> >{{ item.iconLetter }}</span>
<StillImage
v-if="item.iconEmoji"
class="bookmark-emoji"
:src="item.iconEmojiUrl"
/>
<div <div
v-if="item.badgeGetter && getters[item.badgeGetter]" v-if="item.badgeGetter && getters[item.badgeGetter]"
class="badge -dot" class="badge -dot"
@ -52,6 +57,13 @@
box-sizing: border-box; box-sizing: border-box;
height: 100%; height: 100%;
.bookmark-emoji {
height: 100%;
box-sizing: border-box;
padding: 0.5em;
}
& .bookmark-emoji,
& .svg-inline--fa, & .svg-inline--fa,
& .iconLetter { & .iconLetter {
margin: 0; margin: 0;