UNPKG

8.9 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.default = undefined;
5
6var _extends2 = require('babel-runtime/helpers/extends');
7
8var _extends3 = _interopRequireDefault(_extends2);
9
10var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
11
12var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
13
14var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
15
16var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
17
18var _inherits2 = require('babel-runtime/helpers/inherits');
19
20var _inherits3 = _interopRequireDefault(_inherits2);
21
22var _class, _temp2;
23
24var _react = require('react');
25
26var _react2 = _interopRequireDefault(_react);
27
28var _classnames = require('classnames');
29
30var _classnames2 = _interopRequireDefault(_classnames);
31
32var _propTypes = require('prop-types');
33
34var _propTypes2 = _interopRequireDefault(_propTypes);
35
36var _util = require('../util');
37
38var _innerSlider = require('./slick/inner-slider');
39
40var _innerSlider2 = _interopRequireDefault(_innerSlider);
41
42var _configProvider = require('../config-provider');
43
44var _configProvider2 = _interopRequireDefault(_configProvider);
45
46function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
48/**
49 * Slider
50 */
51var Slider = (_temp2 = _class = function (_Component) {
52 (0, _inherits3.default)(Slider, _Component);
53
54 function Slider() {
55 var _temp, _this, _ret;
56
57 (0, _classCallCheck3.default)(this, Slider);
58
59 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
60 args[_key] = arguments[_key];
61 }
62
63 return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.resize = function () {
64 // export api
65 _this.innerSlider.onWindowResized();
66 }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
67 }
68
69 Slider.prototype.render = function render() {
70 var _this2 = this;
71
72 var _props = this.props,
73 prefix = _props.prefix,
74 arrowPosition = _props.arrowPosition,
75 slideDirection = _props.slideDirection,
76 style = _props.style,
77 className = _props.className,
78 children = _props.children;
79
80
81 var globalProps = {};
82 Object.keys(_configProvider2.default.propTypes).forEach(function (key) {
83 globalProps[key] = _this2.props[key];
84 });
85
86 var sliderProps = _util.obj.pickOthers(['className', 'style', 'slideDirection'], this.props);
87 var slideCount = _react2.default.Children.count(children);
88
89 if (slideCount === 0) {
90 // 没有 item 时不显示 slider
91 return null;
92 } else if (slideCount === 1) {
93 // 单个 item 时不显示箭头和控制器
94 sliderProps.arrows = false;
95 sliderProps.autoplay = false;
96 sliderProps.draggable = false;
97 }
98
99 var clazz = (0, _classnames2.default)([prefix + 'slick', prefix + 'slick-' + arrowPosition, prefix + 'slick-' + slideDirection], className);
100
101 if (slideDirection === 'ver') {
102 // 向下传递时使用 vertical 属性
103 sliderProps.vertical = true;
104 sliderProps.verticalSwiping = true;
105 }
106
107 return _react2.default.createElement(
108 _configProvider2.default,
109 (0, _extends3.default)({}, globalProps, { rtl: false }),
110 _react2.default.createElement(
111 'div',
112 (0, _extends3.default)({
113 dir: 'ltr',
114 className: clazz,
115 style: style
116 }, _util.obj.pickOthers((0, _extends3.default)({}, Slider.propTypes, _innerSlider2.default.propTypes), sliderProps)),
117 _react2.default.createElement(_innerSlider2.default, (0, _extends3.default)({
118 ref: function ref(InnerSlider) {
119 return _this2.innerSlider = InnerSlider;
120 }
121 }, sliderProps))
122 )
123 );
124 };
125
126 return Slider;
127}(_react.Component), _class.propTypes = {
128 prefix: _propTypes2.default.string,
129 rtl: _propTypes2.default.bool,
130 /**
131 * 自定义传入的样式
132 */
133 className: _propTypes2.default.any,
134 /**
135 * 是否使用自适应高度
136 */
137 adaptiveHeight: _propTypes2.default.bool,
138 /**
139 * 动效类型,默认是'slide'
140 */
141 animation: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.bool]),
142 /**
143 * 是否显示箭头
144 */
145 arrows: _propTypes2.default.bool,
146 /**
147 * 导航箭头大小 可选值: 'medium', 'large'
148 */
149 arrowSize: _propTypes2.default.oneOf(['medium', 'large']),
150 /**
151 * 导航箭头位置 可选值: 'inner', 'outer'
152 */
153 arrowPosition: _propTypes2.default.oneOf(['inner', 'outer']),
154 /**
155 * 导航箭头的方向 可选值: 'hoz', 'ver'
156 */
157 arrowDirection: _propTypes2.default.oneOf(['hoz', 'ver']),
158 /**
159 * 是否自动播放
160 */
161 autoplay: _propTypes2.default.bool,
162 /**
163 * 自动播放的速度
164 */
165 autoplaySpeed: _propTypes2.default.number,
166 /**
167 * 向后箭头
168 */
169 nextArrow: _propTypes2.default.element,
170 /**
171 * 向前箭头
172 */
173 prevArrow: _propTypes2.default.element,
174 /**
175 * 是否启用居中模式
176 */
177 centerMode: _propTypes2.default.bool,
178 /**
179 * 是否显示导航锚点
180 */
181 dots: _propTypes2.default.bool,
182 /**
183 * 导航锚点位置
184 */
185 dotsDirection: _propTypes2.default.oneOf(['hoz', 'ver']),
186 dotsClass: _propTypes2.default.string,
187 /**
188 * 自定义导航锚点
189 */
190 dotsRender: _propTypes2.default.func,
191 /**
192 * 是否可拖拽
193 */
194 draggable: _propTypes2.default.bool,
195 /**
196 * 是否使用无穷循环模式
197 */
198 infinite: _propTypes2.default.bool,
199 /**
200 * 初始被激活的轮播图
201 */
202 defaultActiveIndex: _propTypes2.default.number,
203 /**
204 * 是否启用懒加载
205 */
206 lazyLoad: _propTypes2.default.bool,
207 slide: _propTypes2.default.string,
208 /**
209 * 轮播方向
210 */
211 slideDirection: _propTypes2.default.oneOf(['hoz', 'ver']),
212 /**
213 * 同时展示的图片数量
214 */
215 slidesToShow: _propTypes2.default.number,
216 /**
217 * 同时滑动的图片数量
218 */
219 slidesToScroll: _propTypes2.default.number,
220 /**
221 * 轮播速度
222 */
223 speed: _propTypes2.default.number,
224 /**
225 * 跳转到指定的轮播图(受控)
226 */
227 activeIndex: _propTypes2.default.number,
228 /**
229 * 锚点导航触发方式
230 */
231 triggerType: _propTypes2.default.oneOf(['click', 'hover']),
232 /**
233 * 轮播切换的回调函数
234 * @param {Number} index 幻灯片的索引
235 */
236 onChange: _propTypes2.default.func,
237 onBeforeChange: _propTypes2.default.func, // 兼容 0.x onBeforeChange
238 children: _propTypes2.default.any,
239 /**
240 * 自定义传入的class
241 */
242 style: _propTypes2.default.object,
243 /**
244 * Side padding when in center mode (px or %); 展示部分为center,pading会产生前后预览
245 */
246 centerPadding: _propTypes2.default.string,
247 /**
248 * CSS3 Animation Easing,默认‘ease’
249 */
250 cssEase: _propTypes2.default.string, // used
251 edgeFriction: _propTypes2.default.number, // 非无限轮播滑动到边缘时的阻力
252 /**
253 * 多图轮播时,点击选中后自动居中
254 */
255 focusOnSelect: _propTypes2.default.bool,
256 pauseOnHover: _propTypes2.default.bool, // 鼠标经过时停止播放
257 swipe: _propTypes2.default.bool,
258 swipeToSlide: _propTypes2.default.bool,
259 touchMove: _propTypes2.default.bool,
260 touchThreshold: _propTypes2.default.number,
261 useCSS: _propTypes2.default.bool,
262 variableWidth: _propTypes2.default.bool, // used
263 waitForAnimate: _propTypes2.default.bool,
264 edgeEvent: _propTypes2.default.any,
265 swipeEvent: _propTypes2.default.any
266}, _class.defaultProps = {
267 prefix: 'next-',
268 animation: 'slide',
269 arrowSize: 'medium',
270 arrowPosition: 'inner',
271 vertical: false,
272 verticalSwiping: false,
273 dots: true,
274 dotsDirection: 'hoz',
275 arrows: true,
276 arrowDirection: 'hoz',
277 infinite: true,
278 autoplay: false,
279 autoplaySpeed: 3000,
280 speed: 600,
281 adaptiveHeight: false,
282 centerMode: false,
283 centerPadding: '50px', // Side padding when in center mode (px or %); 展示部分为center,pading会产生前后预览
284 cssEase: 'ease',
285 draggable: true,
286 edgeFriction: 0.35,
287 focusOnSelect: false,
288 defaultActiveIndex: 0,
289 lazyLoad: false,
290 pauseOnHover: false,
291 rtl: false,
292 slide: 'div',
293 slideDirection: 'hoz',
294 slidesToShow: 1,
295 slidesToScroll: 1,
296 swipe: true,
297 swipeToSlide: false, // Allow users to drag or swipe directly to a slide irrespective of slidesToScroll
298 touchMove: true, // 移动端touch
299 touchThreshold: 5,
300 useCSS: true,
301 variableWidth: false,
302 waitForAnimate: true,
303 onChange: function onChange() {},
304 onBeforeChange: function onBeforeChange() {},
305 edgeEvent: null,
306 swipeEvent: null,
307 nextArrow: null, // nextArrow, prevArrow are react components
308 prevArrow: null,
309 style: null,
310 dotsRender: null,
311 triggerType: 'click'
312}, _temp2);
313Slider.displayName = 'Slider';
314exports.default = Slider;
315module.exports = exports['default'];
\No newline at end of file