Skip to content

Commit 2f82a4e

Browse files
authored
Merge pull request #142 from sag1v/deps-and-ts
resolve #140 and #138
2 parents ed83973 + 2b398a8 commit 2f82a4e

File tree

5 files changed

+30
-9
lines changed

5 files changed

+30
-9
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
},
3838
"peerDependencies": {
3939
"prop-types": "^15.5.4",
40-
"react": "^15.0.0 || ^16.0.0",
41-
"react-dom": "^15.0.0 || ^16.0.0",
40+
"react": "^15.0.0 || ^17.0.0",
41+
"react-dom": "^15.0.0 || ^17.0.0",
4242
"styled-components": "^5.1.0"
4343
},
4444
"devDependencies": {

src/react-elastic-carousel/components/Carousel.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,7 @@ class Carousel extends React.Component {
737737
className,
738738
style,
739739
itemsToShow,
740+
itemsToScroll,
740741
verticalMode,
741742
isRTL,
742743
easing,
@@ -816,6 +817,7 @@ class Carousel extends React.Component {
816817
currentItem={activeIndex}
817818
autoTabIndexVisibleItems={autoTabIndexVisibleItems}
818819
itemsToShow={itemsToShow}
820+
itemsToScroll={itemsToScroll}
819821
itemPosition={itemPosition}
820822
itemPadding={itemPadding}
821823
enableSwipe={enableSwipe}

src/react-elastic-carousel/components/Track.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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}

src/react-elastic-carousel/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export interface ReactElasticCarouselProps {
3131
itemsToShow?: number;
3232
// Defaults to false
3333
verticalMode?: boolean;
34+
// Defaults to false
35+
isRTL: boolean,
3436
// Defaults to true
3537
pagination?: boolean;
3638
// Defaults to 500

src/react-elastic-carousel/utils/helpers.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ export const cssPrefix = (...classNames) => {
99

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

0 commit comments

Comments
 (0)