Add clips, antennas hint
This commit is contained in:
parent
eeb4a41d6c
commit
ee08e1bdda
6 changed files with 108 additions and 61 deletions
|
@ -404,6 +404,7 @@ avoidMultiCaptchaConfirm: "Using multiple Captcha systems may cause interference
|
|||
\ them. Would you like to disable the other Captcha systems currently active? If\
|
||||
\ you would like them to stay enabled, press cancel."
|
||||
antennas: "Antennas"
|
||||
antennasDesc: "Antennas display new posts matching the criteria you set!\n They can be accessed from the timelines page."
|
||||
manageAntennas: "Manage Antennas"
|
||||
name: "Name"
|
||||
antennaSource: "Antenna source"
|
||||
|
@ -771,6 +772,7 @@ pageLikedCount: "Number of received Page likes"
|
|||
contact: "Contact"
|
||||
useSystemFont: "Use the system's default font"
|
||||
clips: "Clips"
|
||||
clipsDesc: "Clips are like share-able categorized bookmarks. You can create clips from the menu of individual posts."
|
||||
experimentalFeatures: "Experimental features"
|
||||
developer: "Developer"
|
||||
makeExplorable: "Make account visible in \"Explore\""
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="fpezltsf" :class="{ warn }">
|
||||
<div class="info" :class="{ warn, card }">
|
||||
<i v-if="warn" class="ph-warning ph-bold ph-lg"></i>
|
||||
<i v-else class="ph-info ph-bold ph-lg"></i>
|
||||
<i v-else class="ph-bold ph-lg" :class="icon ? `ph-${icon}` : 'ph-info'"></i>
|
||||
<slot></slot>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -10,12 +10,14 @@
|
|||
import {} from "vue";
|
||||
|
||||
defineProps<{
|
||||
icon?: string;
|
||||
warn?: boolean;
|
||||
card?: boolean;
|
||||
}>();
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.fpezltsf {
|
||||
.info {
|
||||
padding: 16px;
|
||||
font-size: 90%;
|
||||
background: var(--infoBg);
|
||||
|
@ -27,6 +29,28 @@ defineProps<{
|
|||
color: var(--infoWarnFg);
|
||||
}
|
||||
|
||||
&.card {
|
||||
background: var(--panel);
|
||||
color: var(--fg);
|
||||
padding: 48px;
|
||||
font-size: 1em;
|
||||
text-align: center;
|
||||
> i {
|
||||
display: block;
|
||||
font-size: 4em;
|
||||
margin: 0;
|
||||
}
|
||||
> :deep(*) {
|
||||
margin-inline: auto;
|
||||
}
|
||||
> :deep(:not(:last-child)) {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
> :deep(p) {
|
||||
max-width: 30em;
|
||||
}
|
||||
}
|
||||
|
||||
> i {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</slot>
|
||||
</div>
|
||||
|
||||
<div v-else ref="rootEl">
|
||||
<div v-else ref="rootEl" class="list">
|
||||
<div
|
||||
v-show="pagination.reversed && more"
|
||||
key="_more_"
|
||||
|
@ -487,4 +487,8 @@ defineExpose({
|
|||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
.list > :deep(._button) {
|
||||
margin-inline: auto;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
<template>
|
||||
<div class="geegznzt">
|
||||
<XAntenna :antenna="draft" @created="onAntennaCreated" />
|
||||
</div>
|
||||
<MkSpacer :content-max="700">
|
||||
<div class="geegznzt">
|
||||
<XAntenna :antenna="draft" @created="onAntennaCreated" />
|
||||
</div>
|
||||
</MkSpacer>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
|
|
|
@ -8,43 +8,60 @@
|
|||
/></template>
|
||||
<MkSpacer :content-max="700">
|
||||
<div class="ieepwinx">
|
||||
<MkButton
|
||||
:link="true"
|
||||
to="/my/antennas/create"
|
||||
primary
|
||||
class="add"
|
||||
><i class="ph-plus ph-bold ph-lg"></i>
|
||||
{{ i18n.ts.add }}</MkButton
|
||||
>
|
||||
|
||||
<div class="">
|
||||
<MkPagination
|
||||
v-slot="{ items }"
|
||||
ref="list"
|
||||
:pagination="pagination"
|
||||
>
|
||||
<div v-for="antenna in items" :key="antenna.id">
|
||||
<MkA
|
||||
class="uopelskx"
|
||||
<template #empty>
|
||||
<MkInfo
|
||||
:icon="'flying-saucer'"
|
||||
:card="true"
|
||||
>
|
||||
<p>{{ i18n.ts.antennasDesc }}</p>
|
||||
<MkButton
|
||||
:link="true"
|
||||
to="/my/antennas/create"
|
||||
primary
|
||||
class="add"
|
||||
><i class="ph-plus ph-bold ph-lg"></i>
|
||||
{{ i18n.ts.add }}</MkButton
|
||||
>
|
||||
</MkInfo>
|
||||
</template>
|
||||
<template #default="{ items }">
|
||||
<MkButton
|
||||
:link="true"
|
||||
:to="`/timeline/antenna/${antenna.id}`"
|
||||
to="/my/antennas/create"
|
||||
primary
|
||||
class="add"
|
||||
><i class="ph-plus ph-bold ph-lg"></i>
|
||||
{{ i18n.ts.add }}</MkButton
|
||||
>
|
||||
<i class="ph-flying-saucer ph-bold ph-lg"></i
|
||||
><i
|
||||
:class="`${
|
||||
antenna.hasUnreadNote
|
||||
? 'ph-circle ph-fill'
|
||||
: 'ph-check'
|
||||
} ph-xs notify-icon`"
|
||||
></i>
|
||||
</MkA>
|
||||
<MkA
|
||||
class="ljoevbzj"
|
||||
:to="`/my/antennas/${antenna.id}`"
|
||||
>
|
||||
<div class="name">{{ antenna.name }}</div>
|
||||
</MkA>
|
||||
</div>
|
||||
<div v-for="antenna in items" :key="antenna.id">
|
||||
<MkA
|
||||
class="uopelskx"
|
||||
:link="true"
|
||||
:to="`/timeline/antenna/${antenna.id}`"
|
||||
>
|
||||
<i class="ph-flying-saucer ph-bold ph-lg"></i
|
||||
><i
|
||||
:class="`${
|
||||
antenna.hasUnreadNote
|
||||
? 'ph-circle ph-fill'
|
||||
: 'ph-check'
|
||||
} ph-xs notify-icon`"
|
||||
></i>
|
||||
</MkA>
|
||||
<MkA
|
||||
class="ljoevbzj"
|
||||
:to="`/my/antennas/${antenna.id}`"
|
||||
>
|
||||
<div class="name">{{ antenna.name }}</div>
|
||||
</MkA>
|
||||
</div>
|
||||
</template>
|
||||
</MkPagination>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -56,6 +73,7 @@
|
|||
import { onActivated, onDeactivated, ref } from "vue";
|
||||
import MkPagination from "@/components/MkPagination.vue";
|
||||
import MkButton from "@/components/MkButton.vue";
|
||||
import MkInfo from "@/components/MkInfo.vue";
|
||||
import { i18n } from "@/i18n";
|
||||
import { definePageMetadata } from "@/scripts/page-metadata";
|
||||
|
||||
|
@ -101,10 +119,6 @@ definePageMetadata({
|
|||
|
||||
<style lang="scss" scoped>
|
||||
.ieepwinx {
|
||||
> .add {
|
||||
margin: 0 auto 16px auto;
|
||||
}
|
||||
|
||||
.uopelskx {
|
||||
float: left;
|
||||
min-width: 25px;
|
||||
|
|
|
@ -8,28 +8,32 @@
|
|||
/></template>
|
||||
<MkSpacer :content-max="700">
|
||||
<div class="qtcaoidl">
|
||||
<MkButton primary class="add" @click="create"
|
||||
><i class="ph-plus ph-bold ph-lg"></i>
|
||||
{{ i18n.ts.add }}</MkButton
|
||||
>
|
||||
|
||||
<MkPagination
|
||||
v-slot="{ items }"
|
||||
ref="pagingComponent"
|
||||
:pagination="pagination"
|
||||
class="list"
|
||||
>
|
||||
<MkA
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
:to="`/clips/${item.id}`"
|
||||
class="item _panel _gap"
|
||||
>
|
||||
<b>{{ item.name }}</b>
|
||||
<div v-if="item.description" class="description">
|
||||
{{ item.description }}
|
||||
</div>
|
||||
</MkA>
|
||||
<template #empty>
|
||||
<MkInfo
|
||||
:icon="'paperclip'"
|
||||
:card="true"
|
||||
>
|
||||
<p>{{ i18n.ts.clipsDesc }}</p>
|
||||
</MkInfo>
|
||||
</template>
|
||||
<template #default="{ items }">
|
||||
<MkA
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
:to="`/clips/${item.id}`"
|
||||
class="item _panel _gap"
|
||||
>
|
||||
<b>{{ item.name }}</b>
|
||||
<div v-if="item.description" class="description">
|
||||
{{ item.description }}
|
||||
</div>
|
||||
</MkA>
|
||||
</template>
|
||||
</MkPagination>
|
||||
</div>
|
||||
</MkSpacer>
|
||||
|
@ -40,6 +44,7 @@
|
|||
import {} from "vue";
|
||||
import MkPagination from "@/components/MkPagination.vue";
|
||||
import MkButton from "@/components/MkButton.vue";
|
||||
import MkInfo from "@/components/MkInfo.vue";
|
||||
import * as os from "@/os";
|
||||
import { i18n } from "@/i18n";
|
||||
import { definePageMetadata } from "@/scripts/page-metadata";
|
||||
|
@ -100,10 +105,6 @@ definePageMetadata({
|
|||
|
||||
<style lang="scss" scoped>
|
||||
.qtcaoidl {
|
||||
> .add {
|
||||
margin: 0 auto 16px auto;
|
||||
}
|
||||
|
||||
> .list {
|
||||
> .item {
|
||||
display: block;
|
||||
|
|
Loading…
Reference in a new issue