From 0ebf7d9a0373dac9f4db2adf2437a1959e74750d Mon Sep 17 00:00:00 2001 From: cadiyak Date: Sat, 27 Aug 2022 15:41:36 +0200 Subject: [PATCH 1/3] feat: start to implement carousel. --- .../CarouselAutomaticSlideExample.vue | 8 ++ .../examples/CarouselDefaultExample.vue | 8 ++ .../examples/CarouselNoControlsExample.vue | 8 ++ .../examples/CarouselNoIndicatorsExample.vue | 8 ++ .../examples/CarouselPicturesExample.vue | 30 ++++++ .../examples/CarouselSlideExample.vue | 8 ++ .../examples/CarouselSlideIntervalExample.vue | 8 ++ src/components/Carousel/Carousel.vue | 94 ++++++++++++++----- 8 files changed, 149 insertions(+), 23 deletions(-) create mode 100644 docs/components/carousel/examples/CarouselAutomaticSlideExample.vue create mode 100644 docs/components/carousel/examples/CarouselDefaultExample.vue create mode 100644 docs/components/carousel/examples/CarouselNoControlsExample.vue create mode 100644 docs/components/carousel/examples/CarouselNoIndicatorsExample.vue create mode 100644 docs/components/carousel/examples/CarouselPicturesExample.vue create mode 100644 docs/components/carousel/examples/CarouselSlideExample.vue create mode 100644 docs/components/carousel/examples/CarouselSlideIntervalExample.vue diff --git a/docs/components/carousel/examples/CarouselAutomaticSlideExample.vue b/docs/components/carousel/examples/CarouselAutomaticSlideExample.vue new file mode 100644 index 0000000..408e9ad --- /dev/null +++ b/docs/components/carousel/examples/CarouselAutomaticSlideExample.vue @@ -0,0 +1,8 @@ + + diff --git a/docs/components/carousel/examples/CarouselDefaultExample.vue b/docs/components/carousel/examples/CarouselDefaultExample.vue new file mode 100644 index 0000000..8cab2e4 --- /dev/null +++ b/docs/components/carousel/examples/CarouselDefaultExample.vue @@ -0,0 +1,8 @@ + + diff --git a/docs/components/carousel/examples/CarouselNoControlsExample.vue b/docs/components/carousel/examples/CarouselNoControlsExample.vue new file mode 100644 index 0000000..b3c747d --- /dev/null +++ b/docs/components/carousel/examples/CarouselNoControlsExample.vue @@ -0,0 +1,8 @@ + + diff --git a/docs/components/carousel/examples/CarouselNoIndicatorsExample.vue b/docs/components/carousel/examples/CarouselNoIndicatorsExample.vue new file mode 100644 index 0000000..b5b62f8 --- /dev/null +++ b/docs/components/carousel/examples/CarouselNoIndicatorsExample.vue @@ -0,0 +1,8 @@ + + diff --git a/docs/components/carousel/examples/CarouselPicturesExample.vue b/docs/components/carousel/examples/CarouselPicturesExample.vue new file mode 100644 index 0000000..cf2dfac --- /dev/null +++ b/docs/components/carousel/examples/CarouselPicturesExample.vue @@ -0,0 +1,30 @@ + + diff --git a/docs/components/carousel/examples/CarouselSlideExample.vue b/docs/components/carousel/examples/CarouselSlideExample.vue new file mode 100644 index 0000000..408e9ad --- /dev/null +++ b/docs/components/carousel/examples/CarouselSlideExample.vue @@ -0,0 +1,8 @@ + + diff --git a/docs/components/carousel/examples/CarouselSlideIntervalExample.vue b/docs/components/carousel/examples/CarouselSlideIntervalExample.vue new file mode 100644 index 0000000..7988190 --- /dev/null +++ b/docs/components/carousel/examples/CarouselSlideIntervalExample.vue @@ -0,0 +1,8 @@ + + diff --git a/src/components/Carousel/Carousel.vue b/src/components/Carousel/Carousel.vue index 52e4588..7045730 100644 --- a/src/components/Carousel/Carousel.vue +++ b/src/components/Carousel/Carousel.vue @@ -1,35 +1,26 @@ From 62edbd74ff1a1f0ee7695b73fe1c21ba5310ac1f Mon Sep 17 00:00:00 2001 From: cadiyak Date: Sat, 27 Aug 2022 15:42:09 +0200 Subject: [PATCH 2/3] doc: update carousel's doc. --- docs/components/carousel/carousel.md | 158 ++++++++++++++++++++++++++- 1 file changed, 156 insertions(+), 2 deletions(-) diff --git a/docs/components/carousel/carousel.md b/docs/components/carousel/carousel.md index 5e41553..75dcd56 100644 --- a/docs/components/carousel/carousel.md +++ b/docs/components/carousel/carousel.md @@ -1,8 +1,17 @@ # Carousel +Use the carousel component to slide through multiple elements and images using custom controls, indicators, intervals, and options + +## Default slider + ```vue + +``` +## Prop - indicators + +```typescript +const props = defineProps({ + indicators: { + type: Boolean, + default: true, + }, +}) +``` + + + +```vue + + +``` + +## Prop - slide + +```typescript +const props = defineProps({ + slide: { + type: Boolean, + default: false, + }, +}) +``` + + + +```vue + + +``` + +## Prop - slide interval + +```typescript +const props = defineProps({ + slideInterval: { + type: Number, + default: 3000, + }, +}) +``` + + + +```vue + + +``` + +## Prop - pictures + +```typescript +const props = defineProps({ + pictures: { + type: Array, + default() { + return [ + { + 'src': 'https://flowbite.com/docs/images/carousel/carousel-1.svg', + 'alt': 'Picture 1', + }, + { + 'src': 'https://flowbite.com/docs/images/carousel/carousel-2.svg', + 'alt': 'Picture 2', + }, + { + 'src': 'https://flowbite.com/docs/images/carousel/carousel-3.svg', + 'alt': 'Picture 3', + }, + ] + }, + }, +}) +``` + + + +```vue + + +``` \ No newline at end of file From 568641fb43b8a4d2c17da4ceb7534e5a598f9b3d Mon Sep 17 00:00:00 2001 From: cadiyak Date: Sat, 27 Aug 2022 16:43:53 +0200 Subject: [PATCH 3/3] feat: reset carousel slide timeout when controls or indicators clicked --- src/components/Carousel/Carousel.vue | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/Carousel/Carousel.vue b/src/components/Carousel/Carousel.vue index 7045730..1da32dd 100644 --- a/src/components/Carousel/Carousel.vue +++ b/src/components/Carousel/Carousel.vue @@ -75,15 +75,22 @@ const props = defineProps({ const currentPicture = ref(0) const direction = ref('') +const interval = ref() const automaticSlide = () => { - setInterval(function() { + interval.value = setInterval(function() { nextPicture() }, props.slideInterval) } +const resetInterval = () => { + clearInterval(interval.value) + automaticSlide() +} + const slideTo = (index: number) => { currentPicture.value = index + resetInterval() } const nextPicture = () => { @@ -93,6 +100,7 @@ const nextPicture = () => { currentPicture.value = 0 } direction.value = 'right' + resetInterval() } const previousPicture = () => { @@ -102,6 +110,7 @@ const previousPicture = () => { currentPicture.value = props.pictures.length -1 } direction.value = 'left' + resetInterval() } onMounted(() => {