Skip to content

Commit a814249

Browse files
GeoSotXhmikosR
authored andcommitted
Carousel: reorder variables and refactor method to use it inline
1 parent e77ae50 commit a814249

File tree

2 files changed

+27
-33
lines changed

2 files changed

+27
-33
lines changed

js/src/carousel.js

+19-25
Original file line numberDiff line numberDiff line change
@@ -277,17 +277,6 @@ class Carousel extends BaseComponent {
277277
return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)
278278
}
279279

280-
_triggerSlideEvent(relatedTarget, fromIndex, eventDirectionName) {
281-
const targetIndex = this._getItemIndex(relatedTarget)
282-
283-
return EventHandler.trigger(this._element, EVENT_SLIDE, {
284-
relatedTarget,
285-
direction: eventDirectionName,
286-
from: fromIndex,
287-
to: targetIndex
288-
})
289-
}
290-
291280
_setActiveIndicatorElement(index) {
292281
if (!this._indicatorsElement) {
293282
return
@@ -320,17 +309,12 @@ class Carousel extends BaseComponent {
320309

321310
_slide(directionOrOrder, element) {
322311
const order = this._directionToOrder(directionOrOrder)
312+
323313
const activeElement = this._getActive()
324314
const activeElementIndex = this._getItemIndex(activeElement)
325-
const nextElement = element || this._getItemByOrder(order, activeElement)
326315

316+
const nextElement = element || this._getItemByOrder(order, activeElement)
327317
const nextElementIndex = this._getItemIndex(nextElement)
328-
const isCycling = Boolean(this._interval)
329-
330-
const isNext = order === ORDER_NEXT
331-
const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END
332-
const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV
333-
const eventDirectionName = this._orderToDirection(order)
334318

335319
if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {
336320
this._isSliding = false
@@ -341,7 +325,17 @@ class Carousel extends BaseComponent {
341325
return
342326
}
343327

344-
const slideEvent = this._triggerSlideEvent(nextElement, activeElementIndex, eventDirectionName)
328+
const triggerEvent = eventName => {
329+
return EventHandler.trigger(this._element, eventName, {
330+
relatedTarget: nextElement,
331+
direction: this._orderToDirection(order),
332+
from: activeElementIndex,
333+
to: nextElementIndex
334+
})
335+
}
336+
337+
const slideEvent = triggerEvent(EVENT_SLIDE)
338+
345339
if (slideEvent.defaultPrevented) {
346340
return
347341
}
@@ -353,13 +347,18 @@ class Carousel extends BaseComponent {
353347

354348
this._isSliding = true
355349

350+
const isCycling = Boolean(this._interval)
356351
if (isCycling) {
357352
this.pause()
358353
}
359354

360355
this._setActiveIndicatorElement(nextElementIndex)
361356
this._activeElement = nextElement
362357

358+
const isNext = order === ORDER_NEXT
359+
const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END
360+
const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV
361+
363362
nextElement.classList.add(orderClassName)
364363

365364
reflow(nextElement)
@@ -375,12 +374,7 @@ class Carousel extends BaseComponent {
375374

376375
this._isSliding = false
377376

378-
EventHandler.trigger(this._element, EVENT_SLID, {
379-
relatedTarget: nextElement,
380-
direction: eventDirectionName,
381-
from: activeElementIndex,
382-
to: nextElementIndex
383-
})
377+
triggerEvent(EVENT_SLID)
384378
}
385379

386380
this._queueCallback(completeCallBack, activeElement, this._isAnimated())

js/tests/unit/carousel.spec.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ describe('Carousel', () => {
214214
const carouselEl = fixtureEl.querySelector('div')
215215
const carousel = new Carousel(carouselEl, {})
216216

217-
spyOn(carousel, '_triggerSlideEvent')
217+
spyOn(EventHandler, 'trigger')
218218

219219
carousel._isSliding = true
220220

@@ -225,7 +225,7 @@ describe('Carousel', () => {
225225
carouselEl.dispatchEvent(keydown)
226226
}
227227

228-
expect(carousel._triggerSlideEvent).not.toHaveBeenCalled()
228+
expect(EventHandler.trigger).not.toHaveBeenCalled()
229229
})
230230

231231
it('should wrap around from end to start when wrap option is true', () => {
@@ -546,7 +546,7 @@ describe('Carousel', () => {
546546
const carousel = new Carousel(carouselEl)
547547
carousel._isSliding = true
548548

549-
spyOn(carousel, '_triggerSlideEvent')
549+
spyOn(EventHandler, 'trigger')
550550

551551
Simulator.gestures.swipe(carouselEl, {
552552
deltaX: 300,
@@ -560,7 +560,7 @@ describe('Carousel', () => {
560560
})
561561

562562
setTimeout(() => {
563-
expect(carousel._triggerSlideEvent).not.toHaveBeenCalled()
563+
expect(EventHandler.trigger).not.toHaveBeenCalled()
564564
delete document.documentElement.ontouchstart
565565
restorePointerEvents()
566566
resolve()
@@ -639,12 +639,12 @@ describe('Carousel', () => {
639639
const carouselEl = fixtureEl.querySelector('div')
640640
const carousel = new Carousel(carouselEl, {})
641641

642-
spyOn(carousel, '_triggerSlideEvent')
642+
spyOn(EventHandler, 'trigger')
643643

644644
carousel._isSliding = true
645645
carousel.next()
646646

647-
expect(carousel._triggerSlideEvent).not.toHaveBeenCalled()
647+
expect(EventHandler.trigger).not.toHaveBeenCalled()
648648
})
649649

650650
it('should not fire slid when slide is prevented', () => {
@@ -858,12 +858,12 @@ describe('Carousel', () => {
858858
const carouselEl = fixtureEl.querySelector('div')
859859
const carousel = new Carousel(carouselEl, {})
860860

861-
spyOn(carousel, '_triggerSlideEvent')
861+
spyOn(EventHandler, 'trigger')
862862

863863
carousel._isSliding = true
864864
carousel.prev()
865865

866-
expect(carousel._triggerSlideEvent).not.toHaveBeenCalled()
866+
expect(EventHandler.trigger).not.toHaveBeenCalled()
867867
})
868868
})
869869

0 commit comments

Comments
 (0)