Skip to content

Commit 6814b2e

Browse files
committed
fix #1441
see also #1419
1 parent 747f510 commit 6814b2e

File tree

3 files changed

+68
-69
lines changed

3 files changed

+68
-69
lines changed
+26-20
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,31 @@
11
<template>
22
<div class="issue-viewer-table-of-contents">
3-
<div v-for="(item, i) in items" :key="i"
3+
<div
4+
v-for="(item, i) in items"
5+
:key="i"
46
class="border-bottom"
57
@click="$emit('article-selected', item)"
68
>
79
<table-of-contents-item
810
:ref="`toc-article-${item.uid}`"
911
:item="item"
1012
:headers="headers"
11-
:active="item.uid === selectedArticleId">
12-
<template v-slot:actions>
13-
<div class="border-top border-bottom py-1 my-2">
14-
<span class="small">{{$t('label_continue_reading')}}</span>
15-
<a class="small-caps" :class="{
16-
'font-weight-bold': item.uid === selectedArticleId
17-
}" @click="$emit('click-full-text', item.uid)">
13+
:active="item.uid === selectedArticleId"
14+
>
15+
<!-- <template v-slot:actions>
16+
<div>
17+
<span class="small">{{ $t('label_continue_reading') }}</span>
18+
<a
19+
class="small-caps"
20+
:class="{
21+
'font-weight-bold': item.uid === selectedArticleId
22+
}"
23+
@click="$emit('click-full-text', item.uid)"
24+
>
1825
{{ $t('closeReadingView') }}
1926
</a>
2027
</div>
21-
</template>
28+
</template> -->
2229
</table-of-contents-item>
2330
</div>
2431
</div>
@@ -29,46 +36,46 @@ import TableOfContentsItem from '@/components/modules/lists/TableOfContentsItem.
2936
3037
export default {
3138
data: () => ({
32-
scrollTocToArticleTimer: 0,
39+
scrollTocToArticleTimer: 0
3340
}),
3441
props: {
3542
headers: {
3643
type: Object,
37-
default: () => {},
44+
default: () => {}
3845
},
3946
selectedArticleId: String,
4047
items: {
4148
type: Array,
42-
default: () => [],
49+
default: () => []
4350
}
4451
},
4552
components: {
46-
TableOfContentsItem,
53+
TableOfContentsItem
4754
},
4855
methods: {
4956
/** @param {string} articleId */
5057
scrollTocToArticle(articleId) {
5158
const articleComponent = (this.$refs[`toc-article-${articleId}`] ?? [])[0]
5259
if (articleComponent == null) {
53-
console.warn('scrollTocToArticle: ',articleId, 'DOM not ready yet.')
60+
console.warn('scrollTocToArticle: ', articleId, 'DOM not ready yet.')
5461
clearTimeout(this.scrollTocToArticleTimer)
5562
this.scrollTocToArticleTimer = setTimeout(() => this.scrollTocToArticle(articleId), 500)
56-
return;
63+
return
5764
}
5865
const articleElement = articleComponent.$el
5966
const container = this.$el.parentNode.parentNode
6067
6168
const relativeTop = articleElement.offsetTop - container.offsetTop
6269
container.scrollTo({ top: relativeTop - 1, behavior: 'smooth' })
63-
},
70+
}
6471
},
6572
watch: {
6673
/** @param {string} id */
6774
selectedArticleId: {
6875
handler(id) {
69-
this.scrollTocToArticle(id);
76+
this.scrollTocToArticle(id)
7077
},
71-
immediate: true,
78+
immediate: true
7279
}
7380
}
7481
}
@@ -81,5 +88,4 @@ export default {
8188
}
8289
}
8390
</i18n>
84-
<style lang="css" scoped>
85-
</style>
91+
<style lang="css" scoped></style>

src/components/modules/lists/ArticleItem.vue

