import {ScopedElementsMixin} from '@open-wc/scoped-elements'; import DBPLitElement from '../../common/dbp-lit-element'; export default class DbpFileHandlingLitElement extends ScopedElementsMixin(DBPLitElement) { constructor() { super(); } static get properties() { return { ...super.properties, }; } /** * Handles the scroll of the current element and displays the right and/or the left paddle * to match the scrolling position * * @param e */ handleScroll(e) { if (!this._('.right-paddle') || !this._('.left-paddle')) return; let horizontal = e.currentTarget.scrollLeft; let scrollWidth = e.currentTarget.scrollWidth - e.currentTarget.clientWidth; //e.currentTarget.scrollLeftMax isn't support except firefox if (horizontal > 0) { this._('.left-paddle').classList.remove('hidden'); } if (horizontal < scrollWidth) { this._('.right-paddle').classList.remove('hidden'); } if (horizontal >= scrollWidth) { this._('.right-paddle').classList.add('hidden'); } if (horizontal <= 0) { this._('.left-paddle').classList.add('hidden'); } } /** * Scrolls smooth to the maximum right of an given element * * @param element */ handleScrollRight(element) { const maxwidth = element.scrollWidth - element.clientWidth; let container = element; let scrollAmount = 0; let slideTimer = setInterval(function () { container.scrollLeft += 10; scrollAmount += 10; if (scrollAmount >= maxwidth) { window.clearInterval(slideTimer); } }, 25); } /** * Scrolls smooth to the min left of an given element * * @param element */ handleScrollLeft(element) { const minwidth = 0; let container = element; let scrollAmount = element.scrollWidth - element.clientWidth; let slideTimer = setInterval(function () { container.scrollLeft -= 10; scrollAmount -= 10; if (scrollAmount <= minwidth) { window.clearInterval(slideTimer); } }, 25); } }