@@ -36,8 +36,66 @@ class ContentSlider extends Component {
36
36
const {
37
37
children, theme, autoStart, duration, id, containerStyle,
38
38
slidesToShow, framePadding, withoutControls, vertical, cellSpacing,
39
- cellAlign, wrapAround, heightMode, arrowTheme,
39
+ cellAlign, wrapAround, heightMode, arrowTheme, hideSliderDots, themeName,
40
+ arrowLeftImage, arrowRightImage,
40
41
} = this . props ;
42
+ const renderControls = {
43
+ renderCenterLeftControls : ( { previousSlide } ) => (
44
+ < a
45
+ onClick = { previousSlide }
46
+ onKeyPress = { previousSlide }
47
+ role = "button"
48
+ tabIndex = { 0 }
49
+ className = { theme . controlLeft }
50
+ >
51
+ { arrowRightImage && < img src = { arrowRightImage . fields . file . url } alt = "Slider left arrow" /> }
52
+ { ! arrowRightImage && ( arrowTheme === 'Gray' ? < GrayArrowNext /> : < WhiteArrowNext /> ) }
53
+ </ a >
54
+ ) ,
55
+ renderCenterRightControls : ( { nextSlide } ) => (
56
+ < a
57
+ onClick = { nextSlide }
58
+ onKeyPress = { nextSlide }
59
+ role = "button"
60
+ tabIndex = { 0 }
61
+ className = { theme . controlRight }
62
+ >
63
+ { arrowLeftImage && < img src = { arrowLeftImage . fields . file . url } alt = "Slider right arrow" /> }
64
+ { ! arrowLeftImage && ( arrowTheme === 'Gray' ? < GrayArrowPrev /> : < WhiteArrowPrev /> ) }
65
+ </ a >
66
+ ) ,
67
+ } ;
68
+ if ( hideSliderDots ) {
69
+ renderControls . renderBottomCenterControls = ( ) => null ;
70
+ }
71
+ if ( themeName === 'Controls Bottom Right' ) {
72
+ renderControls . renderCenterLeftControls = ( ) => null ;
73
+ renderControls . renderCenterRightControls = ( ) => null ;
74
+ renderControls . renderBottomRightControls = ( { previousSlide, nextSlide } ) => (
75
+ < div className = { theme . bottomRightControls } >
76
+ < a
77
+ onClick = { previousSlide }
78
+ onKeyPress = { previousSlide }
79
+ role = "button"
80
+ tabIndex = { 0 }
81
+ className = { theme . controlLeft }
82
+ >
83
+ { arrowLeftImage && < img src = { arrowLeftImage . fields . file . url } alt = "Slider left arrow" /> }
84
+ { ! arrowLeftImage && ( arrowTheme === 'Gray' ? < GrayArrowPrev /> : < WhiteArrowPrev /> ) }
85
+ </ a >
86
+ < a
87
+ onClick = { nextSlide }
88
+ onKeyPress = { nextSlide }
89
+ role = "button"
90
+ tabIndex = { 0 }
91
+ className = { theme . controlRight }
92
+ >
93
+ { arrowRightImage && < img src = { arrowRightImage . fields . file . url } alt = "Slider right arrow" /> }
94
+ { ! arrowRightImage && ( arrowTheme === 'Gray' ? < GrayArrowNext /> : < WhiteArrowNext /> ) }
95
+ </ a >
96
+ </ div >
97
+ ) ;
98
+ }
41
99
42
100
return (
43
101
< div
@@ -59,28 +117,7 @@ class ContentSlider extends Component {
59
117
vertical = { vertical }
60
118
cellSpacing = { cellSpacing }
61
119
wrapAround = { wrapAround }
62
- renderCenterLeftControls = { ( { previousSlide } ) => (
63
- < a
64
- onClick = { previousSlide }
65
- onKeyPress = { previousSlide }
66
- role = "button"
67
- tabIndex = { 0 }
68
- className = { theme . controlLeft }
69
- >
70
- { arrowTheme === 'Gray' ? < GrayArrowPrev /> : < WhiteArrowPrev /> }
71
- </ a >
72
- ) }
73
- renderCenterRightControls = { ( { nextSlide } ) => (
74
- < a
75
- onClick = { nextSlide }
76
- onKeyPress = { nextSlide }
77
- role = "button"
78
- tabIndex = { 0 }
79
- className = { theme . controlRight }
80
- >
81
- { arrowTheme === 'Gray' ? < GrayArrowNext /> : < WhiteArrowNext /> }
82
- </ a >
83
- ) }
120
+ { ...renderControls }
84
121
>
85
122
{ children }
86
123
</ CarouselInject >
@@ -103,21 +140,18 @@ ContentSlider.defaultProps = {
103
140
wrapAround : true ,
104
141
heightMode : 'max' ,
105
142
arrowTheme : 'Gray' ,
143
+ hideSliderDots : false ,
144
+ themeName : 'Default' ,
145
+ arrowLeftImage : null ,
146
+ arrowRightImage : null ,
106
147
} ;
107
148
108
149
ContentSlider . propTypes = {
109
150
id : PT . string . isRequired ,
110
151
children : PT . node . isRequired ,
111
152
autoStart : PT . bool ,
112
153
duration : PT . number ,
113
- theme : PT . shape ( {
114
- container : PT . string ,
115
- content : PT . string ,
116
- controlLeft : PT . string ,
117
- controlRight : PT . string ,
118
- multiContent : PT . any ,
119
- singleContent : PT . any ,
120
- } ) ,
154
+ theme : PT . shape ( ) ,
121
155
containerStyle : PT . shape ( ) ,
122
156
slidesToShow : PT . number ,
123
157
framePadding : PT . string ,
@@ -128,6 +162,10 @@ ContentSlider.propTypes = {
128
162
wrapAround : PT . bool ,
129
163
heightMode : PT . string ,
130
164
arrowTheme : PT . string ,
165
+ hideSliderDots : PT . bool ,
166
+ themeName : PT . string ,
167
+ arrowLeftImage : PT . shape ( ) ,
168
+ arrowRightImage : PT . shape ( ) ,
131
169
} ;
132
170
133
171
export default themr ( 'Contentful-Slider' , defaultTheme ) ( ContentSlider ) ;
0 commit comments