From 1b3a9bf19344ae0c2ea4863bb92035f55454ad19 Mon Sep 17 00:00:00 2001 From: yiminghe Date: Sat, 14 Feb 2015 21:33:06 +0800 Subject: [PATCH] use webpack --- .gitignore | 3 +- .npmignore | 3 +- .spmignore | 29 ----------- README.md | 2 +- examples/index.less | 1 - examples/index.md | 108 --------------------------------------- examples/multiple.html | 1 + examples/multiple.js | 57 +++++++++++++++++++++ examples/scrollable.html | 1 + examples/scrollable.js | 23 +++++++++ examples/single.html | 1 + examples/single.js | 57 +++++++++++++++++++++ gh-pages.sh | 9 ++++ lib/SubMenu.js | 3 +- package.json | 31 +++++++---- webpack.config.js | 41 +++++++++++++++ 16 files changed, 217 insertions(+), 153 deletions(-) delete mode 100644 .spmignore delete mode 100644 examples/index.less delete mode 100644 examples/index.md create mode 100644 examples/multiple.html create mode 100644 examples/multiple.js create mode 100644 examples/scrollable.html create mode 100644 examples/scrollable.js create mode 100644 examples/single.html create mode 100644 examples/single.js create mode 100755 gh-pages.sh create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index 2a59d8e7..16f9bd46 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,5 @@ spm_modules .cache dist assets/**/*.css -examples/**/*.css \ No newline at end of file +examples/**/*.css +build \ No newline at end of file diff --git a/.npmignore b/.npmignore index dbbbd1ef..08d11825 100644 --- a/.npmignore +++ b/.npmignore @@ -25,4 +25,5 @@ _site sea-modules spm_modules .cache -dist \ No newline at end of file +dist +build \ No newline at end of file diff --git a/.spmignore b/.spmignore deleted file mode 100644 index b77f942f..00000000 --- a/.spmignore +++ /dev/null @@ -1,29 +0,0 @@ -bower_components/ -node_modules/ -nohup.out -*.iml -.idea/ -.ipr -.iws -*~ -~* -*.diff -*.log -*.patch -*.bak -.DS_Store -Thumbs.db -.project -.*proj -.svn/ -*.swp -out/ -.build -_site -sea-modules -spm_modules -.cache -dist -assets/**/*.less -tests/ -examples/ diff --git a/README.md b/README.md index dc3a7ecb..e448405e 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ npm start http://localhost:8001/examples/index.md -online example: http://spmjs.io/docs/rc-menu/examples/ +online example: http://react-component.github.io/menu/build/examples/ ## Test Case diff --git a/examples/index.less b/examples/index.less deleted file mode 100644 index 5ce72a32..00000000 --- a/examples/index.less +++ /dev/null @@ -1 +0,0 @@ -@import "font-awesome/css/font-awesome.css"; \ No newline at end of file diff --git a/examples/index.md b/examples/index.md deleted file mode 100644 index 2f1a73ec..00000000 --- a/examples/index.md +++ /dev/null @@ -1,108 +0,0 @@ -# rc-menu@2.x ---- - -## demo - - - - - - - - - - - -
-scrollable menu -
-
-
- - -````js -/** @jsx React.DOM */ -var React = require('react'); -var Menu = require('../'); -var SubMenu = Menu.SubMenu; -var MenuItem = Menu.Item; - -function handleSelect(selectedKey) { - console.log('selected ' + selectedKey); -} - -function handleDeselect(selectedKey) { - console.log('deselect ' + selectedKey); -} - -var titleRight = sub menu ; -var titleRight1 = sub menu 1 ; -var titleRight2 = sub menu 2 ; -var titleRight3 = sub menu 3 ; -var multiple = document.getElementById('multiple'); -var single = document.getElementById('single'); - -render(false,single); -render(true,multiple); - - -var children = []; -for(var i=0;i<20;i++){ - children.push({i}); -} -React.render({children},document.getElementById('long')); - - -function render(multiple,container){ - var leftMenu = ( - - - 0-1 - 0-2 - - 1 - outer - - inner inner - - - inn - - - inner inner - inner inner2 - - - - - disabled - outer3 - - ); - React.render(leftMenu, container); -} -```` \ No newline at end of file diff --git a/examples/multiple.html b/examples/multiple.html new file mode 100644 index 00000000..b3a42524 --- /dev/null +++ b/examples/multiple.html @@ -0,0 +1 @@ +placeholder \ No newline at end of file diff --git a/examples/multiple.js b/examples/multiple.js new file mode 100644 index 00000000..6ef1df5d --- /dev/null +++ b/examples/multiple.js @@ -0,0 +1,57 @@ +/** @jsx React.DOM */ +var React = require('react'); +var Menu = require('rc-menu'); +var SubMenu = Menu.SubMenu; +var MenuItem = Menu.Item; + +require('rc-menu/assets/index.css'); +require('font-awesome/css/font-awesome.css'); + +function handleSelect(selectedKey) { + console.log('selected ' + selectedKey); +} + +function handleDeselect(selectedKey) { + console.log('deselect ' + selectedKey); +} + +var titleRight = sub menu ; +var titleRight1 = sub menu 1 ; +var titleRight2 = sub menu 2 ; +var titleRight3 = sub menu 3 ; +var container = document.getElementById('__react-content'); + +render(container); + +function render(container){ + var leftMenu = ( + + + 0-1 + 0-2 + + 1 + outer + + inner inner + + + inn + + + inner inner + inner inner2 + + + + + disabled + outer3 + + ); + React.render(

multiple selectable menu

{leftMenu}
, container); +} diff --git a/examples/scrollable.html b/examples/scrollable.html new file mode 100644 index 00000000..b3a42524 --- /dev/null +++ b/examples/scrollable.html @@ -0,0 +1 @@ +placeholder \ No newline at end of file diff --git a/examples/scrollable.js b/examples/scrollable.js new file mode 100644 index 00000000..22a46702 --- /dev/null +++ b/examples/scrollable.js @@ -0,0 +1,23 @@ +/** @jsx React.DOM */ +var React = require('react'); +var Menu = require('rc-menu'); +var SubMenu = Menu.SubMenu; +var MenuItem = Menu.Item; + +require('rc-menu/assets/index.css'); +require('font-awesome/css/font-awesome.css'); + +var children = []; +for (var i = 0; i < 20; i++) { + children.push({i}); +} +var style = '.rc-menu {\ +height: 200px;\ +width:200px;\ +overflow:auto;\ +}'; +React.render(
+

keyboard scrollable menu

+ + {children} +
, document.getElementById('__react-content')); diff --git a/examples/single.html b/examples/single.html new file mode 100644 index 00000000..b3a42524 --- /dev/null +++ b/examples/single.html @@ -0,0 +1 @@ +placeholder \ No newline at end of file diff --git a/examples/single.js b/examples/single.js new file mode 100644 index 00000000..5a40d262 --- /dev/null +++ b/examples/single.js @@ -0,0 +1,57 @@ +/** @jsx React.DOM */ +var React = require('react'); +var Menu = require('rc-menu'); +var SubMenu = Menu.SubMenu; +var MenuItem = Menu.Item; + +require('rc-menu/assets/index.css'); +require('font-awesome/css/font-awesome.css'); + +function handleSelect(selectedKey) { + console.log('selected ' + selectedKey); +} + +function handleDeselect(selectedKey) { + console.log('deselect ' + selectedKey); +} + +var titleRight = sub menu ; +var titleRight1 = sub menu 1 ; +var titleRight2 = sub menu 2 ; +var titleRight3 = sub menu 3 ; +var container = document.getElementById('__react-content'); + +render(container); + +function render(container){ + var leftMenu = ( + + + 0-1 + 0-2 + + 1 + outer + + inner inner + + + inn + + + inner inner + inner inner2 + + + + + disabled + outer3 + + ); + React.render(

single selectable menu

{leftMenu}
, container); +} diff --git a/gh-pages.sh b/gh-pages.sh new file mode 100755 index 00000000..678fa8fd --- /dev/null +++ b/gh-pages.sh @@ -0,0 +1,9 @@ +npm run less +npm run example +cd ../menu-gh-pages +rm -rf build/ +mkdir build +cp -r ../menu/build/ build +git add --all +git commit -am "update examples" +git push origin gh-pages:gh-pages \ No newline at end of file diff --git a/lib/SubMenu.js b/lib/SubMenu.js index 26393740..64e7b272 100644 --- a/lib/SubMenu.js +++ b/lib/SubMenu.js @@ -54,7 +54,6 @@ var SubMenu = React.createClass({ handleKeyDown: function (e) { var keyCode = e.keyCode; var menu = this.refs[this.nameRef]; - var self = this; if (keyCode === KeyCode.ENTER) { this.handleClick(e); @@ -186,7 +185,7 @@ var SubMenu = React.createClass({ if (this._cacheMenu) { baseProps.selectedKeys = this.refs[this.nameRef].state.selectedKeys; } - if (childrenCount == 1 && children.type === Menu.type) { + if (childrenCount === 1 && children.type === Menu.type) { var menu = children; this.nameRef = menu.ref || this.nameRef; baseProps.nameRef = this.nameRef; diff --git a/package.json b/package.json index cba74329..0c7a0c99 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rc-menu", - "version": "2.2.2", + "version": "2.2.4", "description": "menu ui component for react", "keywords": [ "react", @@ -38,15 +38,34 @@ "port": 8000 }, "scripts": { + "example": "webpack -d && rc-tools run jsx2html", "less": "rc-tools run less", + "history": "rc-tools run history", "start": "node --harmony node_modules/.bin/rc-server", - "publish": "spm publish && spm doc publish && rc-tools run tag", + "publish": "rc-tools run tag && spm publish", "lint": "rc-tools run lint", "test": "", "saucelabs": "rc-tools run saucelabs", "browser-test": "rc-tools run browser-test", "browser-test-cover": "rc-tools run browser-test-cover" }, + "devDependencies": { + "font-awesome": "~4.2.0", + "bootstrap": "^3.3.2", + "css-loader": "^0.9.1", + "expect.js": "~0.3.1", + "file-loader": "^0.8.1", + "gregorian-calendar-format": "^2.1.1", + "jsx-loader": "^0.12.2", + "precommit-hook": "^1.0.7", + "rc-calendar": "^1.5.8", + "rc-server": "^2.0.0", + "rc-tools": "^1.1.0", + "react": "~0.12.1", + "style-loader": "^0.8.3", + "url-loader": "^0.5.5", + "webpack": "~1.5.3" + }, "dependencies": { "browserify-jsx": "^0.1.0", "browserify-shim": "^3.8.0", @@ -54,14 +73,6 @@ "object-assign": "^2.0.0", "rc-util": "^1.0.0" }, - "devDependencies": { - "expect.js": "~0.3.1", - "font-awesome": "~4.2.0", - "precommit-hook": "^1.0.7", - "rc-server": "^1.0.0", - "rc-tools": "^1.0.1", - "react": "~0.12.1" - }, "precommit": [ "lint", "less" diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..30e7acd2 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,41 @@ +var webpack = require("webpack"); +var path = require('path'); + +module.exports = { + entry: { + 'single': ['./examples/single.js'], + 'multiple': ['./examples/multiple.js'], + 'scrollable': ['./examples/scrollable.js'] + }, + + output: { + path: path.join(__dirname, 'build', 'examples'), + filename: '[name].js' + }, + + module: { + loaders: [ + {test: /\.js$/, loader: 'jsx-loader'}, + {test: /\.css/, loader: 'style!css'}, + // Needed for the css-loader when [bootstrap-webpack](https://github.com/bline/bootstrap-webpack) + // loads bootstrap's css. + {test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff"}, + {test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff"}, + {test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/octet-stream"}, + {test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file"}, + {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=image/svg+xml"} + ] + }, + + resolve: { + root: __dirname, + alias: { + 'rc-menu/assets/index.css': 'assets/index.css', + 'rc-menu': 'index.js' + } + }, + plugins: [ + // ./robot is automatically detected as common module and extracted + new webpack.optimize.CommonsChunkPlugin("common.js") + ] +};