diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 097b450..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-# top-most EditorConfig file
-root = true
-
-# Unix-style newlines with a newline ending every file
-[*.{js,css}]
-end_of_line = lf
-insert_final_newline = true
-indent_style = space
-indent_size = 2
-
-[*]
-charset = utf-8
-trim_trailing_whitespace = true
-
-[*.md]
-max_line_length = 0
-trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index bd0d2a5..372e187 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,7 @@ _site
sea-modules
spm_modules
.cache
+.happypack
dist
build
assets/**/*.css
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index 872786e..0000000
--- a/.jshintrc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "node": true,
- "browser": true,
- "bitwise": true,
- "camelcase": true,
- "curly": true,
- "immed": true,
- "newcap": true,
- "noarg": true,
- "undef": true,
- "unused": "vars",
- "esnext": true
-}
diff --git a/.npmignore b/.npmignore
index dbbbd1e..8eee222 100644
--- a/.npmignore
+++ b/.npmignore
@@ -20,6 +20,7 @@ Thumbs.db
*.swp
out/
.build
+.happypack
node_modules
_site
sea-modules
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..6fc0e4a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,37 @@
+language: node_js
+
+sudo: false
+
+notification:
+ email:
+ - wsj7552715@hotmail.com
+
+node_js:
+- 4.0.0
+
+before_install:
+- |
+ if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qve '(\.md$)|(\.html$)'
+ then
+ echo "Only docs were updated, stopping build process."
+ exit
+ fi
+ phantomjs --version
+
+script:
+- |
+ if [ "$TEST_TYPE" = test ]; then
+ npm test
+ else
+ npm run $TEST_TYPE
+ fi
+
+env:
+ matrix:
+ - TEST_TYPE=test
+ - TEST_TYPE=coverage
+ - TEST_TYPE=saucelabs
+
+matrix:
+ allow_failures:
+ - env: "TEST_TYPE=saucelabs"
diff --git a/HISTORY.md b/HISTORY.md
index e69de29..a32fbb7 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -0,0 +1,5 @@
+# history
+
+## 0.1.3
+
+`NEW` add new Prop `renderView`
\ No newline at end of file
diff --git a/demo/InputFormFieldDemo.js b/demo/InputFormFieldDemo.js
index bbfbc8b..ba74469 100644
--- a/demo/InputFormFieldDemo.js
+++ b/demo/InputFormFieldDemo.js
@@ -6,12 +6,12 @@
* All rights reserved.
*/
-let classnames = require('classnames');
+const classnames = require('classnames');
-let InputFormField = require('../src');
-let {LeftAddon, RightAddon, Count} = InputFormField;
-let Form = require('uxcore-form/build/Form');
-let Validators = require('uxcore-validator');
+const InputFormField = require('../src');
+const {LeftAddon, RightAddon, Count} = InputFormField;
+const Form = require('uxcore-form/build/Form');
+const Validators = require('uxcore-validator');
class Demo extends React.Component {
@@ -29,7 +29,9 @@ class Demo extends React.Component {
let me = this;
return (
-
+
);
}
diff --git a/gulpfile.js b/gulpfile.js
deleted file mode 100644
index d5a9029..0000000
--- a/gulpfile.js
+++ /dev/null
@@ -1,196 +0,0 @@
-// https://github.com/gulpjs/gulp/tree/master/docs
-var gulp = require('gulp');
-var fs = require('fs');
-var inquirer = require('inquirer');
-var spawn = require('cross-spawn');
-var file = require('html-wiring');
-var colors = require('colors/safe');
-var git = require('git-rev');
-
-colors.setTheme({
- info: ['bold', 'green']
-});
-
-var pkg = JSON.parse(file.readFileAsString('package.json'));
-
-var versionCompare = function(a, b) {
- var aArr = a.split('.');
- var bArr = b.split('.');
- var larger = false;
- for (var i = 0; i < 3; i++) {
- if (parseInt(aArr[i]) === parseInt(bArr[i])) {
-
- }
- else {
- larger = parseInt(aArr[i]) > parseInt(bArr[i]);
- break;
- }
- }
- return larger;
-}
-
-var webpack = require('webpack');
-
-// http://browsersync.io/
-var browserSync = require('browser-sync');
-var reload = browserSync.reload;
-
-// https://www.npmjs.com/package/gulp-babel
-var babel = require('gulp-babel');
-
-// https://www.npmjs.com/package/gulp-less
-var less = require('gulp-less');
-
-// https://github.com/floridoo/gulp-sourcemaps
-var sourcemaps = require('gulp-sourcemaps');
-
-// https://github.com/wearefractal/gulp-concat
-var concat = require('gulp-concat');
-
-// https://www.npmjs.com/package/gulp-just-replace/
-var replace = require('gulp-just-replace');
-
-// https://www.npmjs.com/package/gulp-es3ify
-var es3ify = require("gulp-es3ify");
-
-gulp.task('pack_demo', function(cb) {
- webpack(require('./webpack.dev.js'), function (err, stats) {
- // 重要 打包过程中的语法错误反映在stats中
- console.log('webpack log:' + stats);
- if(err) cb(err);
- console.info('###### pack_demo done ######');
- cb();
- });
-});
-
-gulp.task('pack_build', function(cb) {
- gulp.src(['./src/**/*.js'])
- .pipe(babel({
- presets: ['react', 'es2015-loose', 'stage-1'],
- plugins: ['add-module-exports']
- }))
- .pipe(es3ify())
- .pipe(gulp.dest('build'))
- .on('end', function() {
- cb();
- })
-});
-
-gulp.task('logo_build', function(cb) {
- gulp.src(['./src/**/*.svg'])
- .pipe(gulp.dest('build'))
- .on('end', function() {
- cb();
- })
-})
-
-gulp.task('less_demo', function(cb) {
- gulp.src(['./demo/**/*.less'])
- .pipe(sourcemaps.init())
- .pipe(less())
- .pipe(concat('demo.css'))
- .pipe(replace([{
- search: /\/\*#\ssourceMappingURL=([^\*\/]+)\.map\s\*\//g,
- replacement: '/* end for `$1` */\n'
- }]))
- .pipe(sourcemaps.write('.'))
- .pipe(gulp.dest('./dist'));
- console.info('###### less_demo done ######');
- cb();
-});
-
-gulp.task('reload_by_js', ['pack_demo'], function () {
- reload();
-});
-
-gulp.task('reload_by_component_css', ['less_component'], function () {
- reload();
-});
-
-gulp.task('reload_by_demo_css', ['less_demo'], function () {
- reload();
-});
-
-gulp.task('server', [
- 'pack_demo',
- 'less_demo'
-], function() {
- browserSync({
- server: {
- baseDir: './'
- },
- open: 'external'
- });
-
- gulp.watch(['src/**/*.js', 'demo/**/*.js'], ['reload_by_js']);
-
- gulp.watch('src/**/*.less', ['reload_by_demo_css']);
-
- gulp.watch('demo/**/*.less', ['reload_by_demo_css']);
-
-});
-
-gulp.task('default', ['pack_build', 'logo_build'], function() {
-
-});
-
-gulp.task('publish', ['pack_build', 'logo_build'], function() {
- setTimeout(function() {
- git.branch(function(branch) {
- var defaultBranch = branch;
- var defaultNpm = /@ali/.test(pkg.name) ? 'tnpm' : 'npm';
- var questions = [
- {
- type: 'input',
- name: 'version',
- message: 'please enter the package version to publish (should be xx.xx.xx)',
- default: pkg.version,
- validate: function(input) {
- if (/\d+\.\d+\.\d+/.test(input)) {
- if (versionCompare(input, pkg.version)) {
- return true;
- }
- else {
- return "the version you entered should be larger than now"
- }
- }
- else {
- return "the version you entered is not valid"
- }
- }
- },
- {
- type: 'input',
- name: 'branch',
- message: 'which branch you want to push',
- default: defaultBranch
- },
- {
- type: 'input',
- name: 'npm',
- message: 'which npm you want to publish',
- default: defaultNpm,
- validate: function(input) {
- if (/npm/.test(input)) {
- return true;
- }
- else {
- return "it seems not a valid npm"
- }
- }
- }
- ];
- inquirer.prompt(questions, function(answers) {
- pkg.version = answers.version;
- file.writeFileFromString(JSON.stringify(pkg, null, ' '), 'package.json');
- console.log(colors.info('#### Git Info ####'));
- spawn.sync('git', ['add', '.'], {stdio: 'inherit'});
- spawn.sync('git', ['commit', '-m', 'ver. ' + pkg.version], {stdio: 'inherit'});
- spawn.sync('git', ['push', 'origin', answers.branch], {stdio: 'inherit'});
- console.log(colors.info('#### Npm Info ####'));
- spawn.sync(answers.npm, ['publish'], {stdio: 'inherit'});
- })
- })
- }, 0)
-
-});
diff --git a/package.json b/package.json
index 5ee9432..cd0ac61 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,24 @@
{
"name": "uxcore-input-form-field",
- "version": "0.1.2",
+ "version": "0.1.3",
"description": "uxcore-input-form-field component for uxcore.",
"repository": "https://github.com/uxcore/uxcore-input-form-field.git",
"author": "eternalsky",
"main": "build/index.js",
"scripts": {
- "dev": "gulp server"
+ "start": "uxcore-tools run start",
+ "server": "uxcore-tools run server",
+ "lint": "uxcore-tools run lint",
+ "build": "uxcore-tools run build",
+ "test": "uxcore-tools run test",
+ "coverage": "uxcore-tools run coverage",
+ "pub": "uxcore-tools run pub",
+ "dep": "uxcore-tools run dep",
+ "tnpm-dep": "uxcore-tools run tnpm-dep",
+ "chrome": "uxcore-tools run chrome",
+ "browsers": "uxcore-tools run browsers",
+ "saucelabs": "uxcore-tools run saucelabs",
+ "update": "uxcore-tools run update"
},
"bugs": {
"url": "http://github.com/uxcore/uxcore-input-form-field/issues"
@@ -19,36 +31,17 @@
"form"
],
"devDependencies": {
- "babel": "~6.3.26",
- "babel-core": "~6.4.0",
- "babel-loader": "~6.2.1",
- "babel-plugin-add-module-exports": "~0.1.2",
- "babel-preset-es2015-loose": "~7.0.0",
- "babel-preset-react": "~6.3.13",
- "babel-preset-stage-1": "~6.3.13",
- "browser-sync": "~2.11.0",
- "colors": "^1.1.2",
- "console-polyfill": "~0.2.1",
- "cross-spawn": "^2.1.5",
- "es3ify-loader": "~0.1.0",
- "es5-shim": "~4.1.10",
- "git-rev": "~0.2.1",
- "gulp": "~3.9.0",
- "gulp-babel": "~6.1.1",
- "gulp-concat": "~2.6.0",
- "gulp-es3ify": "0.0.0",
- "gulp-just-replace": "~1.0.2",
- "gulp-less": "~3.0.3",
- "gulp-sourcemaps": "~1.5.2",
- "html-wiring": "~1.2.0",
- "inquirer": "^0.12.0",
- "kuma-base": "~1.0.1",
- "react": "~0.14.0",
- "react-dom": "~0.14.0",
+ "console-polyfill": "^0.2.2",
+ "es5-shim": "^4.5.8",
+ "expect.js": "~0.3.1",
+ "kuma-base": "1.x",
+ "react": "0.14.x",
+ "react-addons-test-utils": "0.14.x",
+ "react-dom": "0.14.x",
"uxcore-form": "~1.3.11",
- "uxcore-kuma": "~2.0.0",
- "uxcore-validator": "~0.2.0",
- "webpack": "^1.10.5"
+ "uxcore-kuma": "2.x",
+ "uxcore-tools": "0.2.x",
+ "uxcore-validator": "~0.2.0"
},
"dependencies": {
"classnames": "^2.1.2",
diff --git a/src/InputFormField.js b/src/InputFormField.js
index a824764..caba981 100644
--- a/src/InputFormField.js
+++ b/src/InputFormField.js
@@ -246,7 +246,9 @@ class InputFormField extends FormField {
}
}
else if (mode == Constants.MODE.VIEW) {
- arr.push({me.state.formatValue})
+ arr.push(
+ {me.props.renderView(me.state.formatValue)}
+ )
}
return arr;
}
@@ -259,6 +261,7 @@ InputFormField.propTypes = assign({}, FormField.propTypes, {
onBlur: React.PropTypes.func,
onFocus: React.PropTypes.func,
onKeyDown: React.PropTypes.func,
+ renderView: React.PropTypes.func,
validateOnBlur: React.PropTypes.bool,
autoTrim: React.PropTypes.bool,
inputType: React.PropTypes.string
@@ -267,6 +270,7 @@ InputFormField.defaultProps = assign({}, FormField.defaultProps, {
onBlur: () => {},
onFocus: () => {},
onKeyDown: () => {},
+ renderView: (value) => {return value;},
validateOnBlur: false,
inputType: 'text'
});
diff --git a/tests/InputFormField.spec.js b/tests/InputFormField.spec.js
new file mode 100644
index 0000000..70fa3fb
--- /dev/null
+++ b/tests/InputFormField.spec.js
@@ -0,0 +1,9 @@
+import expect from 'expect.js';
+import React from 'react';
+import ReactDOM from 'react-dom';
+import TestUtils, { Simulate } from 'react-addons-test-utils';
+import InputFormField from '../src';
+
+describe('InputFormField', () => {
+
+});
\ No newline at end of file
diff --git a/tests/index.js b/tests/index.js
new file mode 100644
index 0000000..d671a52
--- /dev/null
+++ b/tests/index.js
@@ -0,0 +1,6 @@
+/**
+ * only require other specs here
+ */
+
+ const req = require.context('.', false, /\.spec\.js$/);
+ req.keys().forEach(req);
\ No newline at end of file
diff --git a/webpack.dev.js b/webpack.dev.js
deleted file mode 100644
index c012da6..0000000
--- a/webpack.dev.js
+++ /dev/null
@@ -1,75 +0,0 @@
-var fs = require('fs');
-var webpack = require('webpack');
-
-// 扫描uxcore组件目录下的所有module
-function getUxcoreModuleAlias() {
- var alias = {};
-
- // 判断是否存在uxcore目录
- if (!fs.existsSync('./uxcore')) return alias;
-
- var modules = fs.readdirSync('./uxcore');
- modules.forEach(function (name) {
- alias[name] = [process.cwd(), 'uxcore', name, 'src'].join('/');
- });
- return alias;
-}
-
-module.exports = {
- cache: false,
- entry: {
- demo: './demo/index'
- },
- output: {
- path: './dist',
- filename: "[name].js",
- sourceMapFilename: "[name].js.map"
- },
- devtool: '#source-map', // 这个配置要和output.sourceMapFilename一起使用
- module: {
- loaders: [
- {
- test: /\.js(x)*$/,
- // uxcore以外的modules都不需要经过babel解析
- exclude: function (path) {
- var isNpmModule = !!path.match(/node_modules/);
- var isUxcore = !!path.match(/node_modules[\/\\](@ali[\/\\])?uxcore/);
- return isNpmModule & !isUxcore;
- },
- loader: 'es3ify-loader'
- },
- {
-
- test: /\.js(x)*$/,
- // uxcore以外的modules都不需要经过babel解析
- exclude: function (path) {
- var isNpmModule = !!path.match(/node_modules/);
- var isUxcore = !!path.match(/node_modules[\/\\](@ali[\/\\])?uxcore/);
- return isNpmModule & !isUxcore;
- },
- loader: 'babel-loader',
- query: {
- presets: ['react', 'es2015-loose', 'stage-1'],
- plugins: [
- 'add-module-exports'
- ]
- }
- }
- ]
- },
- resolve: {
- alias: getUxcoreModuleAlias()
- },
- externals: {
- react: 'var React', // 相当于把全局的React作为模块的返回 module.exports = React;
- 'react-dom': 'var ReactDOM'
- },
- plugins: [
- new webpack.DefinePlugin({
- __LOCAL__: true, // 本地环境
- __DEV__: true, // 日常环境
- __PRO__: false // 生产环境
- }),
- new webpack.optimize.DedupePlugin()
- ]
-};
\ No newline at end of file