@pushword/js-helper 0.0.105 → 0.0.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/ScrollEnhancer.js +46 -26
package/package.json
CHANGED
package/src/ScrollEnhancer.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
class ScrollYEnhancer {
|
|
6
6
|
constructor(
|
|
7
7
|
selector = '.enhance-scroll-y',
|
|
8
|
-
arrow = '<div class="scroller absolute left-[128px] z-10 -mt-[10px] h-[
|
|
8
|
+
arrow = '<div class="scroller absolute left-[128px] z-10 -mt-[10px] h-[36px] w-[36px] cursor-pointer rounded-full border border-gray-200 bg-white text-center text-3xl leading-[23px] text-gray-500 hover:text-gray-700 select-none" onclick="scrollPreviousDiv(this)">⌄</div><div class="relative z-0 -mt-8 h-8 w-full bg-gradient-to-t from-white to-transparent"></div>',
|
|
9
9
|
fadeout = '<div class="sticky left-0 -top-3 z-0 -mt-3 h-3 w-full bg-gradient-to-b from-white to-transparent"></div>',
|
|
10
10
|
) {
|
|
11
11
|
window.scrollPreviousDiv = this.scrollPreviousDiv
|
|
@@ -26,20 +26,32 @@ class ScrollYEnhancer {
|
|
|
26
26
|
|
|
27
27
|
wheelScroll(element) {
|
|
28
28
|
element.addEventListener('wheel', (evt) => {
|
|
29
|
+
if (window.isScrolling === true) return
|
|
29
30
|
evt.preventDefault()
|
|
30
|
-
|
|
31
|
+
window.isScrolling = true
|
|
32
|
+
|
|
31
33
|
const before = element.scrollTop
|
|
32
34
|
element.scrollTop += evt.deltaY
|
|
33
|
-
|
|
34
|
-
if (before ===
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
|
|
36
|
+
if (before === element.scrollTop) {
|
|
37
|
+
if (
|
|
38
|
+
(parent = element.closest('.enhance-scroll-x')) &&
|
|
39
|
+
new Date().getTime() - window.lastScrollTime > 200 &&
|
|
40
|
+
scrollX(parent.parentNode.querySelector(evt.deltaY > 0 ? '.scroll-right' : '.scroll-left'))
|
|
41
|
+
) {
|
|
42
|
+
window.lastScrollTime = new Date().getTime()
|
|
43
|
+
window.isScrolling = false
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (new Date().getTime() - window.lastScrollTime > 200) {
|
|
48
|
+
window.lastScrollTime = new Date().getTime()
|
|
49
|
+
const toScrollHeight = element.dataset.toscroll ?? 600
|
|
50
|
+
window.scrollBy({ top: evt.deltaY > 0 ? toScrollHeight : -toScrollHeight, left: 0, behavior: 'smooth' })
|
|
51
|
+
}
|
|
52
|
+
} else window.lastScrollTime = new Date().getTime()
|
|
53
|
+
window.isScrolling = false
|
|
41
54
|
})
|
|
42
|
-
return this
|
|
43
55
|
}
|
|
44
56
|
|
|
45
57
|
enhanceScrollY(element) {
|
|
@@ -64,13 +76,13 @@ class ScrollYEnhancer {
|
|
|
64
76
|
if (scroller.textContent === '⌄' || isAtMaxScroll) {
|
|
65
77
|
if (isAtMaxScroll) {
|
|
66
78
|
scroller.textContent = '⌃'
|
|
67
|
-
scroller.classList.add('pt-[
|
|
79
|
+
scroller.classList.add('pt-[12px]')
|
|
68
80
|
scroller.classList.add('text-gray-200')
|
|
69
81
|
}
|
|
70
82
|
return
|
|
71
83
|
} else {
|
|
72
84
|
scroller.textContent = '⌄'
|
|
73
|
-
scroller.classList.remove('pt-[
|
|
85
|
+
scroller.classList.remove('pt-[12px]')
|
|
74
86
|
scroller.classList.remove('text-gray-200')
|
|
75
87
|
}
|
|
76
88
|
}
|
|
@@ -110,8 +122,8 @@ class ScrollYEnhancer {
|
|
|
110
122
|
class ScrollXEnhancer {
|
|
111
123
|
constructor(
|
|
112
124
|
selector = '.enhance-scroll-x',
|
|
113
|
-
arrowRight = '<div class="scroll-right relative left-[calc(100vw-62px)] -mt-[
|
|
114
|
-
arrowLeft = '<div class="scroll-left relative left-[22px] top-1/3 z-20 h-[
|
|
125
|
+
arrowRight = '<div class="scroll-right relative left-[calc(100vw-62px)] -mt-[36px] top-1/3 z-20 h-[36px] w-[36px] cursor-pointer select-none rounded-full border border-gray-200 bg-white text-center text-3xl leading-none text-gray-500 hover:text-gray-700" onclick="scrollX(this)">›</div>',
|
|
126
|
+
arrowLeft = '<div class="scroll-left relative left-[22px] top-1/3 z-20 h-[36px] w-[36px] cursor-pointer select-none rounded-full border border-gray-200 bg-white text-center text-3xl leading-none text-gray-500 hover:text-gray-700" onclick="scrollX(this)">‹</div>',
|
|
115
127
|
) {
|
|
116
128
|
window.scrollLeft = this.scrollLeft
|
|
117
129
|
window.scrollX = this.scrollX
|
|
@@ -132,20 +144,26 @@ class ScrollXEnhancer {
|
|
|
132
144
|
|
|
133
145
|
wheelScroll(element) {
|
|
134
146
|
element.addEventListener('wheel', (evt) => {
|
|
135
|
-
evt.preventDefault()
|
|
136
|
-
if (evt.target.closest('.enhance-scroll-y')) return
|
|
137
147
|
if (window.isScrolling === true) return
|
|
138
|
-
|
|
148
|
+
evt.preventDefault()
|
|
149
|
+
window.isScrolling = true
|
|
150
|
+
|
|
151
|
+
if (evt.target.closest('.enhance-scroll-y')) {
|
|
152
|
+
window.isScrolling = false
|
|
153
|
+
return
|
|
154
|
+
}
|
|
155
|
+
|
|
139
156
|
const before = element.scrollLeft
|
|
140
157
|
element.scrollLeft += evt.deltaY
|
|
141
|
-
|
|
142
|
-
if (before ===
|
|
143
|
-
window.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
158
|
+
|
|
159
|
+
if (before === element.scrollLeft) {
|
|
160
|
+
if (new Date().getTime() - window.lastScrollTime > 200) {
|
|
161
|
+
window.lastScrollTime = new Date().getTime()
|
|
162
|
+
const toScrollHeight = element.dataset.toscroll ?? 600
|
|
163
|
+
window.scrollBy({ top: evt.deltaY > 0 ? toScrollHeight : -toScrollHeight, left: 0, behavior: 'smooth' })
|
|
164
|
+
}
|
|
165
|
+
} else window.lastScrollTime = new Date().getTime()
|
|
166
|
+
window.isScrolling = false
|
|
149
167
|
})
|
|
150
168
|
}
|
|
151
169
|
|
|
@@ -165,7 +183,9 @@ class ScrollXEnhancer {
|
|
|
165
183
|
|
|
166
184
|
const nextElementToScroll = element.children[3] // work only with equal width block
|
|
167
185
|
const toScrollWidth = nextElementToScroll.offsetWidth + parseInt(window.getComputedStyle(nextElementToScroll).marginLeft)
|
|
186
|
+
const before = element.scrollLeft
|
|
168
187
|
element.scrollLeft += scrollToRight ? toScrollWidth : -toScrollWidth
|
|
188
|
+
return before !== element.scrollLeft
|
|
169
189
|
}
|
|
170
190
|
|
|
171
191
|
manageScrollXControllerVisibility(element) {
|