diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..83c6c8a --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["react", "es2015", "stage-0"] +} \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..0f7c889 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,23 @@ +{ + "extends": "airbnb", + "parser": "babel-eslint", + "env": { + "browser": true, + "jasmine": true, + "node": true + }, + "plugins": [ + "react" + ], + "rules": { + "comma-dangle": ["error", "never"], + "react/jsx-curly-spacing": 0, + "react/forbid-prop-types": 0, + "react/jsx-filename-extension": 0, + "import/prefer-default-export": 0, + "import/no-extraneous-dependencies": 0 + }, + "globals": { + "jest": false + } +} \ No newline at end of file diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..b34dd47 --- /dev/null +++ b/lerna.json @@ -0,0 +1,7 @@ +{ + "lerna": "2.0.0", + "packages": [ + "packages/*" + ], + "version": "0.0.0" +} diff --git a/package.json b/package.json index 3234f45..d09c6a3 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "Rebuilt for react-bootstrap-table", "main": "index.js", "scripts": { + "start": "node -r babel-register ./node_modules/.bin/webpack-dev-server --config webpack.config.babel.js", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { @@ -15,5 +16,34 @@ "bugs": { "url": "https://github.com/react-bootstrap-table/react-bootstrap-table2/issues" }, - "homepage": "https://github.com/react-bootstrap-table/react-bootstrap-table2#readme" + "homepage": "https://github.com/react-bootstrap-table/react-bootstrap-table2#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-loader": "^7.1.1", + "babel-preset-es2015": "^6.24.1", + "babel-preset-react": "^6.24.1", + "babel-preset-stage-0": "^6.24.1", + "babel-register": "^6.24.1", + "eslint": "^4.5.0", + "eslint-config-airbnb": "^14.1.0", + "eslint-loader": "^1.9.0", + "eslint-plugin-import": "^2.7.0", + "eslint-plugin-jsx-a11y": "^4.0.0", + "eslint-plugin-react": "^7.2.1", + "html-webpack-plugin": "^2.30.1", + "lerna": "^2.0.0", + "webpack": "^3.5.4", + "webpack-dev-server": "^2.7.1" + }, + "dependencies": { + "prop-types": "^15.5.10", + "react": "^15.6.1", + "react-dom": "^15.6.1" + }, + "peerDependencies": { + "react": "^15.0.0", + "react-dom": "^15.0.0", + "prop-types": "^15.0.0" + } } diff --git a/packages/react-bootstrap-table2-example/package.json b/packages/react-bootstrap-table2-example/package.json new file mode 100644 index 0000000..c1c7a06 --- /dev/null +++ b/packages/react-bootstrap-table2-example/package.json @@ -0,0 +1,14 @@ +{ + "name": "react-bootstrap-table2-example", + "version": "0.0.1", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "react-bootstrap-table2": "0.0.1" + } +} diff --git a/packages/react-bootstrap-table2-example/src/index.html b/packages/react-bootstrap-table2-example/src/index.html new file mode 100644 index 0000000..810cd7c --- /dev/null +++ b/packages/react-bootstrap-table2-example/src/index.html @@ -0,0 +1,18 @@ + + + + + react-bootstrap-table demo + + + + + + +
+ + diff --git a/packages/react-bootstrap-table2-example/src/index.js b/packages/react-bootstrap-table2-example/src/index.js new file mode 100644 index 0000000..642fdb1 --- /dev/null +++ b/packages/react-bootstrap-table2-example/src/index.js @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDom from 'react-dom'; + +import { BootstrapTable } from 'react-bootstrap-table2'; + +const data = [1, 2, 3, 4]; + +ReactDom.render( + , + document.getElementById('example')); diff --git a/packages/react-bootstrap-table2/package.json b/packages/react-bootstrap-table2/package.json new file mode 100644 index 0000000..f3e6f06 --- /dev/null +++ b/packages/react-bootstrap-table2/package.json @@ -0,0 +1,11 @@ +{ + "name": "react-bootstrap-table2", + "version": "0.0.1", + "description": "Rebuilt for react-bootstrap-table", + "main": "src/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/packages/react-bootstrap-table2/src/bootstrap-table.js b/packages/react-bootstrap-table2/src/bootstrap-table.js new file mode 100644 index 0000000..2bbdb08 --- /dev/null +++ b/packages/react-bootstrap-table2/src/bootstrap-table.js @@ -0,0 +1,26 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; + +import storeBase from './store/base'; + +class BootstrapTable extends storeBase(Component) { + render() { + return ( + + ); + } +} + +BootstrapTable.propTypes = { + data: PropTypes.array +}; + +BootstrapTable.defaultProps = { + data: [] +}; + +export default BootstrapTable; diff --git a/packages/react-bootstrap-table2/src/index.js b/packages/react-bootstrap-table2/src/index.js new file mode 100644 index 0000000..a1dfa2d --- /dev/null +++ b/packages/react-bootstrap-table2/src/index.js @@ -0,0 +1,5 @@ +import BootstrapTable from './bootstrap-table'; + +export { + BootstrapTable +}; diff --git a/packages/react-bootstrap-table2/src/store/base.js b/packages/react-bootstrap-table2/src/store/base.js new file mode 100644 index 0000000..98842c5 --- /dev/null +++ b/packages/react-bootstrap-table2/src/store/base.js @@ -0,0 +1,8 @@ +export default ExtendBase => + class Store extends ExtendBase { + constructor(props) { + super(props); + const { data } = this.props; + this.data = data ? data.slice() : []; + } + }; diff --git a/webpack.config.babel.js b/webpack.config.babel.js new file mode 100644 index 0000000..b8888b9 --- /dev/null +++ b/webpack.config.babel.js @@ -0,0 +1,48 @@ +import * as path from 'path'; +import webpack from 'webpack'; + +import HtmlWebpackPlugin from 'html-webpack-plugin'; + +const sourcePath = path.join(__dirname, 'packages/react-bootstrap-table2/src'); +const examplePath = path.join(__dirname, 'packages/react-bootstrap-table2-example/src'); +const exampleHTMLPath = path.join(__dirname, 'packages/react-bootstrap-table2-example/src/index.html'); + +module.exports = { + entry: examplePath, + devtool: '#eval-source-map', + devServer: { + historyApiFallback: true, + hot: true, + inline: true, + // progress: true, + noInfo: true, + stats: 'errors-only' + }, + output: { + path: path.join(__dirname, 'examples'), + filename: '[name].bundle.js' + }, + module: { + rules: [ { + enforce: 'pre', + test: /\.js?$/, + exclude: /node_modules/, + include: [ sourcePath, examplePath ], + loader: 'eslint-loader' + }, { + test: /\.js?$/, + use: [ 'babel-loader' ], + exclude: /node_modules/, + include: [ sourcePath, examplePath ], + }, { + test: /\.css$/, + use: 'style-loader!css-loader' + } ] + }, + plugins: [ + new HtmlWebpackPlugin({ + template: exampleHTMLPath + }), + new webpack.HotModuleReplacementPlugin() + ] +}; \ No newline at end of file