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

132 lines
3.3 KiB
Vue
Raw Normal View History

2016-10-26 19:03:55 +02:00
<template>
<div :class="['Timeline', classes.root]">
2024-12-22 15:08:42 +02:00
<div
v-if="!embedded"
:class="classes.header"
>
2022-08-12 01:27:09 +03:00
<TimelineMenu
v-if="!embedded"
:timeline-name="timelineName"
/>
2025-04-06 12:12:17 +00:00
<ScrollTopButton />
2024-12-19 14:34:54 +02:00
<template v-if="mobileLayout">
<div
v-if="showLoadButton"
2022-11-21 22:17:33 +02:00
class="rightside-button"
>
<button
class="button-unstyled loadmore-button"
2022-10-17 21:50:37 +03:00
:title="loadButtonString"
@click.prevent="showNewStatuses"
>
<FAIcon
fixed-width
icon="circle-plus"
/>
2024-02-27 00:16:22 +02:00
<div class="badge -counter">
{{ mobileLoadButtonString }}
</div>
</button>
</div>
<div
2024-12-19 14:34:54 +02:00
v-else
class="loadmore-text faint veryfaint rightside-icon"
2022-10-17 21:50:37 +03:00
:title="$t('timeline.up_to_date')"
2022-11-07 13:22:40 -05:00
:aria-disabled="true"
@click.prevent
>
<FAIcon
fixed-width
icon="check"
/>
</div>
</template>
<template v-else>
<button
v-if="showLoadButton"
class="button-default loadmore-button"
@click.prevent="showNewStatuses"
>
{{ loadButtonString }}
</button>
<div
2024-12-19 14:34:54 +02:00
v-else
class="loadmore-text faint"
@click.prevent
>
{{ $t('timeline.up_to_date') }}
</div>
</template>
2022-11-21 22:17:33 +02:00
<QuickFilterSettings
v-if="!mobileLayout"
2025-01-20 16:22:41 +02:00
class="rightside-button"
2022-11-21 22:17:33 +02:00
/>
<QuickViewSettings
class="rightside-button"
/>
</div>
<div :class="classes.body">
2020-09-29 10:18:37 +00:00
<div
ref="timeline"
class="timeline"
2022-11-08 10:34:38 -05:00
role="feed"
2020-09-29 10:18:37 +00:00
>
2026-06-30 14:26:24 +03:00
<Conversation
2022-03-24 14:09:25 +02:00
v-for="status in filteredVisibleStatuses"
:key="status.id"
2022-11-07 13:53:56 -05:00
role="listitem"
2022-03-24 14:09:25 +02:00
class="status-fadein"
:status-id="status.id"
:in-profile="inProfile"
:profile-user-id="userId"
2026-08-10 22:26:22 +03:00
:virtual-hidden="virtualScrollingEnabled && !statusesToDisplay.has(status.id)"
2026-06-30 14:26:24 +03:00
collapsable
2022-03-24 14:09:25 +02:00
/>
2016-11-06 17:44:05 +01:00
</div>
</div>
<div :class="classes.footer">
2022-07-31 12:35:48 +03:00
<teleport
:to="footerSlipgate"
:disabled="!embedded || !footerSlipgate"
>
<div
v-if="count===0"
class="new-status-notification text-center faint"
>
{{ $t('timeline.no_statuses') }}
2020-11-24 16:10:03 +02:00
</div>
<div
v-else-if="bottomedOut"
class="new-status-notification text-center faint"
>
{{ $t('timeline.no_more_statuses') }}
</div>
<button
v-else-if="!timeline.loading"
class="button-unstyled -link"
@click.prevent="fetchOlderStatuses()"
>
<div class="new-status-notification text-center">
{{ $t('timeline.load_older') }}
</div>
</button>
<div
v-else
class="new-status-notification text-center"
>
<FAIcon
icon="circle-notch"
spin
size="lg"
/>
</div>
</teleport>
2024-12-19 14:34:54 +02:00
<!-- spacer to avoid having empty shrug -->
<span v-if="embedded && footerSlipgate" />
</div>
2016-10-26 19:03:55 +02:00
</div>
</template>
2016-10-26 19:03:55 +02:00
<script src="./timeline.js"></script>
<style src="./timeline.scss" lang="scss"> </style>