mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	enhance(client): tweak channel pages
This commit is contained in:
		
							parent
							
								
									ee144acea9
								
							
						
					
					
						commit
						cc441258db
					
				
					 4 changed files with 97 additions and 77 deletions
				
			
		| 
						 | 
				
			
			@ -5,7 +5,12 @@
 | 
			
		|||
	<MkError v-else-if="error" @retry="init()"/>
 | 
			
		||||
 | 
			
		||||
	<div v-else-if="empty" key="_empty_" class="empty">
 | 
			
		||||
		<slot name="empty"></slot>
 | 
			
		||||
		<slot name="empty">
 | 
			
		||||
			<div class="_fullinfo">
 | 
			
		||||
				<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
 | 
			
		||||
				<div>{{ $ts.nothing }}</div>
 | 
			
		||||
			</div>
 | 
			
		||||
		</slot>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div v-else class="cxiknjgy">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,12 +1,11 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div>
 | 
			
		||||
	<div class="_section">
 | 
			
		||||
		<div class="_content">
 | 
			
		||||
			<MkInput v-model="name">
 | 
			
		||||
<MkSpacer :content-max="700">
 | 
			
		||||
	<div class="_formRoot">
 | 
			
		||||
		<MkInput v-model="name" class="_formBlock">
 | 
			
		||||
			<template #label>{{ $ts.name }}</template>
 | 
			
		||||
		</MkInput>
 | 
			
		||||
 | 
			
		||||
			<MkTextarea v-model="description">
 | 
			
		||||
		<MkTextarea v-model="description" class="_formBlock">
 | 
			
		||||
			<template #label>{{ $ts.description }}</template>
 | 
			
		||||
		</MkTextarea>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -17,12 +16,11 @@
 | 
			
		|||
				<MkButton @click="removeBannerImage()"><i class="fas fa-trash-alt"></i> {{ $ts._channel.removeBanner }}</MkButton>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="_footer">
 | 
			
		||||
		<div class="_formBlock">
 | 
			
		||||
			<MkButton primary @click="save()"><i class="fas fa-save"></i> {{ channelId ? $ts.save : $ts.create }}</MkButton>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
</div>
 | 
			
		||||