+10-11
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,21 @@
2727
/>
2828
</div>
2929
</div>
30-
30+
<div class="article-meta">
31+
<span v-if="showType && !showMeta">{{ $t(`buckets.type.${item.type}`) }}</span>
32+
<span v-if="showPages && !showMeta"> – {{ pages }} </span>
33+
</div>
3134
<div
3235
v-if="showExcerpt && !item?.matches?.length && item.type !== 'image'"
3336
class="article-excerpt mt-2"
3437
>
35-
<span class="article-excerpt">{{ item.excerpt }}</span>
36-
<b-badge v-if="showSize || showType" variant="light" class="mr-1 pt-1">
37-
<span v-if="showType && item.type">{{ $t(`buckets.type.${item.type}`) }} | </span>
38-
<span v-if="showSize">
39-
<span v-if="item.size > 1200">{{
40-
$t('readingTime', { min: parseInt(item.size / 1200) })
41-
}}</span>
42-
<span v-else>{{ $t('reducedReadingTime') }}</span>
43-
</span>
38+
<blockquote class="text-muted">{{ item.excerpt }}</blockquote>
39+
<b-badge v-if="showSize" variant="light" class="mr-1 pt-1">
40+
<span v-if="item.size > 1200">{{
41+
$t('readingTime', { min: parseInt(item.size / 1200) })
42+
}}</span>
43+
<span v-else>{{ $t('reducedReadingTime') }}</span>
4444
</b-badge>
45-
<span v-if="showPages">{{ pages }}</span>
4645
</div>
4746

4847
<slot name="actions"></slot>
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,36 @@
11
<template>
22
<div class="TableOfContentsItem">
3-
<div :class="{ media: true, active }">
4-
<div class="media-body">
5-
<article-item :item="item" class="p-3 clearfix"
6-
show-excerpt
7-
show-entities
8-
show-size
9-
show-pages
10-
show-matches
11-
show-type>
12-
<template v-slot:title>
13-
<h2 style="font-weight: bold;">
14-
{{item.title}}
15-
</h2>
16-
</template>
17-
<template v-slot:actions>
18-
<slot name="actions"></slot>
19-
</template>
20-
</article-item>
21-
<div v-bind:key="i" v-for="(image, i) in item.images">
22-
<image-item
23-
:height="200"
24-
class="mx-3 mb-2"
25-
:item="image"
26-
:headers="headers"
27-
/>
28-
<div class=" ml-3 mb-3">
29-
<router-link class="btn btn-outline-secondary btn-sm "
30-
:to="getSimilarImagesHref(image)">
31-
get similar images
32-
</router-link>
3+
<div :class="{ media: true, active }">
4+
<div class="media-body">
5+
<article-item
6+
:item="item"
7+
class="p-3 clearfix"
8+
show-excerpt
9+
show-entities
10+
show-pages
11+
show-matches
12+
show-type
13+
>
14+
<template v-slot:title>
15+
<h2 class="font-weight-bold text-decoration-underline">
16+
{{ item.title }}
17+
</h2>
18+
</template>
19+
<template v-slot:actions>
20+
<slot name="actions"></slot>
21+
</template>
22+
</article-item>
23+
<div v-bind:key="i" v-for="(image, i) in item.images">
24+
<image-item :height="200" class="mx-3 mb-2" :item="image" :headers="headers" />
25+
<div class="ml-3 mb-3">
26+
<router-link class="btn btn-outline-secondary btn-sm" :to="getSimilarImagesHref(image)">
27+
get similar images
28+
</router-link>
29+
</div>
3330
</div>
3431
</div>
3532
</div>
3633
</div>
37-
</div>
3834
</template>
3935

4036
<script>
@@ -47,28 +43,26 @@ export default {
4743
item: Object,
4844
headers: {}
4945
},
50-
methods:{
46+
methods: {
5147
getSimilarImagesHref(image) {
5248
return `/search/images?p=1&similarTo=${image.uid}`
5349
}
5450
},
5551
components: {
5652
ArticleItem,
57-
ImageItem,
53+
ImageItem
5854
}
5955
}
6056
</script>
6157

6258
<style lang="scss">
63-
.TableOfContentsItem{
64-
h2{
59+
.TableOfContentsItem {
60+
h2 {
6561
font-size: 1.1em;
6662
}
67-
.active{
63+
.active {
6864
box-shadow: inset 0.15em 0 #343a40;
6965
background-color: #f2f2f2;
70-
71-
7266
}
7367
}
7468
</style>

0 commit comments

Comments
 (0)