Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/react-elastic-carousel/components/Carousel.js
Original file line number Diff line number Diff line change
Expand Up @@ -737,6 +737,7 @@ class Carousel extends React.Component {
className,
style,
itemsToShow,
itemsToScroll,
verticalMode,
isRTL,
easing,
Expand Down Expand Up @@ -816,6 +817,7 @@ class Carousel extends React.Component {
currentItem={activeIndex}
autoTabIndexVisibleItems={autoTabIndexVisibleItems}
itemsToShow={itemsToShow}
itemsToScroll={itemsToScroll}
itemPosition={itemPosition}
itemPadding={itemPadding}
enableSwipe={enableSwipe}
Expand Down
27 changes: 21 additions & 6 deletions src/react-elastic-carousel/components/Track.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const Track = ({
enableMouseSwipe,
preventDefaultTouchmoveEvent,
itemsToShow,
itemsToScroll,
currentItem,
itemPosition,
itemPadding,
Expand All @@ -22,17 +23,31 @@ const Track = ({
}) => {
const width = `${childWidth}px`;
const paddingStyle = `${itemPadding.join("px ")}px`;
const minVisibleItem = currentItem;
const maxVisibleItem = currentItem + itemsToShow;
const prevItem = minVisibleItem - itemsToScroll;
const nextItem = maxVisibleItem + itemsToScroll;

const originalChildren = React.Children.map(children, (child, idx) => {
const min = currentItem;
const max = currentItem + itemsToShow;
const isVisible = idx >= min && idx < max;
const isVisible = idx >= minVisibleItem && idx < maxVisibleItem;
const isPrevItem = !isVisible && idx >= prevItem && idx < currentItem;
const isNextItem = !isVisible && idx < nextItem && idx > currentItem;
const itemClass = "carousel-item";

const childToRender = autoTabIndexVisibleItems
? React.cloneElement(child, { tabIndex: isVisible ? 0 : -1 })
? React.cloneElement(child, {
tabIndex: isVisible ? 0 : -1
})
: child;
return (
<div
className={cssPrefix("carousel-item", `carousel-item-${idx}`)}
// tabIndex={isVisible ? 0 : -1}
className={cssPrefix(
itemClass,
`${itemClass}-${idx}`,
`${itemClass}-${isVisible ? "visible" : "hidden"}`,
isPrevItem && `${itemClass}-prev`,
isNextItem && `${itemClass}-next`
)}
>
<ItemWrapperContainer
id={idx}
Expand Down
4 changes: 3 additions & 1 deletion src/react-elastic-carousel/utils/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ export const cssPrefix = (...classNames) => {

// in case of an array we add the class prefix per item;
const chainedClasses = classNames.reduce((acc, current) => {
acc += `${space}${prefix}-${current}`; // we must keep spaces between class names
if (current) {
acc += `${space}${prefix}-${current}`; // we must keep spaces between class names
}
return acc;
}, "");
result += chainedClasses;
Expand Down