Skip to content

Commit 6b69769

Browse files
committed
1.0.1 - release
1 parent 4e0b3c0 commit 6b69769

21 files changed

+784
-147
lines changed

.babelrc

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
{
22
"presets": [
3-
["@babel/env", { "loose": true, "modules": false }],
4-
"@babel/react"
3+
["@babel/preset-env", {
4+
"loose": true,
5+
"modules": false,
6+
"targets": "> 0.25%, not dead"
7+
}],
8+
"@babel/preset-react"
59
],
610
"plugins": [
7-
"@babel/plugin-transform-runtime",
8-
"@babel/plugin-proposal-class-properties"
11+
"@babel/plugin-transform-runtime",
12+
"@babel/plugin-proposal-class-properties"
913
]
1014
}
1115

.eslintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"no-unused-vars": ["warn", { "args": "none" }],
1717
"class-methods-use-this": "off",
1818
"jsx-a11y/href-no-hash": "off",
19+
"jsx-a11y/label-has-associated-control": "off",
1920
"camelcase": "error",
2021
"no-return-assign": "off",
2122
"no-noninteractive-element-to-interactive-role": "off",

.npmignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
.vscode
33
.git*
44

5+
example
56
node_modules
67
npm-debug.log
78
yarn-debug.log

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Change Log
22

3+
1.0.1 (September 20, 2018)
4+
- release component.
5+
36
1.0.0 (September 7, 2018)
47
- initial setup for development environment.
58
- config rollup for making react component.

README.md

