From 3bb95734f3b1b8977420b140fd0a0faf53e1f149 Mon Sep 17 00:00:00 2001 From: Oleg Moskalev Date: Thu, 3 Oct 2019 14:21:45 +0300 Subject: [PATCH 1/4] Update component on window.resize event --- src/components/VueScrollProgressBar.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/VueScrollProgressBar.vue b/src/components/VueScrollProgressBar.vue index 2f020b0..89cb08f 100644 --- a/src/components/VueScrollProgressBar.vue +++ b/src/components/VueScrollProgressBar.vue @@ -80,11 +80,13 @@ export default { }, mounted() { + window.addEventListener("resize", this.handleScroll) window.addEventListener("scroll", this.handleScroll) window.dispatchEvent(new Event("scroll")) }, destroyed() { + window.addEventListener("resize", this.handleScroll) window.removeEventListener("scroll", this.handleScroll) } } From dfb089d8a13994bbe82b928c29f4ff18c1228821 Mon Sep 17 00:00:00 2001 From: Oleg Moskalev Date: Thu, 3 Oct 2019 15:13:07 +0300 Subject: [PATCH 2/4] implement onClick component prop --- README.md | 6 ++++++ src/components/VueScrollProgressBar.vue | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/README.md b/README.md index 0b0e2b5..ce17f7a 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,12 @@ With : `containerClass` must be used to override the `.progress-bar-container--container` default class. You can use the default `:class` syntax on the component to add classes if needed. +## Methods + +| key | description | type |function property| +|:--------|-------------------------|--------|-----------------| +|`onClick`|When clicked on scrollbar|Function| event object | + ## Events |key|description| diff --git a/src/components/VueScrollProgressBar.vue b/src/components/VueScrollProgressBar.vue index 2f020b0..eb027e4 100644 --- a/src/components/VueScrollProgressBar.vue +++ b/src/components/VueScrollProgressBar.vue @@ -5,6 +5,7 @@ background: containerColor, zIndex: zIndex }" + @click="onClick($event)" >
{} } }, From 596de96b935826517075f17c0796dc3d90c7ac05 Mon Sep 17 00:00:00 2001 From: Oleg Moskalev Date: Thu, 3 Oct 2019 16:16:24 +0300 Subject: [PATCH 3/4] implement update event --- src/components/VueScrollProgressBar.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/VueScrollProgressBar.vue b/src/components/VueScrollProgressBar.vue index 2f020b0..d61a627 100644 --- a/src/components/VueScrollProgressBar.vue +++ b/src/components/VueScrollProgressBar.vue @@ -69,6 +69,10 @@ export default { this.width = (window.scrollY / height) * 100 const eventWidth = Math.ceil(this.width) + if (this.emitUpdate) { + this.$emit("update", eventWidth) + } + if (eventWidth === 0) { this.$emit("begin") } @@ -79,6 +83,12 @@ export default { } }, + computed: { + emitUpdate () { + return Object.keys(this.$listeners).includes('update') + } + }, + mounted() { window.addEventListener("scroll", this.handleScroll) window.dispatchEvent(new Event("scroll")) From 957518aba53d122c6b7c8c157305237d5f1d61d9 Mon Sep 17 00:00:00 2001 From: Oleg Moskalev Date: Thu, 3 Oct 2019 16:23:32 +0300 Subject: [PATCH 4/4] update readme --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0b0e2b5..35ea2ee 100644 --- a/README.md +++ b/README.md @@ -73,10 +73,11 @@ With : ## Events -|key|description| -|:---|---| -| `begin`|When scroll reached 0%| -|`complete`|When scroll reached 100%| +| key | event condition | return value | +|:---------|---------------------|-------------------------| +| `begin` | Scroll reached 0% | – | +|`complete`| Scroll reached 100% | – | +|`update` | Every scroll event | Scroll position (0-100) | ## Develop