|
@@ -1,13 +1,18 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="slide-thumbnails">
|
|
<div class="slide-thumbnails">
|
|
|
- <div
|
|
|
|
|
- class="thumbnail"
|
|
|
|
|
- :class="{ 'active': index === slideIndex }"
|
|
|
|
|
- v-for="(slide, index) in slides"
|
|
|
|
|
- :key="slide.id"
|
|
|
|
|
- @click="turnSlideToIndex(index)"
|
|
|
|
|
- >
|
|
|
|
|
- <ThumbnailSlide :slide="slide" :size="150" />
|
|
|
|
|
|
|
+ <div class="return-button">
|
|
|
|
|
+ <IconArrowCircleLeft class="icon" @click="close()" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="slide-thumbnails-content">
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="thumbnail"
|
|
|
|
|
+ :class="{ 'active': index === slideIndex }"
|
|
|
|
|
+ v-for="(slide, index) in slides"
|
|
|
|
|
+ :key="slide.id"
|
|
|
|
|
+ @click="turnSlideToIndex(index)"
|
|
|
|
|
+ >
|
|
|
|
|
+ <ThumbnailSlide :slide="slide" :size="150" />
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
@@ -28,14 +33,17 @@ export default defineComponent({
|
|
|
type: Function as PropType<(index: number) => void>,
|
|
type: Function as PropType<(index: number) => void>,
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
- setup() {
|
|
|
|
|
|
|
+ setup(props, { emit }) {
|
|
|
const store = useStore()
|
|
const store = useStore()
|
|
|
const slides = computed(() => store.state.slides)
|
|
const slides = computed(() => store.state.slides)
|
|
|
const slideIndex = computed(() => store.state.slideIndex)
|
|
const slideIndex = computed(() => store.state.slideIndex)
|
|
|
|
|
|
|
|
|
|
+ const close = () => emit('close')
|
|
|
|
|
+
|
|
|
return {
|
|
return {
|
|
|
slides,
|
|
slides,
|
|
|
slideIndex,
|
|
slideIndex,
|
|
|
|
|
+ close,
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
})
|
|
})
|
|
@@ -43,8 +51,31 @@ export default defineComponent({
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
.slide-thumbnails {
|
|
.slide-thumbnails {
|
|
|
- height: 600px;
|
|
|
|
|
- padding: 5px 10px;
|
|
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ background-color: #1a1a1a;
|
|
|
|
|
+ z-index: 99;
|
|
|
|
|
+}
|
|
|
|
|
+.return-button {
|
|
|
|
|
+ height: 60px;
|
|
|
|
|
+ padding: 20px 30px 0;
|
|
|
|
|
+
|
|
|
|
|
+ .icon {
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 36px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: $themeColor;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+.slide-thumbnails-content {
|
|
|
|
|
+ height: calc(100% - 100px);
|
|
|
|
|
+ padding: 20px 30px 30px 30px;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
|
align-content: flex-start;
|
|
align-content: flex-start;
|
|
@@ -52,15 +83,17 @@ export default defineComponent({
|
|
|
|
|
|
|
|
.thumbnail {
|
|
.thumbnail {
|
|
|
width: 150px;
|
|
width: 150px;
|
|
|
|
|
+ outline: 2px solid #aaa;
|
|
|
|
|
+ margin-right: 12px;
|
|
|
margin-bottom: 12px;
|
|
margin-bottom: 12px;
|
|
|
- outline: 1px solid rgba($color: $themeColor, $alpha: .1);
|
|
|
|
|
|
|
|
|
|
- &.active {
|
|
|
|
|
|
|
+ &:hover {
|
|
|
outline-color: $themeColor;
|
|
outline-color: $themeColor;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- &:not(:nth-child(6n)) {
|
|
|
|
|
- margin-right: 12px;
|
|
|
|
|
|
|
+ &.active {
|
|
|
|
|
+ outline-width: 3px;
|
|
|
|
|
+ outline-color: $themeColor;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|