Skip to content
Snippets Groups Projects
welcome-timeline.vue 2.14 KiB
Newer Older
syuilo's avatar
:v:
syuilo committed
<template>
<div class="mk-welcome-timeline">
syuilo's avatar
syuilo committed
	<div v-for="note in notes">
syuilo's avatar
syuilo committed
		<mk-avatar class="avatar" :user="note.user" target="_blank"/>
syuilo's avatar
:v:
syuilo committed
		<div class="body">
			<header>
syuilo's avatar
syuilo committed
				<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
				<span class="username">@{{ note.user | acct }}</span>
syuilo's avatar
:v:
syuilo committed
				<div class="info">
syuilo's avatar
syuilo committed
					<router-link class="created-at" :to="note | notePage">
syuilo's avatar
syuilo committed
						<mk-time :time="note.createdAt"/>
syuilo's avatar
:v:
syuilo committed
					</router-link>
				</div>
			</header>
			<div class="text">
syuilo's avatar
syuilo committed
				<mk-note-html :text="note.text"/>
syuilo's avatar
:v:
syuilo committed
			</div>
		</div>
	</div>
</div>
</template>

<script lang="ts">
import Vue from 'vue';

export default Vue.extend({
	data() {
		return {
			fetching: true,
syuilo's avatar
syuilo committed
			notes: []
syuilo's avatar
:v:
syuilo committed
		};
	},
	mounted() {
		this.fetch();
	},
	methods: {
		fetch(cb?) {
			this.fetching = true;
syuilo's avatar
syuilo committed
			(this as any).api('notes', {
syuilo's avatar
:v:
syuilo committed
				reply: false,
syuilo's avatar
syuilo committed
				renote: false,
syuilo's avatar
:v:
syuilo committed
				media: false,
				poll: false,
				bot: false
syuilo's avatar
syuilo committed
			}).then(notes => {
				this.notes = notes;
syuilo's avatar
:v:
syuilo committed
				this.fetching = false;
			});
		}
	}
});
</script>

<style lang="stylus" scoped>
syuilo's avatar
syuilo committed
root(isDark)
	background isDark ? #282C37 : #fff
syuilo's avatar
:v:
syuilo committed

	> div
		padding 16px
		overflow-wrap break-word
		font-size .9em
syuilo's avatar
syuilo committed
		color isDark ? #fff : #4C4C4C
		border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05)
syuilo's avatar
:v:
syuilo committed

		&:after
			content ""
			display block
			clear both

syuilo's avatar
syuilo committed
		> .avatar
syuilo's avatar
:v:
syuilo committed
			display block
			float left
			position -webkit-sticky
			position sticky
			top 16px
syuilo's avatar
syuilo committed
			width 42px
			height 42px
			border-radius 6px
syuilo's avatar
:v:
syuilo committed

		> .body
			float right
syuilo's avatar
syuilo committed
			width calc(100% - 42px)
			padding-left 12px
syuilo's avatar
:v:
syuilo committed

			> header
				display flex
				align-items center
				margin-bottom 4px
				white-space nowrap

				> .name
					display block
					margin 0 .5em 0 0
					padding 0
					overflow hidden
					font-weight bold
					text-overflow ellipsis
syuilo's avatar
syuilo committed
					color isDark ? #fff : #627079
syuilo's avatar
:v:
syuilo committed

				> .username
					margin 0 .5em 0 0
syuilo's avatar
syuilo committed
					color isDark ? #606984 : #ccc
syuilo's avatar
:v:
syuilo committed

				> .info
					margin-left auto
					font-size 0.9em

					> .created-at
syuilo's avatar
syuilo committed
						color isDark ? #606984 : #c0c0c0

.mk-welcome-timeline[data-darkmode]
	root(true)

.mk-welcome-timeline:not([data-darkmode])
	root(false)
syuilo's avatar
:v:
syuilo committed

</style>