diff options
| author | GeoSot <[email protected]> | 2021-09-10 13:24:15 +0300 |
|---|---|---|
| committer | GeoSot <[email protected]> | 2021-09-10 13:27:26 +0300 |
| commit | 63b4db14aa82bcf14922cf3d7af5929fccd3ace0 (patch) | |
| tree | 3abef43a79045bc6a102a1d4d55a90ea63a8e916 /js | |
| parent | a172f8fc54127d8a9089067744bb5e839ee32d5a (diff) | |
| download | bootstrap-gs-carousel-cleanup.tar.xz bootstrap-gs-carousel-cleanup.zip | |
transfer some code blocks, to where we use themgs-carousel-cleanup
Diffstat (limited to 'js')
| -rw-r--r-- | js/src/carousel.js | 44 | ||||
| -rw-r--r-- | js/tests/unit/carousel.spec.js | 16 |
2 files changed, 25 insertions, 35 deletions
diff --git a/js/src/carousel.js b/js/src/carousel.js index 027882db8..fb7f6d615 100644 --- a/js/src/carousel.js +++ b/js/src/carousel.js @@ -335,17 +335,6 @@ class Carousel extends BaseComponent { return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap) } - _triggerSlideEvent(relatedTarget, fromIndex, eventDirectionName) { - const targetIndex = this._getItemIndex(relatedTarget) - - return EventHandler.trigger(this._element, EVENT_SLIDE, { - relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }) - } - _setActiveIndicatorElement(index) { if (!this._indicatorsElement) { return @@ -378,17 +367,13 @@ class Carousel extends BaseComponent { _slide(directionOrOrder, element) { const order = this._directionToOrder(directionOrOrder) + const activeElement = this._getActive() const activeElementIndex = this._getItemIndex(activeElement) - const nextElement = element || this._getItemByOrder(order, activeElement) + const nextElement = element || this._getItemByOrder(order, activeElement) const nextElementIndex = this._getItemIndex(nextElement) - const isNext = order === ORDER_NEXT - const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END - const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV - const eventDirectionName = this._orderToDirection(order) - if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) { this._isSliding = false return @@ -398,7 +383,17 @@ class Carousel extends BaseComponent { return } - const slideEvent = this._triggerSlideEvent(nextElement, activeElementIndex, eventDirectionName) + const triggerEvent = eventName => { + return EventHandler.trigger(this._element, eventName, { + relatedTarget: nextElement, + direction: this._orderToDirection(order), + from: activeElementIndex, + to: nextElementIndex + }) + } + + const slideEvent = triggerEvent(EVENT_SLIDE) + if (slideEvent.defaultPrevented) { return } @@ -415,14 +410,9 @@ class Carousel extends BaseComponent { this._setActiveIndicatorElement(nextElementIndex) this._activeElement = nextElement - const triggerSlidEvent = () => { - EventHandler.trigger(this._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }) - } + const isNext = order === ORDER_NEXT + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV nextElement.classList.add(orderClassName) @@ -439,7 +429,7 @@ class Carousel extends BaseComponent { this._isSliding = false - setTimeout(triggerSlidEvent, 0) + triggerEvent(EVENT_SLID) } this._queueCallback(completeCallBack, activeElement, this._isAnimated()) diff --git a/js/tests/unit/carousel.spec.js b/js/tests/unit/carousel.spec.js index 378bcd0f3..14ca445c5 100644 --- a/js/tests/unit/carousel.spec.js +++ b/js/tests/unit/carousel.spec.js @@ -209,7 +209,7 @@ describe('Carousel', () => { const carouselEl = fixtureEl.querySelector('div') const carousel = new Carousel(carouselEl, {}) - spyOn(carousel, '_triggerSlideEvent') + spyOn(EventHandler, 'trigger') carousel._isSliding = true; @@ -220,7 +220,7 @@ describe('Carousel', () => { carouselEl.dispatchEvent(keydown) }) - expect(carousel._triggerSlideEvent).not.toHaveBeenCalled() + expect(EventHandler.trigger).not.toHaveBeenCalled() }) it('should wrap around from end to start when wrap option is true', done => { @@ -529,7 +529,7 @@ describe('Carousel', () => { const carousel = new Carousel(carouselEl) carousel._isSliding = true - spyOn(carousel, '_triggerSlideEvent') + spyOn(EventHandler, 'trigger') Simulator.gestures.swipe(carouselEl, { deltaX: 300, @@ -543,7 +543,7 @@ describe('Carousel', () => { }) setTimeout(() => { - expect(carousel._triggerSlideEvent).not.toHaveBeenCalled() + expect(EventHandler.trigger).not.toHaveBeenCalled() delete document.documentElement.ontouchstart restorePointerEvents() done() @@ -615,12 +615,12 @@ describe('Carousel', () => { const carouselEl = fixtureEl.querySelector('div') const carousel = new Carousel(carouselEl, {}) - spyOn(carousel, '_triggerSlideEvent') + spyOn(EventHandler, 'trigger') carousel._isSliding = true carousel.next() - expect(carousel._triggerSlideEvent).not.toHaveBeenCalled() + expect(EventHandler.trigger).not.toHaveBeenCalled() }) it('should not fire slid when slide is prevented', done => { @@ -826,12 +826,12 @@ describe('Carousel', () => { const carouselEl = fixtureEl.querySelector('div') const carousel = new Carousel(carouselEl, {}) - spyOn(carousel, '_triggerSlideEvent') + spyOn(EventHandler, 'trigger') carousel._isSliding = true carousel.prev() - expect(carousel._triggerSlideEvent).not.toHaveBeenCalled() + expect(EventHandler.trigger).not.toHaveBeenCalled() }) }) |
