From 5896373979efcbdaab9d0b9ffe27840a3807d0f3 Mon Sep 17 00:00:00 2001 From: dChiamp Date: Tue, 4 Aug 2020 13:38:27 -0700 Subject: [PATCH 1/2] adds basic component --- src/assets/svgs/icon-arrow.svg | 3 + .../SlideshowWork/SlideshowWork.stories.js | 16 ++ .../SlideshowWork/SlideshowWork.vue | 137 ++++++++++++ src/components/global/Slideshow.vue | 204 ++++++++++++++++++ 4 files changed, 360 insertions(+) create mode 100644 src/assets/svgs/icon-arrow.svg create mode 100644 src/components/SlideshowWork/SlideshowWork.stories.js create mode 100644 src/components/SlideshowWork/SlideshowWork.vue create mode 100644 src/components/global/Slideshow.vue diff --git a/src/assets/svgs/icon-arrow.svg b/src/assets/svgs/icon-arrow.svg new file mode 100644 index 0000000..fab27ee --- /dev/null +++ b/src/assets/svgs/icon-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/SlideshowWork/SlideshowWork.stories.js b/src/components/SlideshowWork/SlideshowWork.stories.js new file mode 100644 index 0000000..581693e --- /dev/null +++ b/src/components/SlideshowWork/SlideshowWork.stories.js @@ -0,0 +1,16 @@ +import SlideshowWork from "./SlideshowWork" +import API from "@/static/db.json" + +export default { + title: "@dchiamp / SlideshowWork" +} + +export const Default = () => ({ + components: { SlideshowWork }, + data() { + return { + images: API.images + } + }, + template: `` +}) diff --git a/src/components/SlideshowWork/SlideshowWork.vue b/src/components/SlideshowWork/SlideshowWork.vue new file mode 100644 index 0000000..a20acf5 --- /dev/null +++ b/src/components/SlideshowWork/SlideshowWork.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/components/global/Slideshow.vue b/src/components/global/Slideshow.vue new file mode 100644 index 0000000..6a99bcd --- /dev/null +++ b/src/components/global/Slideshow.vue @@ -0,0 +1,204 @@ + + + + + From 8a1ccf730daa0b3440bf5fecae90b2152adb23ea Mon Sep 17 00:00:00 2001 From: dChiamp Date: Tue, 4 Aug 2020 16:03:51 -0700 Subject: [PATCH 2/2] adds responsive styles --- .../SlideshowWork/SlideshowWork.vue | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/src/components/SlideshowWork/SlideshowWork.vue b/src/components/SlideshowWork/SlideshowWork.vue index a20acf5..7c02954 100644 --- a/src/components/SlideshowWork/SlideshowWork.vue +++ b/src/components/SlideshowWork/SlideshowWork.vue @@ -3,7 +3,7 @@ ref="slideshow" class="slideshow-work" :slides="images" - next-transition-name="fade" + :swipe-events="true" @update:activeIndex="updateIndex" > @@ -62,8 +63,6 @@ export default { .slideshow-work { min-height: 300px; height: var(--unit-100vh); - padding: 50px; - box-sizing: border-box; /deep/ .nav { position: absolute; @@ -77,35 +76,42 @@ export default { } &.prev { - left: 40px; + left: 30px; } &.next { - right: 40px; + right: 30px; svg { transform: rotate(180deg); } } - svg path { - fill: var(--color-grey); - transition: fill 0.4s ease-in-out; + svg { + width: 30px; + height: auto; + path { + fill: var(--color-grey); + transition: fill 0.4s ease-in-out; + } } } - /deep/ .slide .slide-image { - top: 50%; - left: 50%; - padding: 100px; - box-sizing: border-box; - transform: translate(-50%, -50%); + /deep/ .slide { + width: unset; + height: unset; + top: 100px; + left: 100px; + right: 100px; + bottom: 100px; } .dots { position: absolute; - bottom: 90px; + bottom: 70px; left: 50%; z-index: 100; transform: translateX(-50%); + width: 100%; + text-align: center; .dot { display: inline-block; @@ -130,7 +136,17 @@ export default { fill: var(--color-orange); } .dot:hover { - background-color: var(--color-orange); + opacity: 1; + } + } + // Breakpoints + @media #{$lt-phone} { + /deep/ .slide { + left: 20px; + right: 20px; + } + /deep/ .nav { + display: none; } } }