</MkSpacer>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
| 
						 | 
				
			
			@ -51,9 +49,11 @@ export default defineComponent({
 | 
			
		|||
			[symbols.PAGE_INFO]: computed(() => this.channelId ? {
 | 
			
		||||
				title: this.$ts._channel.edit,
 | 
			
		||||
				icon: 'fas fa-satellite-dish',
 | 
			
		||||
				bg: 'var(--bg)',
 | 
			
		||||
			} : {
 | 
			
		||||
				title: this.$ts._channel.create,
 | 
			
		||||
				icon: 'fas fa-satellite-dish',
 | 
			
		||||
				bg: 'var(--bg)',
 | 
			
		||||
			}),
 | 
			
		||||
			channel: null,
 | 
			
		||||
			name: null,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div v-if="channel" class="_section">
 | 
			
		||||
	<div class="wpgynlbz _content _panel _gap" :class="{ hide: !showBanner }">
 | 
			
		||||
<MkSpacer :content-max="700">
 | 
			
		||||
	<div v-if="channel">
 | 
			
		||||
		<div class="wpgynlbz _panel _gap" :class="{ hide: !showBanner }">
 | 
			
		||||
			<XChannelFollowButton :channel="channel" :full="true" class="subscribe"/>
 | 
			
		||||
			<button class="_button toggle" @click="() => showBanner = !showBanner">
 | 
			
		||||
				<template v-if="showBanner"><i class="fas fa-angle-up"></i></template>
 | 
			
		||||
| 
						 | 
				
			
			@ -20,10 +21,11 @@
 | 
			
		|||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
	<XPostForm v-if="$i" :channel="channel" class="post-form _content _panel _gap" fixed/>
 | 
			
		||||
		<XPostForm v-if="$i" :channel="channel" class="post-form _panel _gap" fixed/>
 | 
			
		||||
 | 
			
		||||
	<XTimeline :key="channelId" class="_content _gap" src="channel" :channel="channelId" @before="before" @after="after"/>
 | 
			
		||||
</div>
 | 
			
		||||
		<XTimeline :key="channelId" class="_gap" src="channel" :channel="channelId" @before="before" @after="after"/>
 | 
			
		||||
	</div>
 | 
			
		||||
</MkSpacer>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
| 
						 | 
				
			
			@ -55,6 +57,12 @@ export default defineComponent({
 | 
			
		|||
			[symbols.PAGE_INFO]: computed(() => this.channel ? {
 | 
			
		||||
				title: this.channel.name,
 | 
			
		||||
				icon: 'fas fa-satellite-dish',
 | 
			
		||||
				bg: 'var(--bg)',
 | 
			
		||||
				actions: [...(this.$i && this.$i.id === this.channel.userId ? [{
 | 
			
		||||
					icon: 'fas fa-cog',
 | 
			
		||||
					text: this.$ts.edit,
 | 
			
		||||
					handler: this.edit,
 | 
			
		||||
				}] : [])],
 | 
			
		||||
			} : null),
 | 
			
		||||
			channel: null,
 | 
			
		||||
			showBanner: true,
 | 
			
		||||
| 
						 | 
				
			
			@ -79,8 +87,10 @@ export default defineComponent({
 | 
			
		|||
		}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
 | 
			
		||||
	methods: {
 | 
			
		||||
		edit() {
 | 
			
		||||
			this.$router.push(`/channels/${this.channel.id}/edit`);
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,58 +1,63 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div>
 | 
			
		||||
	<div v-if="$i" class="_section" style="padding: 0;">
 | 
			
		||||
		<MkTab v-model="tab" class="_content">
 | 
			
		||||
			<option value="featured"><i class="fas fa-fire-alt"></i> {{ $ts._channel.featured }}</option>
 | 
			
		||||
			<option value="following"><i class="fas fa-heart"></i> {{ $ts._channel.following }}</option>
 | 
			
		||||
			<option value="owned"><i class="fas fa-edit"></i> {{ $ts._channel.owned }}</option>
 | 
			
		||||
		</MkTab>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="_section">
 | 
			
		||||
<MkSpacer :content-max="700">
 | 
			
		||||
	<div v-if="tab === 'featured'" class="_content grwlizim featured">
 | 
			
		||||
		<MkPagination v-slot="{items}" :pagination="featuredPagination">
 | 
			
		||||
			<MkChannelPreview v-for="channel in items" :key="channel.id" class="_gap" :channel="channel"/>
 | 
			
		||||
		</MkPagination>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
		<div v-if="tab === 'following'" class="_content grwlizim following">
 | 
			
		||||
	<div v-else-if="tab === 'following'" class="_content grwlizim following">
 | 
			
		||||
		<MkPagination v-slot="{items}" :pagination="followingPagination">
 | 
			
		||||
			<MkChannelPreview v-for="channel in items" :key="channel.id" class="_gap" :channel="channel"/>
 | 
			
		||||
		</MkPagination>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
		<div v-if="tab === 'owned'" class="_content grwlizim owned">
 | 
			
		||||
	<div v-else-if="tab === 'owned'" class="_content grwlizim owned">
 | 
			
		||||
		<MkButton class="new" @click="create()"><i class="fas fa-plus"></i></MkButton>
 | 
			
		||||
		<MkPagination v-slot="{items}" :pagination="ownedPagination">
 | 
			
		||||
			<MkChannelPreview v-for="channel in items" :key="channel.id" class="_gap" :channel="channel"/>
 | 
			
		||||
		</MkPagination>
 | 
			
		||||
	</div>
 | 
			
		||||
	</div>
 | 
			
		||||
</div>
 | 
			
		||||
</MkSpacer>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { defineComponent } from 'vue';
 | 
			
		||||
import { computed, defineComponent } from 'vue';
 | 
			
		||||
import MkChannelPreview from '@/components/channel-preview.vue';
 | 
			
		||||
import MkPagination from '@/components/ui/pagination.vue';
 | 
			
		||||
import MkButton from '@/components/ui/button.vue';
 | 
			
		||||
import MkTab from '@/components/tab.vue';
 | 
			
		||||
import * as symbols from '@/symbols';
 | 
			
		||||
 | 
			
		||||
export default defineComponent({
 | 
			
		||||
	components: {
 | 
			
		||||
		MkChannelPreview, MkPagination, MkButton, MkTab
 | 
			
		||||
		MkChannelPreview, MkPagination, MkButton,
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			[symbols.PAGE_INFO]: {
 | 
			
		||||
			[symbols.PAGE_INFO]: computed(() => ({
 | 
			
		||||
				title: this.$ts.channel,
 | 
			
		||||
				icon: 'fas fa-satellite-dish',
 | 
			
		||||
				action: {
 | 
			
		||||
				bg: 'var(--bg)',
 | 
			
		||||
				actions: [{
 | 
			
		||||
					icon: 'fas fa-plus',
 | 
			
		||||
					text: this.$ts.create,
 | 
			
		||||
					handler: this.create
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
				}],
 | 
			
		||||
				tabs: [{
 | 
			
		||||
					active: this.tab === 'featured',
 | 
			
		||||
					title: this.$ts._channel.featured,
 | 
			
		||||
					icon: 'fas fa-fire-alt',
 | 
			
		||||
					onClick: () => { this.tab = 'featured'; },
 | 
			
		||||
				}, {
 | 
			
		||||
					active: this.tab === 'following',
 | 
			
		||||
					title: this.$ts._channel.following,
 | 
			
		||||
					icon: 'fas fa-heart',
 | 
			
		||||
					onClick: () => { this.tab = 'following'; },
 | 
			
		||||
				}, {
 | 
			
		||||
					active: this.tab === 'owned',
 | 
			
		||||
					title: this.$ts._channel.owned,
 | 
			
		||||
					icon: 'fas fa-edit',
 | 
			
		||||
					onClick: () => { this.tab = 'owned'; },
 | 
			
		||||
				},]
 | 
			
		||||
			})),
 | 
			
		||||
			tab: 'featured',
 | 
			
		||||
			featuredPagination: {
 | 
			
		||||
				endpoint: 'channels/featured',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue