Răsfoiți Sursa

Merge branch 'master' into unittest

qingwei.li 8 ani în urmă
părinte
comite
4f732b1b02

+ 4 - 0
CHANGELOG.md

@@ -4,6 +4,10 @@
 
 *2016-XX-XX*
 
+- 修复 Form reset method 对日期控件不起效的问题
+- 修复 Dialog 和 Message Box 在 body 无溢出时错误地添加 padding-right 的问题
+- 修复 Message Box 的 prompt 在打开时会携带之前的验证状态的问题
+
 #### 非兼容性更新
 
 - 全屏 Loading 现在默认不再锁定屏幕滚动。如果需要的话,可添加 `lock` 修饰符

+ 1 - 1
LICENSE

@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016 element-ui
+Copyright (c) 2016 ElemeFE
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

+ 13 - 7
build/config.js

@@ -1,5 +1,6 @@
 var Components = require('../components.json');
 var path = require('path');
+var dependencies = require('../package.json').dependencies;
 var externals = {};
 
 Object.keys(Components).forEach(function(key) {
@@ -7,18 +8,16 @@ Object.keys(Components).forEach(function(key) {
   externals[`element-ui/packages/${key}/style.css`] = `element-ui/lib/${key}/style.css`;
 });
 
+Object.keys(dependencies).forEach(function (key) {
+  externals[key] = key;
+});
+
 externals['element-ui/src/utils/clickoutside'] = 'element-ui/lib/utils/clickoutside';
 externals['element-ui/src/utils/popper'] = 'element-ui/lib/utils/popper';
 externals['element-ui/src/utils/vue-popper'] = 'element-ui/lib/utils/vue-popper';
-externals['vue-popup'] = 'vue-popup';
 
 exports.externals = Object.assign({
-  vue: {
-    root: 'Vue',
-    commonjs: 'vue',
-    commonjs2: 'vue',
-    amd: 'vue'
-  }
+  vue: 'vue'
 }, externals);
 
 exports.alias = {
@@ -28,6 +27,13 @@ exports.alias = {
   'element-ui': path.resolve(__dirname, '../')
 };
 
+exports.vue = {
+  root: 'Vue',
+  commonjs: 'vue',
+  commonjs2: 'vue',
+  amd: 'vue'
+};
+
 exports.jsexclude = /node_modules|utils\/popper\.js|utils\/date.\js/;
 
 exports.postcss = function(webapck) {

+ 1 - 1
build/cooking.conf.js

@@ -9,7 +9,7 @@ cooking.set({
   moduleName: 'ELEMENT',
   extends: ['vue2'],
   alias: config.alias,
-  externals: { vue: config.externals.vue }
+  externals: { vue: config.vue }
 });
 
 cooking.add('output.filename', 'index.js');

+ 0 - 2
examples/docs/zh-cn/input.md

@@ -200,7 +200,6 @@
 ```html
 <el-input
   placeholder="请输入内容"
-  :number="true"
   v-model="input">
 </el-input>
 ```
@@ -636,7 +635,6 @@
 | disabled      | 禁用            | boolean         | — | false   |
 | size          | 输入框尺寸,只在 `type!="textarea"` 时有效      | string          | large, small, mini  | — |
 | icon          | 输入框尾部图标    | string          | — | — |
-| number        | 指定 model 值为 number 类型  |  boolean | — |  false   |
 | rows          | 输入框行数,只对 `type="textarea"` 有效  |  number | — |  2   |
 | autosize      | 自适应内容高度,只对 `type="textarea"` 有效,可传入对象,如,{ minRows: 2, maxRows: 6 }  |  boolean/object | — |  false   |
 

+ 1 - 1
examples/docs/zh-cn/message-box.md

@@ -143,7 +143,7 @@
         this.$prompt('请输入邮箱', '提示', {
           inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
           inputErrorMessage: '邮箱格式不正确'
-        }).then(value => {
+        }).then(({ value }) => {
           this.$message({
             type: 'success',
             message: '你的邮箱是: ' + value

+ 9 - 10
package.json

@@ -25,7 +25,7 @@
   },
   "repository": {
     "type": "git",
-    "url": "git@github.com:elemefe/element.git"
+    "url": "git@github.com:ElemeFE/element.git"
   },
   "homepage": "http://element.eleme.io",
   "keywords": [
@@ -35,17 +35,14 @@
   ],
   "license": "MIT",
   "bugs": {
-    "url": "https://github.com/elemefe/element/issues"
+    "url": "https://github.com/ElemeFE/element/issues"
   },
   "dependencies": {
     "async-validator": "^1.6.6",
-    "gulp": "^3.9.1",
-    "gulp-cssmin": "^0.1.7",
-    "gulp-postcss": "^6.1.1",
+    "object-assign": "^4.1.0",
     "object-equal": "^1.0.0",
-    "postcss-salad": "^1.0.5",
     "throttle-debounce": "^1.0.1",
-    "vue-popup": "^0.2.8",
+    "vue-popup": "^0.2.9",
     "wind-dom": "0.0.3"
   },
   "devDependencies": {
@@ -67,6 +64,9 @@
     "file-loader": "^0.9.0",
     "file-save": "^0.2.0",
     "gh-pages": "^0.11.0",
+    "gulp": "^3.9.1",
+    "gulp-cssmin": "^0.1.7",
+    "gulp-postcss": "^6.1.1",
     "highlight.js": "^9.3.0",
     "html-loader": "^0.4.3",
     "html-webpack-plugin": "^2.22.0",
@@ -87,10 +87,10 @@
     "markdown-it": "^6.1.1",
     "markdown-it-container": "^2.0.0",
     "mocha": "^3.1.1",
-    "object-assign": "^4.1.0",
     "phantomjs-prebuilt": "^2.1.13",
     "postcss": "^5.1.2",
     "postcss-loader": "^0.11.1",
+    "postcss-salad": "^1.0.5",
     "rimraf": "^2.5.4",
     "sinon": "^1.17.6",
     "sinon-chai": "^2.8.0",
@@ -103,7 +103,6 @@
     "vue-markdown-loader": "^0.5.1",
     "vue-router": "^2.0.0",
     "webpack": "^1.13.2",
-    "webpack-dev-server": "^1.15.1",
-    "wind-dom": "0.0.3"
+    "webpack-dev-server": "^1.15.1"
   }
 }

+ 14 - 6
packages/form/src/form-item.vue

@@ -78,7 +78,8 @@
         validateDisabled: false,
         validating: false,
         validator: {},
-        isRequired: false
+        isRequired: false,
+        initialValue: null
       };
     },
     methods: {
@@ -118,12 +119,9 @@
         if (Array.isArray(value) && value.length > 0) {
           this.validateDisabled = true;
           model[this.prop] = [];
-        } else if (typeof value === 'string' && value !== '') {
+        } else if (value) {
           this.validateDisabled = true;
-          model[this.prop] = '';
-        } else if (typeof value === 'number') {
-          this.validateDisabled = true;
-          model[this.prop] = 0;
+          model[this.prop] = this.initialValue;
         }
       },
       getRules() {
@@ -151,12 +149,22 @@
         }
 
         this.validate('change');
+      },
+      getInitialValue() {
+        var value = this.form.model[this.prop];
+        if (value === undefined) {
+          return value;
+        } else {
+          return JSON.parse(JSON.stringify(value));
+        }
       }
     },
     mounted() {
       if (this.prop) {
         this.dispatch('form', 'el.form.addField', [this]);
 
+        this.initialValue = this.getInitialValue();
+
         let rules = this.getRules();
 
         if (rules.length) {

+ 7 - 20
packages/input/src/input.vue

@@ -13,27 +13,9 @@
         <slot name="prepend"></slot>
       </div>
       <input
-        v-if="type === 'text'"
+        v-if="type !== 'textarea'"
         class="el-input__inner"
-        v-model="currentValue"
-        type="text"
-        :name="name"
-        :placeholder="placeholder"
-        :disabled="disabled"
-        :readonly="readonly"
-        :number="number"
-        :maxlength="maxlength"
-        :minlength="minlength"
-        :autocomplete="autoComplete"
-        ref="input"
-        @focus="handleFocus"
-        @blur="handleBlur"
-      >
-      <input
-        v-if="type === 'password'"
-        class="el-input__inner"
-        v-model="currentValue"
-        type="password"
+        :type="type"
         :name="name"
         :placeholder="placeholder"
         :disabled="disabled"
@@ -42,7 +24,9 @@
         :maxlength="maxlength"
         :minlength="minlength"
         :autocomplete="autoComplete"
+        :value="value"
         ref="input"
+        @input="handleInput"
         @focus="handleFocus"
         @blur="handleBlur"
       >
@@ -151,6 +135,9 @@
       },
       handleFocus(ev) {
         this.$emit('focus', ev);
+      },
+      handleInput(ev) {
+        this.currentValue = ev.target.value;
       }
     },
 

+ 2 - 0
packages/menu/src/menu.vue

@@ -46,6 +46,7 @@
     watch: {
       defaultActive(value) {
         this.activeIndex = value;
+        if (!this.menuItems[value]) return;
         let indexPath = this.menuItems[value].indexPath;
 
         this.handleSelect(value, indexPath);
@@ -97,6 +98,7 @@
       },
       openActiveItemMenus() {
         let index = this.activeIndex;
+        if (!this.menuItems[index]) return;
         if (index && this.mode === 'vertical') {
           let indexPath = this.menuItems[index].indexPath;
 

+ 7 - 3
packages/message-box/src/main.vue

@@ -140,19 +140,23 @@
     },
 
     watch: {
-      inputValue() {
-        if (this.$type === 'prompt') {
+      inputValue(val) {
+        if (this.$type === 'prompt' && val !== null) {
           this.validate();
         }
       },
 
       value(val) {
-        if (val && this.$type === 'prompt') {
+        if (this.$type !== 'prompt') return;
+        if (val) {
           setTimeout(() => {
             if (this.$refs.input && this.$refs.input.$el) {
               this.$refs.input.$el.querySelector('input').focus();
             }
           }, 500);
+        } else {
+          this.editorErrorMessage = '';
+          removeClass(this.$refs.input.$el.querySelector('input'), 'invalid');
         }
       }
     },