forked from akiran/react-slick
-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy patharrows.js
More file actions
103 lines (92 loc) · 2.36 KB
/
arrows.js
File metadata and controls
103 lines (92 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"use strict";
import React from "react";
import { clsx } from "clsx";
import { canGoNext } from "./utils/innerSliderUtils";
export class PrevArrow extends React.PureComponent {
clickHandler(options, e) {
if (e) {
e.preventDefault();
}
this.props.clickHandler(options, e);
}
render() {
let prevClasses = { "slick-arrow": true, "slick-prev": true };
let prevHandler = this.clickHandler.bind(this, { message: "previous" });
if (
!this.props.infinite &&
(this.props.currentSlide === 0 ||
this.props.slideCount <= this.props.slidesToShow)
) {
prevClasses["slick-disabled"] = true;
prevHandler = null;
}
let prevArrowProps = {
key: "0",
"data-role": "none",
className: clsx(prevClasses),
style: { display: "block" },
onClick: prevHandler
};
let customProps = {
currentSlide: this.props.currentSlide,
slideCount: this.props.slideCount
};
let prevArrow;
if (this.props.prevArrow) {
prevArrow = React.cloneElement(this.props.prevArrow, {
...prevArrowProps,
...customProps
});
} else {
prevArrow = (
<button key="0" type="button" {...prevArrowProps}>
{" "}
Previous
</button>
);
}
return prevArrow;
}
}
export class NextArrow extends React.PureComponent {
clickHandler(options, e) {
if (e) {
e.preventDefault();
}
this.props.clickHandler(options, e);
}
render() {
let nextClasses = { "slick-arrow": true, "slick-next": true };
let nextHandler = this.clickHandler.bind(this, { message: "next" });
if (!canGoNext(this.props)) {
nextClasses["slick-disabled"] = true;
nextHandler = null;
}
let nextArrowProps = {
key: "1",
"data-role": "none",
className: clsx(nextClasses),
style: { display: "block" },
onClick: nextHandler
};
let customProps = {
currentSlide: this.props.currentSlide,
slideCount: this.props.slideCount
};
let nextArrow;
if (this.props.nextArrow) {
nextArrow = React.cloneElement(this.props.nextArrow, {
...nextArrowProps,
...customProps
});
} else {
nextArrow = (
<button key="1" type="button" {...nextArrowProps}>
{" "}
Next
</button>
);
}
return nextArrow;
}
}