summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkNotes.vue
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/components/MkNotes.vue')
-rw-r--r--packages/frontend/src/components/MkNotes.vue67
1 files changed, 67 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkNotes.vue b/packages/frontend/src/components/MkNotes.vue
new file mode 100644
index 0000000000..f9952e4245
--- /dev/null
+++ b/packages/frontend/src/components/MkNotes.vue
@@ -0,0 +1,67 @@
+<template>
+<MkPagination ref="pagingComponent" :pagination="pagination">
+ <template #empty>
+ <div class="_fullinfo">
+ <img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
+ <div>{{ i18n.ts.noNotes }}</div>
+ </div>
+ </template>
+
+ <template #default="{ items: notes }">
+ <div :class="[$style.root, { [$style.noGap]: noGap }]">
+ <MkDateSeparatedList
+ ref="notes"
+ v-slot="{ item: note }"
+ :items="notes"
+ :direction="pagination.reversed ? 'up' : 'down'"
+ :reversed="pagination.reversed"
+ :no-gap="noGap"
+ :ad="true"
+ :class="$style.notes"
+ >
+ <XNote :key="note._featuredId_ || note._prId_ || note.id" :class="$style.note" :note="note"/>
+ </MkDateSeparatedList>
+ </div>
+ </template>
+</MkPagination>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue';
+import XNote from '@/components/MkNote.vue';
+import MkDateSeparatedList from '@/components/MkDateSeparatedList.vue';
+import MkPagination, { Paging } from '@/components/MkPagination.vue';
+import { i18n } from '@/i18n';
+
+const props = defineProps<{
+ pagination: Paging;
+ noGap?: boolean;
+}>();
+
+const pagingComponent = shallowRef<InstanceType<typeof MkPagination>>();
+
+defineExpose({
+ pagingComponent,
+});
+</script>
+
+<style lang="scss" module>
+.root {
+ &.noGap {
+ > .notes {
+ background: var(--panel);
+ }
+ }
+
+ &:not(.noGap) {
+ > .notes {
+ background: var(--bg);
+
+ .note {
+ background: var(--panel);
+ border-radius: var(--radius);
+ }
+ }
+ }
+}
+</style>