Skip to content
This repository was archived by the owner on Apr 19, 2024. It is now read-only.

Commit bb6bfdf

Browse files
committed
Fix missing defaultOptionText bug && Bump version to 0.2.7
1 parent e478efc commit bb6bfdf

15 files changed

+252
-124
lines changed

CONTRIBUTING.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# How to contribute
2+
3+
4+
## Making Changes
5+
* Please searching the issue first, make sure nobody has filed it.
6+
* Fork the repository on GitHub
7+
* Checkout a new branch
8+
* Modify the code in `src` and `d.ts`
9+
* Verify your changes with the code in `test` dir
10+
11+
```shell
12+
# start dev server
13+
npm run start
14+
```
15+
16+
## Release
17+
* Version should following the [Semver](http://semver.org/)
18+
* Build all
19+
```shell
20+
npm run build
21+
```
22+
* [Publishing npm packages](https://docs.npmjs.com/getting-started/publishing-npm-packages)

config/helpers.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const path = require('path');
22
const _root = path.resolve(__dirname, '..');
3+
34
function root(args) {
45
args = Array.prototype.slice.call(arguments, 0);
56
return path.join.apply(path, [_root].concat(args));

config/webpack.common.js

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
const webpack = require('webpack');
21
module.exports = {
32
entry: {
43
'react-bootstrap-xeditable': './src/index.js',
@@ -8,23 +7,20 @@ module.exports = {
87
extensions: ['', '.js', 'jsx']
98
},
109
module: {
11-
loaders: [
12-
{
13-
test: /\.js(x)?$/,
14-
exclude: /(node_modules)/,
15-
loader: 'babel-loader',
16-
}
17-
],
18-
preLoaders: [
19-
{
20-
test: /\.js$/,
21-
loader: 'source-map-loader'
22-
},
23-
{
24-
test: /\.js(x)?$/,
25-
exclude: /node_modules/,
26-
loader: 'eslint-loader'
27-
},
10+
loaders: [{
11+
test: /\.js(x)?$/,
12+
exclude: /(node_modules)/,
13+
loader: 'babel-loader',
14+
}],
15+
preLoaders: [{
16+
test: /\.js$/,
17+
loader: 'source-map-loader'
18+
},
19+
{
20+
test: /\.js(x)?$/,
21+
exclude: /node_modules/,
22+
loader: 'eslint-loader'
23+
},
2824
]
2925
}
3026
};

config/webpack.dev.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin');
44
const HtmlWebpackPlugin = require('html-webpack-plugin');
55
const commonConfig = require('./webpack.common.js');
66
const helpers = require('./helpers');
7-
const path = require('path');
87
module.exports = webpackMerge(commonConfig, {
98
entry: {
109
'app': helpers.root('test') + '/app.jsx',

config/webpack.prod.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
const webpack = require('webpack');
21
const webpackMerge = require('webpack-merge');
3-
const ExtractTextPlugin = require('extract-text-webpack-plugin');
4-
const HtmlWebpackPlugin = require('html-webpack-plugin');
52
const commonConfig = require('./webpack.common.js');
63
const helpers = require('./helpers');
7-
const path = require('path');
84
module.exports = webpackMerge(commonConfig, {
95
entry: {
106
'react-bootstrap-xeditable': helpers.root('src') + '/index.js',

d.ts/EditableSelect.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ export interface EditableSelectProps extends React.Props<EditableSelectClass> {
88
value?: string;
99
options: Array<any>;
1010
onUpdate: Function;
11+
defaultOptionText?: string;
1112
}
1213
export interface EditableSelect extends React.ReactElement<EditableSelectProps> { }
13-
export interface EditableSelectClass extends React.ComponentClass<EditableSelectProps> { }
14+
export interface EditableSelectClass extends React.ComponentClass<EditableSelectProps> { }
1415
export const EditableSelect: EditableSelectClass;

d.ts/EditableTextArea.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ export interface EditableTextAreaProps extends React.Props<EditableTextAreaClass
1010
onUpdate: Function;
1111
}
1212
export interface EditableTextArea extends React.ReactElement<EditableTextAreaProps> { }
13-
export interface EditableTextAreaClass extends React.ComponentClass<EditableTextAreaProps> { }
13+
export interface EditableTextAreaClass extends React.ComponentClass<EditableTextAreaProps> { }
1414
export const EditableTextField: EditableTextAreaClass;

d.ts/EditableTextField.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ export interface EditableTextFieldProps extends React.Props<EditableTextFieldCla
1010
onUpdate: Function;
1111
}
1212
export interface EditableTextField extends React.ReactElement<EditableTextFieldProps> { }
13-
export interface EditableTextFieldClass extends React.ComponentClass<EditableTextFieldProps> { }
13+
export interface EditableTextFieldClass extends React.ComponentClass<EditableTextFieldProps> { }
1414
export const EditableTextField: EditableTextFieldClass;

package.json

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
{
22
"name": "react-bootstrap-xeditable",
3-
"version": "0.2.6",
3+
"version": "0.2.7",
44
"description": "",
55
"main": "lib/index.js",
66
"module": "es/index.js",
77
"jsnext:main": "es/index.js",
88
"typings": "d.ts/index.d.ts",
99
"scripts": {
10-
"start": "webpack-dev-server --inline --progress --port 8080",
11-
"build:commonjs": "rimraf lib && cross-env BABEL_ENV=commonjs babel src --out-dir lib",
12-
"build:es": "rimraf es && cross-env BABEL_ENV=es babel src --out-dir es",
13-
"build:umd": "rimraf dist && cross-env BABEL_ENV=commonjs webpack --config config/webpack.prod.js --progress --profile --bail",
10+
"start": "./node_modules/.bin/webpack-dev-server --inline --progress --port 8080",
11+
"build:commonjs": "./node_modules/.bin/rimraf lib && ./node_modules/.bin/cross-env BABEL_ENV=commonjs ./node_modules/.bin/babel src --out-dir lib",
12+
"build:es": "./node_modules/.bin/rimraf es && ./node_modules/.bin/cross-env BABEL_ENV=es ./node_modules/.bin/babel src --out-dir es",
13+
"build:umd": "./node_modules/.bin/rimraf dist && ./node_modules/.bin/cross-env BABEL_ENV=commonjs ./node_modules/.bin/webpack --config config/webpack.prod.js --progress --profile --bail",
1414
"build": "npm run build:commonjs && npm run build:es && npm run build:umd "
1515
},
1616
"files": [
@@ -31,6 +31,7 @@
3131
},
3232
"homepage": "https://github.com/kunyan/react-bootstrap-xeditable#readme",
3333
"devDependencies": {
34+
"babel-cli": "^6.23.0",
3435
"babel-core": "^6.20.0",
3536
"babel-eslint": "^7.1.1",
3637
"babel-loader": "^6.2.9",
@@ -44,6 +45,7 @@
4445
"babel-preset-es2015": "^6.18.0",
4546
"babel-preset-react": "^6.16.0",
4647
"babel-preset-stage-1": "^6.16.0",
48+
"cross-env": "^3.2.3",
4749
"css-loader": "^0.26.1",
4850
"eslint": "^3.12.2",
4951
"eslint-loader": "^1.6.1",

src/EditableSelect.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ import XEditable from './XEditable';
33

44
export default class EditableSelect extends React.Component {
55
static defaultProps = {
6-
name: null,
6+
name: null
77
}
88
static propTypes = {
99
name: React.PropTypes.string.isRequired,
1010
onUpdate: React.PropTypes.func.isRequired,
1111
options: React.PropTypes.array.isRequired,
12-
defaultOptionText: React.PropTypes.string,
12+
defaultOptionText: React.PropTypes.string
1313
}
1414
constructor(props) {
1515
super(props);
1616
this.setState = this.setState.bind(this);
1717

1818
const options = this.convertOptions(this.props.options);
1919
if (this.props.defaultOptionText) {
20-
options.unshift({ text: this.props.defaultOptionText, value: null});
20+
options.unshift({text: this.props.defaultOptionText, value: null});
2121
}
2222
const selected = options.find((opt) => {
2323
if (opt.value === this.props.value) {
@@ -36,7 +36,7 @@ export default class EditableSelect extends React.Component {
3636
isEditing: false,
3737
options: options,
3838
text: text,
39-
value: this.props.value,
39+
value: this.props.value
4040
};
4141

4242
}
@@ -47,7 +47,7 @@ export default class EditableSelect extends React.Component {
4747
this.setState({
4848
isEditing: false,
4949
text: this.refs.el.options[this.refs.el.selectedIndex].text,
50-
value: this.refs.el.value,
50+
value: this.refs.el.value
5151
});
5252
}
5353
cancel = () => {
@@ -57,12 +57,10 @@ export default class EditableSelect extends React.Component {
5757
this.setState({isEditing: true});
5858
}
5959

60-
convertOptions= (options) => {
60+
convertOptions = (options) => {
6161
return options.map((opt) => {
62-
if (typeof opt === 'string'
63-
|| typeof opt === 'number'
64-
|| typeof opt === 'boolean') {
65-
return { text: opt, value: opt};
62+
if (typeof opt === 'string' || typeof opt === 'number' || typeof opt === 'boolean') {
63+
return {text: opt, value: opt};
6664
}
6765
return {text: opt.text, value: opt.value};
6866
});
@@ -74,13 +72,13 @@ export default class EditableSelect extends React.Component {
7472
});
7573
return (
7674
<XEditable isLoading={false} save={this.save} cancel={this.cancel}>
77-
<select ref='el' className='form-control input-sm' name={this.props.name} defaultValue={this.state.value} >
75+
<select ref='el' className='form-control input-sm' name={this.props.name} defaultValue={this.state.value}>
7876
{options}
7977
</select>
8078
</XEditable>
8179
);
8280
} else {
83-
return <a href='javascript:;' className='editable editable-click' onClick={this.handleLinkClick} >{this.state.text}</a>;
81+
return <a href='javascript:;' className='editable editable-click' onClick={this.handleLinkClick}>{this.state.text}</a>;
8482
}
8583
}
8684
}

src/EditableTextArea.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default class EditableTextArea extends React.Component {
1616
constructor(props) {
1717
super(props);
1818
this.state = {
19-
isEditing: false,
19+
isEditing: false
2020
};
2121
this.setState = this.setState.bind(this);
2222
}
@@ -38,11 +38,13 @@ export default class EditableTextArea extends React.Component {
3838
if (this.state.isEditing) {
3939
return (
4040
<XEditable isLoading={false} save={this.save} cancel={this.cancel}>
41-
<textarea ref='el' className='form-control' rows='3' name={this.props.name} defaultValue={this.props.value} placeholder={this.props.placeholder}/>
41+
<textarea ref='el' className='form-control' rows='3' name={this.props.name} defaultValue={this.props.value} placeholder={this.props.placeholder}/>
4242
</XEditable>
4343
);
4444
} else {
45-
return <a href='javascript:;' className='editable editable-click' onClick={this.handleLinkClick} ><pre>{this.props.value}</pre></a>;
45+
return <a href='javascript:;' className='editable editable-click' onClick={this.handleLinkClick}>
46+
<pre>{this.props.value}</pre>
47+
</a>;
4648
}
4749
}
4850
}

src/EditableTextField.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default class EditableTextField extends React.Component {
1616
constructor(props) {
1717
super(props);
1818
this.state = {
19-
isEditing: false,
19+
isEditing: false
2020
};
2121
this.setState = this.setState.bind(this);
2222
}
@@ -38,12 +38,12 @@ export default class EditableTextField extends React.Component {
3838
if (this.state.isEditing) {
3939
return (
4040
<XEditable isLoading={false} save={this.save} cancel={this.cancel}>
41-
<input ref='el' type='text' className='form-control input-sm' name={this.props.name} defaultValue={this.props.value} placeholder={this.props.placeholder} autoFocus/>
42-
<span className='editable-clear-x' onClick={this.clear} ></span>
41+
<input ref='el' type='text' className='form-control input-sm' name={this.props.name} defaultValue={this.props.value} placeholder={this.props.placeholder} autoFocus/>
42+
<span className='editable-clear-x' onClick={this.clear}></span>
4343
</XEditable>
4444
);
4545
} else {
46-
return <a href='javascript:;' className='editable editable-click' onClick={this.handleLinkClick} >{this.props.value}</a>;
46+
return <a href='javascript:;' className='editable editable-click' onClick={this.handleLinkClick}>{this.props.value}</a>;
4747
}
4848
}
4949
}

src/XEditable.js

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,32 @@ export default class XEditable extends React.Component {
1515
return (
1616
<span className='editable-container editable-inline'>
1717
<div>
18-
{this.props.isLoading ? (
19-
<div className='editableform-loading'></div>
20-
) : (
21-
<form className='form-inline editableform' onSubmit={this.props.save}>
22-
<div className='control-group form-group'>
23-
<div>
24-
<div className='editable-input' style={{
25-
position: 'relative'
26-
}}>
27-
{this.props.children}
28-
</div>
29-
<div className='editable-buttons'>
30-
<button type='submit' className='btn btn-primary btn-sm editable-submit' onClick={this.props.save}>
31-
<i className='glyphicon glyphicon-ok'></i>
32-
</button>
33-
<button type='button' className='btn btn-default btn-sm editable-cancel' onClick={this.props.cancel}>
34-
<i className='glyphicon glyphicon-remove'></i>
35-
</button>
18+
{this.props.isLoading
19+
? (
20+
<div className='editableform-loading'></div>
21+
)
22+
: (
23+
<form className='form-inline editableform' onSubmit={this.props.save}>
24+
<div className='control-group form-group'>
25+
<div>
26+
<div className='editable-input' style={{
27+
position: 'relative'
28+
}}>
29+
{this.props.children}
30+
</div>
31+
<div className='editable-buttons'>
32+
<button type='submit' className='btn btn-primary btn-sm editable-submit' onClick={this.props.save}>
33+
<i className='glyphicon glyphicon-ok'></i>
34+
</button>
35+
<button type='button' className='btn btn-default btn-sm editable-cancel' onClick={this.props.cancel}>
36+
<i className='glyphicon glyphicon-remove'></i>
37+
</button>
38+
</div>
3639
</div>
40+
<div className='editable-error-block help-block'></div>
3741
</div>
38-
<div className='editable-error-block help-block'></div>
39-
</div>
40-
</form>
41-
)}
42+
</form>
43+
)}
4244
</div>
4345
</span>
4446
);

test/app.jsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ const XSelect = class XSelect extends React.Component {
4646
// }
4747
// ];
4848
const options2 = [
49-
'Hello',
50-
'World',
51-
'Sky',
52-
'Air',
49+
'Hello', 'World', 'Sky', 'Air',
5350
// 'UK',
5451
];
5552
return (<EditableSelect name='country' onUpdate={this.handleUpdate} value={this.state.value} options={options2} defaultOptionText='Not select'/>);
@@ -71,6 +68,9 @@ const XTextArea = class XTextArea extends React.Component {
7168
return (<EditableTextArea name='test' value={this.state.value} onUpdate={this.handleUpdate} placeholder='Please input your name'/>);
7269
}
7370
};
74-
ReactDOM.render(<XTextField/>, document.getElementById('demo-textfield'));
75-
ReactDOM.render(<XSelect/>, document.getElementById('demo-select'));
76-
ReactDOM.render(<XTextArea/>, document.getElementById('demo-textarea'));
71+
ReactDOM.render(
72+
<XTextField/>, document.getElementById('demo-textfield'));
73+
ReactDOM.render(
74+
<XSelect/>, document.getElementById('demo-select'));
75+
ReactDOM.render(
76+
<XTextArea/>, document.getElementById('demo-textarea'));

0 commit comments

Comments
 (0)