Skip to content

Commit bc6478e

Browse files
authored
Merge pull request #592 from vuejs-jp/enhance/archives
show archives
2 parents 03cc409 + 576e810 commit bc6478e

File tree

11 files changed

+592
-64
lines changed

11 files changed

+592
-64
lines changed

app/assets/logo/slide_logo.svg

Lines changed: 17 additions & 0 deletions
Loading

app/components/timetable/TimetableBodyRow.vue

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<script setup lang="ts">
2+
import IconButton from '~/components/social/IconButton.vue'
23
import { useSession } from '~/composables/useSession'
34
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
45
import { Track } from '~/types/timetable'
6+
import SlideSvg from '~/assets/logo/slide_logo.svg'
7+
import YouTubeSvg from '~/assets/logo/youtube_logo.svg'
58
69
const props = defineProps<{
710
tracks: Track[]
@@ -67,6 +70,22 @@ const _nuxtLink = computed(() => resolveComponent('NuxtLink'))
6770
<div v-if="session.speaker" class="speaker">
6871
{{ session.speakerKey ? $t(session.speakerKey) : session.speaker }}
6972
</div>
73+
<div class="archives">
74+
<IconButton v-if="session.archives?.slide" :url="session.archives?.slide" title="Slide URL">
75+
<div class="slide">
76+
<SlideSvg />
77+
</div>
78+
</IconButton>
79+
<IconButton
80+
v-if="session.archives?.youtube"
81+
:url="session.archives?.youtube"
82+
title="YouTube URL"
83+
>
84+
<div class="youtube">
85+
<YouTubeSvg />
86+
</div>
87+
</IconButton>
88+
</div>
7089
</div>
7190
</td>
7291
</template>
@@ -154,5 +173,34 @@ css({
154173
borderTop: '2px solid {color.timetable.trackD}',
155174
},
156175
},
176+
'.archives': {
177+
display: 'flex',
178+
justifyContent: 'flex-end',
179+
gap: 'calc({space.8} * 1)',
180+
fontSize: 'calc(11*{fontSize.base})',
181+
fontWeight: '500',
182+
},
183+
'.slide': {
184+
width: '40px',
185+
height: '40px',
186+
'::v-deep(svg)': {
187+
fill: '{color.vue.blue}',
188+
'&:hover': {
189+
opacity: 0.6,
190+
transition: '.2s',
191+
},
192+
},
193+
},
194+
'.youtube': {
195+
width: '40px',
196+
height: '35.46px',
197+
'::v-deep(svg)': {
198+
fill: '{color.vue.blue}',
199+
'&:hover': {
200+
opacity: 0.6,
201+
transition: '.2s',
202+
},
203+
},
204+
},
157205
})
158206
</style>

app/components/timetable/TimetableBodyRowMobile.vue

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<script setup lang="ts">
2+
import IconButton from '~/components/social/IconButton.vue'
23
import { useSession } from '~/composables/useSession'
3-
import { Session } from '~/types/timetable'
44
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
5+
import { Session } from '~/types/timetable'
6+
import SlideSvg from '~/assets/logo/slide_logo.svg'
7+
import YouTubeSvg from '~/assets/logo/youtube_logo.svg'
58
69
const { locale } = useLocaleCurrent()
710
@@ -93,6 +96,22 @@ const _nuxtLink = computed(() => resolveComponent('NuxtLink'))
9396
<div v-if="session.speaker" class="speaker">
9497
{{ session.speakerKey ? $t(session.speakerKey) : session.speaker }}
9598
</div>
99+
<div class="archives">
100+
<IconButton v-if="session.archives?.slide" :url="session.archives?.slide" title="Slide URL">
101+
<div class="slide">
102+
<SlideSvg />
103+
</div>
104+
</IconButton>
105+
<IconButton
106+
v-if="session.archives?.youtube"
107+
:url="session.archives?.youtube"
108+
title="YouTube URL"
109+
>
110+
<div class="youtube">
111+
<YouTubeSvg />
112+
</div>
113+
</IconButton>
114+
</div>
96115
</div>
97116
</td>
98117
</template>
@@ -191,5 +210,34 @@ css({
191210
},
192211
},
193212
},
213+
'.archives': {
214+
display: 'flex',
215+
justifyContent: 'flex-end',
216+
gap: 'calc({space.8} * 1)',
217+
fontSize: 'calc(11*{fontSize.base})',
218+
fontWeight: '500',
219+
},
220+
'.slide': {
221+
width: '40px',
222+
height: '40px',
223+
'::v-deep(svg)': {
224+
fill: '{color.vue.blue}',
225+
'&:hover': {
226+
opacity: 0.6,
227+
transition: '.2s',
228+
},
229+
},
230+
},
231+
'.youtube': {
232+
width: '40px',
233+
height: '35.46px',
234+
'::v-deep(svg)': {
235+
fill: '{color.vue.blue}',
236+
'&:hover': {
237+
opacity: 0.6,
238+
transition: '.2s',
239+
},
240+
},
241+
},
194242
})
195243
</style>

0 commit comments

Comments
 (0)