pleroma-fe/src/components/timeline/timeline.vue

123 lines
3.2 KiB
Vue
Raw Normal View History

2016-10-27 04:03:55 +11:00
<template>
<div :class="classes.root">
<div :class="classes.header">
<div class="title">
2019-07-05 17:17:44 +10:00
{{ title }}
2016-10-29 00:40:13 +11:00
</div>
2019-07-05 17:17:44 +10:00
<div
v-if="timelineError"
class="loadmore-error alert error"
@click.prevent
>
{{ $t('timeline.error_fetching') }}
</div>
2019-12-05 13:48:37 +11:00
<div
2019-12-09 11:02:34 +11:00
v-else-if="errorData"
2019-12-05 13:48:37 +11:00
class="loadmore-error alert error"
@click.prevent
>
{{ $t('timeline.error_403') }}
</div>
2019-07-05 17:17:44 +10:00
<button
2019-12-09 11:02:34 +11:00
v-if="timeline.newStatusCount > 0 && !timelineError && !errorData"
2019-07-05 17:17:44 +10:00
class="loadmore-button"
@click.prevent="showNewStatuses"
>
{{ $t('timeline.show_new') }}{{ newStatusCountStr }}
</button>
2019-07-05 17:17:44 +10:00
<div
2019-12-09 11:02:34 +11:00
v-if="!timeline.newStatusCount > 0 && !timelineError && !errorData"
2019-07-05 17:17:44 +10:00
class="loadmore-text faint"
@click.prevent
>
{{ $t('timeline.up_to_date') }}
</div>
</div>
<div :class="classes.body">
<div class="timeline">
<template v-for="statusId in pinnedStatusIds">
<conversation
v-if="timeline.statusesObject[statusId]"
2019-07-20 12:46:11 +10:00
:key="statusId + '-pinned'"
class="status-fadein"
2019-09-04 03:19:14 +10:00
:status-id="statusId"
:collapsable="true"
2019-08-16 03:16:55 +10:00
:pinned-status-ids-object="pinnedStatusIdsObject"
2019-09-14 06:55:17 +10:00
:in-profile="inProfile"
:profile-user-id="userId"
/>
</template>
2019-07-21 06:54:30 +10:00
<template v-for="status in timeline.visibleStatuses">
<conversation
v-if="!excludedStatusIdsObject[status.id]"
:key="status.id"
class="status-fadein"
2019-09-04 03:19:14 +10:00
:status-id="status.id"
2019-07-21 06:54:30 +10:00
:collapsable="true"
2019-09-14 06:55:17 +10:00
:in-profile="inProfile"
:profile-user-id="userId"
2019-07-21 06:54:30 +10:00
/>
</template>
2016-11-07 03:44:05 +11:00
</div>
</div>
<div :class="classes.footer">
2019-07-05 17:17:44 +10:00
<div
v-if="count===0"
class="new-status-notification text-center panel-footer faint"
>
{{ $t('timeline.no_statuses') }}
</div>
2019-07-05 17:17:44 +10:00
<div
v-else-if="bottomedOut"
class="new-status-notification text-center panel-footer faint"
>
{{ $t('timeline.no_more_statuses') }}
</div>
2019-07-05 17:17:44 +10:00
<a
2019-12-09 11:02:34 +11:00
v-else-if="!timeline.loading && !errorData"
2019-07-05 17:17:44 +10:00
href="#"
@click.prevent="fetchOlderStatuses()"
>
<div class="new-status-notification text-center panel-footer">{{ $t('timeline.load_older') }}</div>
</a>
2019-12-05 13:48:37 +11:00
<a
2019-12-09 11:02:34 +11:00
v-else-if="errorData"
2019-12-05 13:48:37 +11:00
href="#"
>
2019-12-09 11:02:34 +11:00
<div class="new-status-notification text-center panel-footer">{{ errorData }}</div>
2019-12-05 13:48:37 +11:00
</a>
2019-07-05 17:17:44 +10:00
<div
v-else
class="new-status-notification text-center panel-footer"
>
<i class="icon-spin3 animate-spin" />
</div>
</div>
2016-10-27 04:03:55 +11:00
</div>
</template>
2016-10-27 04:03:55 +11:00
<script src="./timeline.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.timeline {
2018-04-08 02:30:27 +10:00
.loadmore-text {
2018-11-26 11:19:04 +11:00
opacity: 1;
}
}
.new-status-notification {
2018-04-08 02:30:27 +10:00
position:relative;
margin-top: -1px;
font-size: 1.1em;
border-width: 1px 0 0 0;
border-style: solid;
border-color: var(--border, $fallback--border);
padding: 10px;
z-index: 1;
2018-10-08 03:59:22 +11:00
background-color: $fallback--fg;
2018-11-22 02:22:05 +11:00
background-color: var(--panel, $fallback--fg);
2018-04-08 02:30:27 +10:00
}
</style>