mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.0 KiB
41 lines
1.0 KiB
export default class extends HTMLElement {
|
|
connectedCallback () {
|
|
this.addEventListener('scroll', this.updateFade, { passive: true })
|
|
window.addEventListener('resize', this.updateFade)
|
|
|
|
this.updateFade()
|
|
}
|
|
|
|
disconnectedCallback () {
|
|
window.removeEventListener('resize', this.updateFade)
|
|
}
|
|
|
|
updateFade = () => {
|
|
const maxScroll = this.scrollWidth - this.clientWidth
|
|
const fadeGradient = {
|
|
right: 'linear-gradient(to right, black calc(100% - 24px), transparent)',
|
|
left: 'linear-gradient(to right, transparent, black 24px)',
|
|
both: 'linear-gradient(to right, transparent, black 24px, black calc(100% - 24px), transparent)'
|
|
}
|
|
|
|
let state = 'none'
|
|
|
|
if (maxScroll > 4) {
|
|
if (this.scrollLeft <= 4) {
|
|
state = 'right'
|
|
} else if (this.scrollLeft >= maxScroll - 4) {
|
|
state = 'left'
|
|
} else {
|
|
state = 'both'
|
|
}
|
|
}
|
|
|
|
this.applyFade(fadeGradient[state] || '')
|
|
}
|
|
|
|
applyFade (gradient) {
|
|
this.style.maskImage = gradient
|
|
this.style.webkitMaskImage = gradient
|
|
}
|
|
}
|