Skip to content

Commit e78e0de

Browse files
authored
Merge pull request #11 from kimcoder/feature/issue-10
[feature/issuse-10] add onClick callback
2 parents 767374b + ed08162 commit e78e0de

File tree

7 files changed

+39
-21
lines changed

7 files changed

+39
-21
lines changed

CHANGELOG.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Change Log
22

3-
1.0.3 (March 30, 2018)
3+
1.0.4 (June 22, 2020)
4+
- add 'onClick' props.
5+
- can handle callback when image was clicked
6+
7+
1.0.3 (March 30, 2020)
48
- modify props types about width and height. ( number -> string or number )
59
- can set value like this. '100%' or '100px' or 100
610

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ If You want to see more detail source,<br>
7474
|**showBullets**|`Boolean`|`Optional`|Toggle Bullets|`true`|
7575
|**useGPURender**|`Boolean`|`Optional`|Toggle GPU Render|`true`|
7676
|**bgColor**|`String`|`Optional`|slider container's css background-color property|`#000000`|
77+
|**onClick**|`Function`|`Optional`|Image Click Callback function,<br>`onClick = (idx, event) => { }`<br>idx : number : clicked bullet index (begin from 0)||
7778
|**onClickNav**|`Function`|`Optional`|Arrow Navigation Callback function,<br>`onClickNav = (toRight) => { }`<br>toRight : Boolean : slide direction||
7879
|**onClickBullets**|`Function`|`Optional`|Bullets Callback function,<br>`onClickBullets = (idx) => { }`<br>idx : Number : clicked bullet index (begin from 0)||
7980
|**onStartSlide**|`Function`|`Optional`|Slide Transition Start function,<br>`onStartSlide = (idx, length) => { }`<br>idx : Number : start index (begin from 1)<br>length : Number : image length||

example/App.jsx

+25-17
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ import Select from "@material-ui/core/Select";
1414
import SimpleImageSlider from "..";
1515

1616
class App extends React.Component {
17+
listSubHeader = <ListSubheader><h1>Slider Settings</h1></ListSubheader>;
18+
19+
toggleOptions = ["useGPURender", "showNavs", "showBullets"];
20+
21+
images = [
22+
{ url: "images/1.jpg" },
23+
{ url: "images/2.jpg" },
24+
{ url: "images/3.jpg" },
25+
{ url: "images/4.jpg" },
26+
{ url: "images/5.jpg" },
27+
{ url: "images/6.jpg" },
28+
{ url: "images/7.jpg" },
29+
];
30+
1731
constructor() {
1832
super();
1933
this.state = {
@@ -35,6 +49,10 @@ class App extends React.Component {
3549
console.log("[App componentDidUpdate]");
3650
}
3751

52+
onClick = (idx, event) => {
53+
console.log(`[App onClick] ${idx} ${event.target}`);
54+
}
55+
3856
onClickNav = (toRight) => {
3957
console.log(`[App onClickNav] ${toRight}`);
4058
}
@@ -62,18 +80,7 @@ class App extends React.Component {
6280
onChangeSelect = event => this.setState({ [event.target.name]: event.target.value });
6381

6482
render() {
65-
const listSubHeader = <ListSubheader><h1>Slider Settings</h1></ListSubheader>;
66-
const toggleOptions = ["useGPURender", "showNavs", "showBullets"];
67-
const images = [
68-
{ url: "images/1.jpg" },
69-
{ url: "images/2.jpg" },
70-
{ url: "images/3.jpg" },
71-
{ url: "images/4.jpg" },
72-
{ url: "images/5.jpg" },
73-
{ url: "images/6.jpg" },
74-
{ url: "images/7.jpg" },
75-
];
76-
const slideText = this.state.slideIndexText || `${1} / ${images.length}`;
83+
const slideText = this.state.slideIndexText || `${1} / ${this.images.length}`;
7784

7885
return (
7986
<div style={{ textAlign: "center" }}>
@@ -93,14 +100,15 @@ class App extends React.Component {
93100
</AppBar>
94101
<SimpleImageSlider
95102
style={{ margin: "0 auto", marginTop: "50px" }}
96-
width={200}
97-
height={200}
98-
images={images}
103+
width={896}
104+
height={504}
105+
images={this.images}
99106
showBullets={this.state.showBullets}
100107
showNavs={this.state.showNavs}
101108
useGPURender={this.state.useGPURender}
102109
navStyle={this.state.navStyle}
103110
slideDuration={this.state.slideDuration}
111+
onClick={this.onClick}
104112
onClickNav={this.onClickNav}
105113
onClickBullets={this.onClickBullets}
106114
onStartSlide={this.onStartSlide}
@@ -114,8 +122,8 @@ class App extends React.Component {
114122
{
115123
// Slide Settings
116124
}
117-
<List subheader={listSubHeader} style={{ margin: "0 auto 100px auto", width: 900, textAlign: "left" }}>
118-
{toggleOptions.map(value => (
125+
<List subheader={this.listSubHeader} style={{ margin: "0 auto 100px auto", width: 900, textAlign: "left" }}>
126+
{this.toggleOptions.map(value => (
119127
<ListItem key={value} button onClick={this.onToggleOptions(value)}>
120128
<Checkbox checked={this.state[value]} disableRipple />
121129
<ListItemText primary={`${value}`} />

index.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ export interface RSISProps {
99
width: string;
1010
height: string;
1111
images: RSISImage[],
12-
1312
style?: CSSStyleDeclaration,
1413
slideDuration?: number;
1514
showNavs?: boolean;
1615
showBullets?: boolean;
1716
bgColor?: string;
1817
useGPURender?: boolean;
1918
navStyle?: 1 | 2;
19+
onClick?: (idx: number, event: React.SyntheticEvent) => void;
2020
onClickNav?: (toRight: boolean) => void;
2121
onClickBullets?: (idx: number) => void;
2222
onStartSlide?: (current: number, length: number) => void;

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-simple-image-slider",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"description": "simple image slider component for react",
55
"main": "dist/ImageSlider.js",
66
"scripts": {

src/ImageSlider.jsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ class ImageSlider extends React.Component {
2828
}
2929
}
3030

31+
onClick = (event) => {
32+
this.callPropsFunc("onClick", this.state.idx, event);
33+
}
34+
3135
onClickNav = (toRight) => {
3236
if (!this.isCanSlide(-1)) {
3337
return;
@@ -125,7 +129,7 @@ class ImageSlider extends React.Component {
125129
}
126130

127131
renderSlide = length => (
128-
<div style={styles.ImageSlider}>
132+
<div style={styles.ImageSlider} onClick={this.onClick}>
129133
<div style={this.state.currentSlideStyle} onTransitionEnd={this.onSlideEnd} />
130134
<div style={this.state.nextSlideStyle} />
131135
</div>

src/ImageSliderPropTypes.js

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export default {
2424
showBullets: PropTypes.bool,
2525
bgColor: PropTypes.string,
2626
useGPURender: PropTypes.bool,
27+
onClick: PropTypes.func,
2728
onClickNav: PropTypes.func,
2829
onClickBullets: PropTypes.func,
2930
onStartSlide: PropTypes.func,

0 commit comments

Comments
 (0)