@@ -46,6 +46,7 @@ export default class Carousel extends Component {
46
46
cellPadding : PropTypes . number ,
47
47
slideWidth : PropTypes . string ,
48
48
slideHeight : PropTypes . string ,
49
+ slideAlignment : PropTypes . oneOf ( [ 'left' , 'center' , 'right' ] ) ,
49
50
beforeChange : PropTypes . func ,
50
51
afterChange : PropTypes . func ,
51
52
transitionDuration : PropTypes . oneOfType ( [ PropTypes . number , PropTypes . string ] ) ,
@@ -92,6 +93,7 @@ export default class Carousel extends Component {
92
93
imagesToPrefetch : 5 ,
93
94
maxRenderedSlides : 5 ,
94
95
cellPadding : 0 ,
96
+ slideAlignment : 'center' ,
95
97
transitionDuration : 500 ,
96
98
autoplay : false ,
97
99
autoplaySpeed : 4000 ,
@@ -135,15 +137,16 @@ export default class Carousel extends Component {
135
137
136
138
componentDidUpdate ( prevProps , prevState ) {
137
139
const { children, autoplay, slideWidth } = this . props ;
138
- const { currentSlide, loadedImages, direction, loading, slideDimensions } = this . state ;
140
+ const { currentSlide, loadedImages, direction, loading, slideDimensions, slideAlignment } = this . state ;
139
141
const oldChildren = prevProps . children ;
140
142
141
143
if ( direction !== prevState . direction ||
142
144
currentSlide !== prevState . currentSlide ||
143
145
loadedImages !== prevState . loadedImages ||
144
146
slideWidth !== prevProps . slideWidth ||
145
147
slideDimensions . width !== prevState . slideDimensions . width ||
146
- slideDimensions . height !== prevState . slideDimensions . height ) {
148
+ slideDimensions . height !== prevState . slideDimensions . height ||
149
+ slideAlignment !== prevProps . slideAlignment ) {
147
150
// Whenever new images are loaded, the current slide index changes, the transition direction changes, or the
148
151
// slide width changes, we need to recalculate the left offset positioning of the slides.
149
152
this . calcLeftOffset ( ) ;
@@ -691,7 +694,7 @@ export default class Carousel extends Component {
691
694
return ;
692
695
}
693
696
694
- const { infinite, children, cellPadding } = this . props ;
697
+ const { infinite, children, cellPadding, slideAlignment } = this . props ;
695
698
let { currentSlide } = this . state ;
696
699
const slides = this . _track . childNodes ;
697
700
const numChildren = Children . count ( children ) ;
@@ -721,8 +724,13 @@ export default class Carousel extends Component {
721
724
leftOffset -= currentSlideWidth ;
722
725
}
723
726
724
- // Center the current slide within the viewport
725
- leftOffset += ( viewportWidth - currentSlideWidth ) / 2 ;
727
+ // Adjust the offset to get the correct alignment of current slide within the viewport
728
+ if ( slideAlignment === 'center' ) {
729
+ leftOffset += ( viewportWidth - currentSlideWidth ) / 2 ;
730
+ } else if ( slideAlignment === 'right' ) {
731
+ leftOffset += ( viewportWidth - currentSlideWidth ) ;
732
+ }
733
+
726
734
const shouldRetry = foundZeroWidthSlide && retryCount < MAX_LOAD_RETRIES ;
727
735
728
736
if ( leftOffset !== this . state . leftOffset ) {
0 commit comments