diff --git a/src/main/resources/META-INF/resources/frontend/paper-slider/l2t-paper-slider.js b/src/main/resources/META-INF/resources/frontend/paper-slider/l2t-paper-slider.js index 68bf80c..88de0c2 100644 --- a/src/main/resources/META-INF/resources/frontend/paper-slider/l2t-paper-slider.js +++ b/src/main/resources/META-INF/resources/frontend/paper-slider/l2t-paper-slider.js @@ -372,10 +372,12 @@ Polymer$0({ _ariaChecked: function () { var dotElems = this.$.container.querySelectorAll('.slider__dot'); if (dotElems.length > 0) { - for (var i = 0; i < this.totalSlides; i++) { + for (var i = 0; i < dotElems.length; i++) { dotElems[i].setAttribute("aria-checked", "false"); }; - dotElems[this.position].setAttribute("aria-checked", "true"); + if (this.position < dotElems.length) { + dotElems[this.position].setAttribute("aria-checked", "true"); + } } }, @@ -478,13 +480,17 @@ Polymer$0({ _moveManual: function () { var this$ = this; var dotElems = this.$.container.querySelectorAll('.slider__dot'), i; - for (i = 0; i < this.totalSlides; ++i) { + for (i = 0; i < dotElems.length; ++i) { dotElems[i].setAttribute("aria-label", "Slide " + parseInt(dotElems[i].getAttribute('aria-posinset')) + " selector"); - dotElems[i].addEventListener('click', function (e) { - this$.movePos(e.target.getAttribute('aria-posinset') - 1); - }); }; - if (this.totalSlides) { + if (!this._dotClickListener) { + this._dotClickListener = function (e) { + const dot = e.target.closest('.slider__dot'); + if (dot) this$.movePos(Number.parseInt(dot.getAttribute('aria-posinset'), 10) - 1); + }; + this.$.container.addEventListener('click', this._dotClickListener); + } + if (dotElems.length) { this._dotStyles = window.getComputedStyle(dotElems[0]); } }, @@ -540,14 +546,13 @@ Polymer$0({ */ _spaceCatcher: function (e) { e.preventDefault(); - if (this.shadowRoot != null) { - var nextPos = this.shadowRoot.activeElement.getAttribute('aria-posinset'); + const activeEl = this.shadowRoot && this.shadowRoot.activeElement; + if (activeEl) { + const nextPos = activeEl.getAttribute('aria-posinset'); + if (nextPos) this.movePos(Number.parseInt(nextPos, 10) - 1); } else { - var nextPos = document.activeElement.getAttribute('aria-posinset'); + this.movePos((this.position + 1) % this.totalSlides); } - if (!nextPos) - return; - this.movePos(parseInt(nextPos) - 1); }, /** @@ -657,6 +662,10 @@ Polymer$0({ detached: function() { this.autoProgress = false; removeListener(this.$.container, 'track', e => this._swipeHandler(e)); + if (this._dotClickListener) { + this.$.container.removeEventListener('click', this._dotClickListener); + this._dotClickListener = null; + } }, _increment: function(n) {