@@ -12,6 +12,7 @@ const Track = ({
1212 enableMouseSwipe,
1313 preventDefaultTouchmoveEvent,
1414 itemsToShow,
15+ itemsToScroll,
1516 currentItem,
1617 itemPosition,
1718 itemPadding,
@@ -22,17 +23,31 @@ const Track = ({
2223} ) => {
2324 const width = `${ childWidth } px` ;
2425 const paddingStyle = `${ itemPadding . join ( "px " ) } px` ;
26+ const minVisibleItem = currentItem ;
27+ const maxVisibleItem = currentItem + itemsToShow ;
28+ const prevItem = minVisibleItem - itemsToScroll ;
29+ const nextItem = maxVisibleItem + itemsToScroll ;
30+
2531 const originalChildren = React . Children . map ( children , ( child , idx ) => {
26- const min = currentItem ;
27- const max = currentItem + itemsToShow ;
28- const isVisible = idx >= min && idx < max ;
32+ const isVisible = idx >= minVisibleItem && idx < maxVisibleItem ;
33+ const isPrevItem = ! isVisible && idx >= prevItem && idx < currentItem ;
34+ const isNextItem = ! isVisible && idx < nextItem && idx > currentItem ;
35+ const itemClass = "carousel-item" ;
36+
2937 const childToRender = autoTabIndexVisibleItems
30- ? React . cloneElement ( child , { tabIndex : isVisible ? 0 : - 1 } )
38+ ? React . cloneElement ( child , {
39+ tabIndex : isVisible ? 0 : - 1
40+ } )
3141 : child ;
3242 return (
3343 < div
34- className = { cssPrefix ( "carousel-item" , `carousel-item-${ idx } ` ) }
35- // tabIndex={isVisible ? 0 : -1}
44+ className = { cssPrefix (
45+ itemClass ,
46+ `${ itemClass } -${ idx } ` ,
47+ `${ itemClass } -${ isVisible ? "visible" : "hidden" } ` ,
48+ isPrevItem && `${ itemClass } -prev` ,
49+ isNextItem && `${ itemClass } -next`
50+ ) }
3651 >
3752 < ItemWrapperContainer
3853 id = { idx }
0 commit comments