fix(front): tags display

This commit is contained in:
ArneBo 2025-03-31 11:02:00 +02:00
parent aee2eaa0ec
commit ad14b2ec98
9 changed files with 79 additions and 75 deletions

View File

@ -78,7 +78,7 @@ watch(
<Section <Section
align-left align-left
:h2="title" :h2="title"
:columns-per-item="3" :columns-per-item="1"
> >
<inline-search-bar <inline-search-bar
v-if="search" v-if="search"

View File

@ -79,6 +79,7 @@ watch(
<template> <template>
<Section <Section
align-left align-left
columns-per-item=1
:h2="title" :h2="title"
> >
<Loader <Loader

View File

@ -73,7 +73,7 @@ watch([() => props.filters, page],
<template> <template>
<Section <Section
align-left align-left
:columns-per-item="3" :columns-per-item="1"
:h2="title || undefined" :h2="title || undefined"
> >
<Loader <Loader

View File

@ -186,6 +186,7 @@ watch(() => props.websocketHandlers.includes('Listen'), (to) => {
<span v-if="ac.joinphrase">{{ ac.joinphrase }}</span> <span v-if="ac.joinphrase">{{ ac.joinphrase }}</span>
</span> </span>
</div> </div>
<Spacer :size="8" />
<TagsList <TagsList
label-classes="tiny" label-classes="tiny"
:truncate-size="20" :truncate-size="20"

View File

@ -27,11 +27,6 @@ const labels = computed(() => ({
</script> </script>
<template> <template>
<Layout
v-title="labels.title"
main
stack
>
<h1 class="ui header"> <h1 class="ui header">
<span class="funkwhale solid raised secondary pill"> <span class="funkwhale solid raised secondary pill">
<span class="pill-content"> <span class="pill-content">
@ -57,64 +52,71 @@ const labels = computed(() => ({
</Button> </Button>
</Layout> </Layout>
<div class="ui hidden divider" /> <Spacer :size=64 />
<div class="ui row"> <artist-widget
<artist-widget :key="'artist' + id"
:key="'artist' + id" :controls="false"
:controls="false" :title="t('components.library.TagDetail.header.artists')"
:filters="{playable: true, ordering: '-creation_date', tag: id, include_channels: 'false'}" :action="{
> text: t('components.library.TagDetail.link.artists'),
<template #title> to: {name: 'library.artists.browse', query: {tag: id}},
<router-link :to="{name: 'library.artists.browse', query: {tag: id}}"> secondary: true,
{{ t('components.library.TagDetail.link.artists') }} solid: true
</router-link> }"
</template> :filters="{playable: true, ordering: '-creation_date', tag: id, include_channels: 'false'}"
</artist-widget> >
<Spacer /> </artist-widget>
<h3 class="ui header"> <Spacer :size=64 />
{{ t('components.library.TagDetail.header.channels') }} <channels-widget
</h3> :key="'channels' + id"
<channels-widget :show-modification-date="true"
:key="'channels' + id" :limit="12"
:show-modification-date="true" :title="t('components.library.TagDetail.header.channels')"
:limit="12" :action="{
:filters="{tag: id, ordering: '-creation_date'}" text: t('components.library.TagDetail.link.channels'),
/> to: {name: 'library.channels.browse', query: {tag: id}},
<Spacer /> secondary: true,
<album-widget solid: true
:key="'album' + id" }"
:show-count="true" :filters="{tag: id, ordering: '-creation_date'}"
:controls="false" />
:filters="{playable: true, ordering: '-creation_date', tag: id}" <Spacer :size=64 />
> <album-widget
<template #title> :key="'album' + id"
<router-link :to="{name: 'library.albums.browse', query: {tag: id}}"> :show-count="true"
{{ t('components.library.TagDetail.link.albums') }} :controls="false"
</router-link> :filters="{playable: true, ordering: '-creation_date', tag: id}"
</template> :title="t('components.library.TagDetail.header.albums')"
</album-widget> :action="{
<Spacer /> text: t('components.library.TagDetail.link.albums'),
<track-widget to: {name: 'library.albums.browse', query: {tag: id}},
:key="'track' + id" secondary: true,
:show-count="true" solid: true
:limit="12" }"
item-classes="track-item inline" />
:url="'/tracks/'" <Spacer :size=64 />
:is-activity="false" <track-widget
:filters="{playable: true, ordering: '-creation_date', tag: id}" :key="'track' + id"
> :show-count="true"
<template #title> :limit="12"
{{ t('components.library.TagDetail.header.tracks') }} item-classes="track-item inline"
</template> :url="'/tracks/'"
</track-widget> :is-activity="false"
</div> :filters="{playable: true, ordering: '-creation_date', tag: id}"
</Layout> :title="t('components.library.TagDetail.header.tracks')"
/>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
h1 > .pill > .pill-content { h1 > .pill {
font-size: 48px; border-radius: 100vh;
line-height: 48px; display: inline-block;
padding: 20px 30px; padding: 10px;
> .pill-content {
font-size: 48px;
line-height: 48px;
padding: 20px 30px;
}
} }
</style> </style>

View File

@ -354,7 +354,7 @@ watch(showDeleteModal, (newValue) => {
{{ momentFormat(new Date(track.creation_date), 'LL') }} {{ momentFormat(new Date(track.creation_date), 'LL') }}
</time> </time>
</Layout> </Layout>
<Spacer :size="32" /> <Spacer :size=16 />
<Modal <Modal
v-if="isEmbedable" v-if="isEmbedable"

View File

@ -148,6 +148,7 @@ const trackDetails: {
flex flex
style="gap: 24px;" style="gap: 24px;"
> >
<Spacer />
<Layout <Layout
stack stack
style="flex: 1; gap: 0;" style="flex: 1; gap: 0;"

View File

@ -38,7 +38,7 @@ const tags = computed(() => {
<template> <template>
<Layout <Layout
flex flex
gap-8 gap-16
class="component-tags-list" class="component-tags-list"
> >
<router-link <router-link
@ -46,6 +46,7 @@ const tags = computed(() => {
:key="tag" :key="tag"
:to="{name: props.detailRoute, params: { id: tag } }" :to="{name: props.detailRoute, params: { id: tag } }"
:class="props.labelClasses" :class="props.labelClasses"
style="text-decoration: none;"
> >
<Pill raised> <Pill raised>
{{ `#${truncate(tag, props.truncateSize)}` }} {{ `#${truncate(tag, props.truncateSize)}` }}

View File

@ -1866,13 +1866,18 @@
}, },
"TagDetail": { "TagDetail": {
"header": { "header": {
"albums": "Albums",
"artists": "Artists",
"channels": "Channels", "channels": "Channels",
"tracks": "Tracks" "tracks": "Tracks"
}, },
"link": { "link": {
"albums": "Albums", "albums": "View all Albums with this tag",
"artists": "Artists", "artists": "View all Artists with this tag",
"moderation": "Open in moderation interface" "channels": "View all Channels with this tag",
"django": "View in Django's admin",
"localProfile": "Open local profile",
"tracks": "View all Tracks with this tag"
} }
}, },
"TagSelector": { "TagSelector": {
@ -3590,13 +3595,6 @@
"audioContent": "Audio content", "audioContent": "Audio content",
"tagData": "Tag data" "tagData": "Tag data"
}, },
"link": {
"albums": "Albums",
"artists": "Artists",
"django": "View in Django's admin",
"localProfile": "Open local profile",
"tracks": "Tracks"
},
"modal": { "modal": {
"delete": { "delete": {
"content": { "content": {