Skip to content
This repository was archived by the owner on May 7, 2021. It is now read-only.

Commit 6f66259

Browse files
authored
Merge pull request #179 from ProgrammingLab/fukusan/image-x
ImgXコンポーネントを作ってみた
2 parents 8f1bd4f + 5e1204a commit 6f66259

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

src/components/ImgX.vue

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<template>
2+
<img :src="src ? src : require('@/assets/no_image.png')" :srcset="srcset" :alt="alt">
3+
</template>
4+
<script>
5+
export default {
6+
props: {
7+
src: {
8+
type: String,
9+
},
10+
media: {
11+
type: Array,
12+
default() {
13+
return [];
14+
},
15+
},
16+
alt: {
17+
type: String,
18+
required: true,
19+
},
20+
},
21+
computed: {
22+
srcset() {
23+
if (!this.src) return '';
24+
return this.media.map(({ pixelRatio, size }) => `${this.src}_${size} ${pixelRatio}`).join(',');
25+
},
26+
},
27+
};
28+
</script>

src/components/PublicMemberList.vue

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@
44
<ul class="member-list">
55
<li v-for="member in filteredList" :key="member.user_id">
66
<router-link :to="{ name: 'profile', params: { name: member.name }}">
7-
<img :src="member.icon_url ?
8-
`${member.icon_url}_64px` : require('@/assets/no_image.png')" alt="User Icon">
7+
<ImgX
8+
:src="member.icon_url"
9+
:media="[
10+
{pixelRatio: '1x', size: '64px'},
11+
{pixelRatio: '2x', size: '128px'},
12+
]"
13+
alt="User Icon"
14+
/>
915
<dl>
1016
<dt class="name">{{member.display_name || member.name}}</dt>
1117
<dd class="role" v-if="member.role">{{member.role.name}}</dd>
@@ -81,6 +87,7 @@ dl {
8187

8288
<script>
8389
import ErrorMessage from '@/components/ErrorMessage.vue';
90+
import ImgX from '@/components/ImgX.vue';
8491
import { mapState, mapActions, mapGetters } from 'vuex';
8592
8693
export default {
@@ -93,6 +100,7 @@ export default {
93100
},
94101
components: {
95102
ErrorMessage,
103+
ImgX,
96104
},
97105
data() {
98106
return {

0 commit comments

Comments
 (0)