Lines changed: 108 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,113 @@
1-
# react-image-slider
2-
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/kimcoder/react-image-slider/blob/master/LICENSE)
1+
# react-simple-image-slider
2+
[![ReactJs][react-image]][react-url]
3+
[![Download Count][download-image]][download-url]
4+
[![GitHub license][license-image]][license-url]
5+
6+
[react-image]: https://img.shields.io/badge/ReactJS-%5E16.4.2-blue.svg
7+
[react-url]: https://reactjs.org
8+
[download-image]: http://img.shields.io/npm/dm/react-simple-image-slider.svg?style=flat
9+
[download-url]: http://www.npmjs.com/package/react-simple-image-slider
10+
[license-image]: https://img.shields.io/badge/license-MIT-blue.svg
11+
[license-url]: https://github.com/kimcoder/react-simple-image-slider/blob/master/LICENSE
12+
13+
Simple ImageSlider Component for ReactJS v16.0<br>
14+
- Just Two Elements will be used. (for display images)
15+
- Support GPU Render, by default.
16+
- Support Image Preload.
17+
- Selectable Navgation Styles.
18+
19+
# Live demo
20+
- <a href="https://kimcoder.github.io/demo/react-simple-image-slider/" target="_blank">Go to Site</a><br><br>
21+
![demo gif](https://github.com/kimcoder/react-simple-image-slider/raw/master/demo.gif)
322

4-
Simple ImageSlider Component for ReactJS v16.0
523

624
# Install
25+
```
26+
// npm
27+
npm install react-simple-image-slider --save
28+
29+
// yarn
30+
yarn add react-simple-image-slider
31+
```
732

833
# Usage
34+
```
35+
import SimpleImageSlider from "react-simple-image-slider";
36+
37+
class App extends React.Component {
38+
render() {
39+
const images = [
40+
{ url: "images/1.jpg" },
41+
{ url: "images/2.jpg" },
42+
{ url: "images/3.jpg" },
43+
{ url: "images/4.jpg" },
44+
{ url: "images/5.jpg" },
45+
{ url: "images/6.jpg" },
46+
{ url: "images/7.jpg" },
47+
];
48+
49+
return (
50+
<div>
51+
<SimpleImageSlider
52+
width={896}
53+
height={504}
54+
images={images}
55+
/>
56+
</div>
57+
);
58+
}
59+
}
60+
```
61+
If You want to see more detail source,<br>
62+
- [`example/App.jsx`](https://github.com/kimcoder/react-simple-image-slider/blob/master/example/App.jsx)<br>
63+
64+
# Props
65+
|Name|Type|Required|Description|Default|
66+
|:--:|:--:|:-----:|:----------|:------|
67+
|**width**|`Number`|`Required`|Image Slider Width||
68+
|**height**|`Number`|`Required`|Image Slider Height||
69+
|**images**|`Array`|`Required`|Images,<br>Array Elements should be like this structure,<br>{ url: "" }||
70+
|**style**|`String`|`Optional`|css object||
71+
|**slideDuration**|`Number`|`Optional`|css transition-duration property|`0.5`|
72+
|**navStyle**|`Number`|`Optional`|Arrow Navgation Style,<br>1 or 2|`1`|
73+
|**showNavs**|`Boolean`|`Optional`|Toggle Arrow Navgation|`true`|
74+
|**showBullets**|`Boolean`|`Optional`|Toggle Bullets|`true`|
75+
|**useGPURender**|`Boolean`|`Optional`|Toggle GPU Render|`true`|
76+
|**bgColor**|`String`|`Optional`|slider container's css background-color property|`#000000`|
77+
|**onClickNav**|`Function`|`Optional`|Arrow Navigation Callback function,<br>`onClickNav = (toRight) => { }`<br>toRight : Boolean : slide direction||
78+
|**onClickBullets**|`Function`|`Optional`|Bullets Callback function,<br>`onClickBullets = (idx) => { }`<br>idx : Number : clicked bullet index (begin from 0)||
79+
|**onStartSlide**|`Function`|`Optional`|Arrow Navigation Callback function,<br>`onStartSlide = (idx, length) => { }`<br>idx : Number : start index (begin from 1)<br>length : Number : image length||
80+
|**onCompleteSlide**|`Function`|`Optional`|Arrow Navigation Callback function,<br>`onCompleteSlide = (idx, length) => { }`<br>idx : Number : start index (begin from 1)<br>length : Number : image length||
81+
82+
If You want to see more detail,<br>
83+
- [`src/ImageSliderPropTypes.js`](https://github.com/kimcoder/react-simple-image-slider/blob/master/src/ImageSliderPropTypes.js)
84+
- [`example/app.jsx`](https://github.com/kimcoder/react-simple-image-slider/blob/master/example/App.jsx)<br>
85+
86+
# Development
87+
### directory & source
88+
- ``./example/`` : demo site souce for testing component
89+
- ``./src/`` : image slider component source
90+
- ``./dist/`` : image slider component distribution
91+
- ``./babelrc`` : babel configure. (version 7.x)
92+
- ``./webpack.config.js`` : webpack configure. (version 4.x)
93+
- ``./rollup.config.js`` : rollup configure.
94+
95+
### scripts
96+
```
97+
// npm
98+
npm run example // run a test app(demo) by webpack dev server
99+
npm run build // build the image slider component by rollup
100+
npm run build:watch // build watch mode
101+
102+
// yarn
103+
yarn example
104+
yarn build
105+
yarn buidl:watch
106+
```
107+
If you want to run a test app, should build before do that.<br>
108+
109+
After run example by webpack dev server,<br>
110+
open ``http://localhost:8080/`` in a browser<br>
111+
112+
# License
113+
MIT

example/App.jsx

Lines changed: 134 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,157 @@ import React from "react";
22
import ReactDOM from "react-dom";
33
import CssBaseline from "@material-ui/core/CssBaseline";
44
import AppBar from "@material-ui/core/AppBar";
5-
import ImageSlider from "..";
5+
import List from "@material-ui/core/List";
6+
import ListItem from "@material-ui/core/ListItem";
7+
import ListItemText from "@material-ui/core/ListItemText";
8+
import ListSubheader from "@material-ui/core/ListSubheader";
9+
import Checkbox from "@material-ui/core/Checkbox";
10+
import FormControl from "@material-ui/core/FormControl";
11+
import InputLabel from "@material-ui/core/InputLabel";
12+
import MenuItem from "@material-ui/core/MenuItem";
13+
import Select from "@material-ui/core/Select";
14+
import SimpleImageSlider from "..";
615

7-
// https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html
816
class App extends React.Component {
917
constructor() {
1018
super();
11-
console.log("[App constructor]");
12-
this.state = {};
19+
this.state = {
20+
useGPURender: true,
21+
showNavs: true,
22+
showBullets: true,
23+
navStyle: 1,
24+
slideDuration: 0.5,
25+
bgColor: "#000000",
26+
slideIndexText: "",
27+
};
1328
}
1429

1530
componentDidMount() {
1631
console.log("[App componentDidMount]");
1732
}
1833

19-
static getDerivedStateFromProps(props, state) {
20-
console.log("[App getDerivedStateFromProps]");
21-
return null;
34+
componentDidUpdate(prevProps, prevState, snapshot) {
35+
console.log("[App componentDidUpdate]");
2236
}
2337

24-
getSnapshotBeforeUpdate(prevProps, prevState) {
25-
console.log("[App getSnapshotBeforeUpdate]");
38+
onClickNav = (toRight) => {
39+
console.log(`[App onClickNav] ${toRight}`);
2640
}
2741

28-
componentDidUpdate(prevProps, prevState, snapshot) {
29-
console.log("[App componentDidUpdate]");
42+
onClickBullets = (idx) => {
43+
console.log(`[App onClickBullets] ${idx}`);
44+
}
45+
46+
onStartSlide = (idx, length) => {
47+
console.log(`[App onStartSlide] ${idx}/${length}`);
48+
this.setState({ slideIndexText: `${idx} / ${length}`});
49+
}
50+
51+
onCompleteSlide = (idx, length) => {
52+
console.log(`[App onCompleteSlide] ${idx}/${length}`);
53+
this.setState({ slideIndexText: `${idx} / ${length}`});
3054
}
3155

32-
render() {
56+
onToggleOptions = value => () => {
57+
console.log(`[App onToggleOptions] ${value}`);
58+
const updateValue = !this.state[value];
59+
this.setState({ [value]: updateValue });
60+
}
61+
62+
onChangeSelect = event => this.setState({ [event.target.name]: event.target.value });
63+
64+
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}`;
77+
3378
return (
34-
<div style={{ textAlign: "center" }}>
35-
<CssBaseline/>
36-
<AppBar position="stickey" style={{ height: 100, textAlign: "center" }}>
37-
<h1>Image Slider Example</h1>
79+
<div style={{ textAlign: "center" }}>
80+
<CssBaseline />
81+
<AppBar style={{ position: "relative", height: 140, textAlign: "center" }}>
82+
<h1 style={{ marginBottom: 5 }}>React Simple Image Slider Example</h1>
83+
<p>simple image slider component for react</p>
84+
<div>
85+
<iframe
86+
title="git icon"
87+
src="https://ghbtns.com/github-btn.html?user=kimcoder&repo=react-simple-image-slider&type=star"
88+
frameBorder="0"
89+
width="51px"
90+
height="30px"
91+
/>
92+
</div>
3893
</AppBar>
39-
<ImageSlider/>
40-
</div>
41-
);
42-
}
94+
<SimpleImageSlider
95+
style={{ margin: "0 auto", marginTop: "50px" }}
96+
width={896}
97+
height={504}
98+
images={images}
99+
showBullets={this.state.showBullets}
100+
showNavs={this.state.showNavs}
101+
useGPURender={this.state.useGPURender}
102+
navStyle={this.state.navStyle}
103+
slideDuration={this.state.slideDuration}
104+
onClickNav={this.onClickNav}
105+
onClickBullets={this.onClickBullets}
106+
onStartSlide={this.onStartSlide}
107+
onCompleteSlide={this.onCompleteSlide}
108+
/>
109+
110+
<div style={{ margin: "10px" }}>
111+
{slideText}
112+
</div>
113+
114+
{
115+
// Slide Settings
116+
}
117+
<List subheader={listSubHeader} style={{ margin: "0 auto 100px auto", width: 900, textAlign: "left" }}>
118+
{toggleOptions.map(value => (
119+
<ListItem key={value} button onClick={this.onToggleOptions(value)}>
120+
<Checkbox checked={this.state[value]} disableRipple />
121+
<ListItemText primary={`${value}`} />
122+
</ListItem>
123+
))}
124+
<ListItem>
125+
<FormControl component="fieldset">
126+
<InputLabel>NavStyle</InputLabel>
127+
<Select
128+
value={this.state.navStyle}
129+
onChange={this.onChangeSelect}
130+
inputProps={{ name: "navStyle" }}
131+
>
132+
<MenuItem value={1}>1</MenuItem>
133+
<MenuItem value={2}>2</MenuItem>
134+
</Select>
135+
</FormControl>
136+
</ListItem>
137+
<ListItem>
138+
<FormControl>
139+
<InputLabel>slideDuration</InputLabel>
140+
<Select
141+
value={this.state.slideDuration}
142+
onChange={this.onChangeSelect}
143+
inputProps={{ name: "slideDuration" }}
144+
>
145+
<MenuItem value={0.3}>0.3</MenuItem>
146+
<MenuItem value={0.5}>0.5</MenuItem>
147+
<MenuItem value={0.7}>0.9</MenuItem>
148+
<MenuItem value={1.2}>1.2</MenuItem>
149+
</Select>
150+
</FormControl>
151+
</ListItem>
152+
</List>
153+
</div>
154+
);
155+
}
43156
}
44157

45-
ReactDOM.render(<App/>, document.getElementById("App"));
158+
ReactDOM.render(<App />, document.getElementById("App"));

example/index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<!DOCTYPE html>
2-
<html lang="ko">
2+
<html lang="en">
33
<head>
4-
<title>React Image Slider Example</title>
4+
<title>React Simple Image Slider Example</title>
55
<meta charset="utf-8">
6+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"">
67
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
78
<meta name="theme-color" content="#000000">
89
</head>

0 commit comments

Comments
 (0)