1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.default = undefined;
|
5 |
|
6 | var _extends2 = require('babel-runtime/helpers/extends');
|
7 |
|
8 | var _extends3 = _interopRequireDefault(_extends2);
|
9 |
|
10 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
11 |
|
12 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
13 |
|
14 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
15 |
|
16 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
17 |
|
18 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
19 |
|
20 | var _inherits3 = _interopRequireDefault(_inherits2);
|
21 |
|
22 | var _class, _temp;
|
23 |
|
24 | var _react = require('react');
|
25 |
|
26 | var _react2 = _interopRequireDefault(_react);
|
27 |
|
28 | var _propTypes = require('prop-types');
|
29 |
|
30 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
31 |
|
32 | var _classnames = require('classnames');
|
33 |
|
34 | var _classnames2 = _interopRequireDefault(_classnames);
|
35 |
|
36 | var _icon = require('../../icon');
|
37 |
|
38 | var _icon2 = _interopRequireDefault(_icon);
|
39 |
|
40 | var _util = require('../../util');
|
41 |
|
42 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 | var noop = _util.func.noop;
|
50 | var Arrow = (_temp = _class = function (_Component) {
|
51 | (0, _inherits3.default)(Arrow, _Component);
|
52 |
|
53 | function Arrow() {
|
54 | (0, _classCallCheck3.default)(this, Arrow);
|
55 | return (0, _possibleConstructorReturn3.default)(this, _Component.apply(this, arguments));
|
56 | }
|
57 |
|
58 | Arrow.isDisabled = function isDisabled(props) {
|
59 | var infinite = props.infinite,
|
60 | type = props.type,
|
61 | centerMode = props.centerMode,
|
62 | currentSlide = props.currentSlide,
|
63 | slideCount = props.slideCount,
|
64 | slidesToShow = props.slidesToShow;
|
65 |
|
66 |
|
67 | if (infinite) {
|
68 | return false;
|
69 | }
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 | if (type === 'prev') {
|
78 | return currentSlide <= 0;
|
79 | }
|
80 |
|
81 | if (centerMode && currentSlide >= slideCount - 1) {
|
82 |
|
83 | return true;
|
84 | } else if (currentSlide >= slideCount - slidesToShow) {
|
85 |
|
86 | return true;
|
87 | }
|
88 |
|
89 | return false;
|
90 | };
|
91 |
|
92 | Arrow.prototype.handleClick = function handleClick(options, e) {
|
93 | e && e.preventDefault();
|
94 |
|
95 |
|
96 | if (options.message === 'prev') {
|
97 | options.message = 'previous';
|
98 | }
|
99 |
|
100 | this.props.clickHandler(options, e);
|
101 | };
|
102 |
|
103 | Arrow.prototype.render = function render() {
|
104 | var _props = this.props,
|
105 | prefix = _props.prefix,
|
106 | type = _props.type,
|
107 | arrowSize = _props.arrowSize,
|
108 | arrowPosition = _props.arrowPosition,
|
109 | arrowDirection = _props.arrowDirection,
|
110 | onMouseEnter = _props.onMouseEnter,
|
111 | onMouseLeave = _props.onMouseLeave,
|
112 | children = _props.children;
|
113 |
|
114 |
|
115 | var others = _util.obj.pickOthers(Arrow.propTypes, this.props);
|
116 | var iconType = Arrow.ARROW_ICON_TYPES[arrowDirection][type];
|
117 | var disabled = Arrow.isDisabled(this.props);
|
118 |
|
119 | var arrowClazz = (0, _classnames2.default)([prefix + 'slick-arrow', prefix + 'slick-' + type, arrowPosition, arrowSize, arrowDirection], { disabled: disabled });
|
120 |
|
121 | var arrowProps = (0, _extends3.default)({}, others, {
|
122 | key: type,
|
123 | 'data-role': 'none',
|
124 | className: arrowClazz,
|
125 | style: { display: 'block' },
|
126 | onClick: disabled ? null : this.handleClick.bind(this, { message: type }),
|
127 | onMouseEnter: disabled ? null : onMouseEnter,
|
128 | onMouseLeave: disabled ? null : onMouseLeave
|
129 | });
|
130 |
|
131 | if (children) {
|
132 | return _react2.default.cloneElement(_react2.default.Children.only(children), arrowProps);
|
133 | } else {
|
134 | return _react2.default.createElement(
|
135 | 'button',
|
136 | (0, _extends3.default)({ type: 'button', role: 'button' }, arrowProps),
|
137 | _react2.default.createElement(_icon2.default, { type: iconType })
|
138 | );
|
139 | }
|
140 | };
|
141 |
|
142 | return Arrow;
|
143 | }(_react.Component), _class.propTypes = {
|
144 | prefix: _propTypes2.default.string,
|
145 | rtl: _propTypes2.default.bool,
|
146 | type: _propTypes2.default.oneOf(['prev', 'next']).isRequired,
|
147 | centerMode: _propTypes2.default.bool,
|
148 | currentSlide: _propTypes2.default.number,
|
149 | infinite: _propTypes2.default.bool,
|
150 | clickHandler: _propTypes2.default.func,
|
151 | slideCount: _propTypes2.default.number,
|
152 | slidesToShow: _propTypes2.default.number,
|
153 | arrow: _propTypes2.default.element,
|
154 | arrowSize: _propTypes2.default.string,
|
155 | arrowPosition: _propTypes2.default.string,
|
156 | arrowDirection: _propTypes2.default.oneOf(['hoz', 'ver']),
|
157 | onMouseEnter: _propTypes2.default.func,
|
158 | onMouseLeave: _propTypes2.default.func,
|
159 | children: _propTypes2.default.node
|
160 | }, _class.defaultProps = {
|
161 | onMouseEnter: noop,
|
162 | onMouseLeave: noop
|
163 | }, _class.ARROW_ICON_TYPES = {
|
164 | hoz: { prev: 'arrow-left', next: 'arrow-right' },
|
165 | ver: { prev: 'arrow-up', next: 'arrow-down' }
|
166 | }, _temp);
|
167 | Arrow.displayName = 'Arrow';
|
168 | exports.default = Arrow;
|
169 | module.exports = exports['default']; |
\ | No newline at end of file |