Browse Source

Merge branch 'dev' into carbon

Leopoldthecoder 8 years ago
parent
commit
1cecdbc057

+ 61 - 0
CHANGELOG.en-US.md

@@ -1,5 +1,66 @@
 ## Changelog
 
+### 1.4.0 Boron
+
+*2017-07-21*
+
+#### New features:
+- Message
+  - `message` attribute now supports VNode, #5463 (by @egyptik)
+- ColorPicker
+  - Added `active-change` event, #5775
+- Popover
+  - Added `open-delay` attribute, #5842 (by @kaungmyatlwin)
+- Table
+  - A third parameter `value` is passed to `formatter`, #5709 (by @haledeng)
+- Tree
+  - Added `disabled` attribute, #5937
+- Menu
+  - Added `collapse` attribute, #5941
+- Select
+  - Added `value-key` attribute, #5897
+
+#### Fixes:
+- DatePicker
+  - i18n failure for some texts, #5485
+  - returning a non-zero millisecond value when initial value is empty, #5663
+  - `disabledDate` affecting undesired date, #4946 (by @liyangworld)
+- Steps
+  - style problems when a step is dynamically added or removed, #5456 (by @elfman)
+- Table
+  - highlight row misplaced when an expandable Table has fixed table columns, #5471 (by @elfman)
+  - `classList` not supported in some browsers, #5613 (by @flynntsc)
+- Select
+  - single Select unable to scroll to the selected item when the dropdown menu pops up, #5564(by @wacky6)
+- Radio
+  - border radius lost in RadioGroups with only one Radio, #5646 (by @YYvanYang)
+- Upload
+  - unable to reselect previously deleted file when `auto-upload` is false, #5706
+  - delete button still visible and functioning when `disabled`, #5841
+  - compatibility issue with Vue 2.4 `key`, #5872
+- MessageBox
+  - clicking cancel buttons getting resolved when not invoked as a `confirm` or `prompt`, #5658
+- Rate
+  - active icons not reflecting decimal part of initial value, #5785
+- Pagination
+  - compatibility issue of total page display with vue-i18n@6.x, #5796 (by @mario56)
+  - apostrophe incorrectly showing up when current page is one page less than total page, #5861 (by @openks)
+- Loading
+  - style problems when bound to invisible elements, #5649 (by @xiongzixiao)
+- Cascader
+  - text in the input box not vertically aligned, #5819 (by @jianzhi92)
+- Tree
+  - `setCheckedKeys` and `setCheckedNodes` in lazy mode, #5937
+  - loading all descendent nodes when a parent node is checked in lazy mode, #5963
+- Form
+  - label named slot not working when `label` is not assigned on FormItem, #5921
+- Tooltip
+  - not working in Vue 2.4.x when the triggering element is a custom component, #5916
+
+#### Breaking changes:
+- Select
+  - when value is an object, `value-key` is required as its unique identity key, #5897
+
 ### 1.3.7
 
 *2017-06-18*

+ 61 - 0
CHANGELOG.zh-CN.md

@@ -1,5 +1,66 @@
 ## 更新日志
 
+### 1.4.0 Boron
+*2017-07-21*
+
+#### 新特性:
+- Message
+  - `message` 属性支持 VNode,#5463(by @egyptik)
+- ColorPicker
+  - 新增 `active-change` 事件,#5775
+- Popover
+  - 新增 `open-delay` 属性,#5842(by @kaungmyatlwin)
+- Table
+  - `formatter` 新增 `value` 参数,#5709(by @haledeng)
+- Tree
+  - 新增 `disabled` 属性,#5937
+- Menu
+  - 新增 `collapse` 属性,#5941
+- Select
+  - 新增 `value-key` 属性,#5897
+
+#### 修复:
+- DatePicker
+  - 部分内部文案不受 i18n 控制的问题,#5485
+  - 初始值为空时,选择时间后的返回值毫秒部分不为零的问题,#5663
+  - `disabledDate` 范围被扩大的问题,#4946(by @liyangworld)
+- Steps
+  - 动态增减步骤后的样式错误,#5456(by @elfman)
+- Table
+  - 带有固定列且可展开时,鼠标 hover 高亮行错位的问题,#5471(by @elfman)
+  - 部分浏览器不支持 `classList` 的问题,#5613(by @flynntsc)
+- Select
+  - 单选时打开下拉框有时无法定位到已选中项的问题,#5564(by @wacky6)
+  - 多选时 Vue 2.4.x 报错的问题,#5897
+- Radio
+  - RadioGroup 内只有一个 Radio 时的圆角丢失问题,#5646(by @YYvanYang)
+- Upload
+  - `auto-upload` 为 false 时,无法选择之前删除的文件的问题,#5706
+  - `disabled` 时删除按钮仍可见并可操作的问题,#5841
+  - 兼容 Vue 2.4 `key` 不能是对象的问题,#5872
+- MessageBox
+  - 非 `confirm` 或 `prompt` 情况下点击取消按钮仍然被 resolve 的问题,#5658
+- Rate
+  - 初始值带有小数时,激活的 icon 不显示小数部分的问题,#5785
+- Pagination
+  - 总页数的 i18n 不与 vue-i18n@6.x 兼容的问题,#5796(by @mario56)
+  - 当前页为最大页数减一时,错误地显示省略号的问题,#5861(by @openks)
+- Loading
+  - 不可见元素绑定 Loading 时的样式错误,#5649(by @xiongzixiao)
+- Cascader
+  - 输入框中的文字未垂直居中的问题,#5819(by @jianzhi92)
+- Tree
+  - 在 lazy 模式下 `setCheckedKeys` 和 `setCheckedNodes` 方法的 bug,#5937
+  - 在 lazy 模式下勾选父级节点会一次性加载全部后代节点的问题,#5963
+- Form
+  - 未在 FormItem 上指定 `label` 时,label 的具名 slot 失效的问题,#5921
+- Tooltip
+  - Vue 2.4.x 下触发元素为自定义组件时不工作的问题,#5916
+
+#### 非兼容性更新:
+- Select
+  - 值为对象类型时,需要提供一个 `value-key` 作为唯一性标识,#5897
+
 ### 1.3.7
 *2017-06-18*
 

+ 1 - 1
examples/components/footer.vue

@@ -2,7 +2,7 @@
   <footer class="footer">
     <div class="container">
       <div class="footer-main">
-        <p class="footer-main-title">Element {{ version }} Beryllium</p>
+        <p class="footer-main-title">Element {{ version }} Boron</p>
         <a href="https://github.com/ElemeFE/element/issues" class="footer-main-link" target="_blank">{{ langConfig.feedback }}</a>
         <a :href="`https://github.com/ElemeFE/element/blob/master/.github/CONTRIBUTING.${ lang }.md`" class="footer-main-link" target="_blank">{{ langConfig.contribution }}</a>
         <a :href="`https://eleme.github.io/element-react/#/${ lang }/quick-start`" class="footer-main-link" target="_blank">Element-React</a>

+ 8 - 8
examples/docs/en-US/form.md

@@ -17,7 +17,7 @@
           }
         }, 1000);
       };
-      var validaePass = (rule, value, callback) => {
+      var vaildatePass = (rule, value, callback) => {
         if (value === '') {
           callback(new Error('Please input the password'));
         } else {
@@ -27,7 +27,7 @@
           callback();
         }
       };
-      var validaePass2 = (rule, value, callback) => {
+      var validatePass2 = (rule, value, callback) => {
         if (value === '') {
           callback(new Error('Please input the password again'));
         } else if (value !== this.ruleForm2.pass) {
@@ -101,10 +101,10 @@
         },
         rules2: {
           pass: [
-            { validator: validaePass, trigger: 'blur' }
+            { validator: validatePass, trigger: 'blur' }
           ],
           checkPass: [
-            { validator: validaePass2, trigger: 'blur' }
+            { validator: validatePass2, trigger: 'blur' }
           ],
           age: [
             { validator: checkAge, trigger: 'blur' }
@@ -549,7 +549,7 @@ Form component allows you to verify your data, helping you find and correct erro
           }
         }, 1000);
       };
-      var validaePass = (rule, value, callback) => {
+      var validatePass = (rule, value, callback) => {
         if (value === '') {
           callback(new Error('Please input the password'));
         } else {
@@ -559,7 +559,7 @@ Form component allows you to verify your data, helping you find and correct erro
           callback();
         }
       };
-      var validaePass2 = (rule, value, callback) => {
+      var validatePass2 = (rule, value, callback) => {
         if (value === '') {
           callback(new Error('Please input the password again'));
         } else if (value !== this.ruleForm2.pass) {
@@ -576,10 +576,10 @@ Form component allows you to verify your data, helping you find and correct erro
         },
         rules2: {
           pass: [
-            { validator: validaePass, trigger: 'blur' }
+            { validator: validatePass, trigger: 'blur' }
           ],
           checkPass: [
-            { validator: validaePass2, trigger: 'blur' }
+            { validator: validatePass2, trigger: 'blur' }
           ],
           age: [
             { validator: checkAge, trigger: 'blur' }

+ 1 - 1
examples/versions.json

@@ -1 +1 @@
-{"1.0.9":"1.0","1.1.6":"1.1","1.2.9":"1.2","1.3.7":"1.3","1.4.0-beta.1":"1.4"}
+{"1.0.9":"1.0","1.1.6":"1.1","1.2.9":"1.2","1.3.7":"1.3","1.4.0":"1.4"}

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "element-ui",
-  "version": "1.4.0-beta.1",
+  "version": "1.4.0",
   "description": "A Component Library for Vue.js.",
   "main": "lib/element-ui.common.js",
   "files": [

+ 1 - 1
packages/date-picker/src/panel/time-select.vue

@@ -22,7 +22,7 @@
   import scrollIntoView from 'element-ui/src/utils/scroll-into-view';
 
   const parseTime = function(time) {
-    const values = ('' || time).split(':');
+    const values = (time || '').split(':');
     if (values.length >= 2) {
       const hours = parseInt(values[0], 10);
       const minutes = parseInt(values[1], 10);

+ 1 - 1
packages/theme-default/package.json

@@ -1,6 +1,6 @@
 {
   "name": "element-theme-default",
-  "version": "1.4.0-beta.1",
+  "version": "1.4.0",
   "description": "Element component default theme.",
   "main": "lib/index.css",
   "style": "lib/index.css",

+ 20 - 3
packages/tree/src/model/node.js

@@ -42,6 +42,22 @@ const reInitChecked = function(node) {
   }
 };
 
+const initLazyLoadChild = node => {
+  const childNodes = node.childNodes;
+  if (node.checked) {
+    for (let i = 0, j = childNodes.length; i < j; i++) {
+      const child = childNodes[i];
+      if (!child.disabled) {
+        child.checked = true;
+      }
+    }
+  }
+
+  const parent = node.parent;
+  if (!parent || parent.level === 0) return;
+  reInitChecked(parent);
+};
+
 const getPropertyFromData = function(node, prop) {
   const props = node.store.props;
   const data = node.data || {};
@@ -245,6 +261,7 @@ export default class Node {
     if (this.shouldLoadData()) {
       this.loadData((data) => {
         if (data instanceof Array) {
+          initLazyLoadChild(this);
           done();
         }
       });
@@ -290,8 +307,8 @@ export default class Node {
       value = false;
     }
 
-    const handleDescendants = () => {
-      if (deep) {
+    const handleDescendants = (lazy) => {
+      if (deep && !lazy) {
         const childNodes = this.childNodes;
         for (let i = 0, j = childNodes.length; i < j; i++) {
           const child = childNodes[i];
@@ -310,7 +327,7 @@ export default class Node {
     if (!this.store.checkStrictly && this.shouldLoadData()) {
       // Only work on lazy load data.
       this.loadData(() => {
-        handleDescendants();
+        handleDescendants(true);
       }, {
         checked: value !== false
       });

+ 1 - 0
packages/tree/src/tree-node.vue

@@ -19,6 +19,7 @@
         v-model="node.checked"
         :indeterminate="node.indeterminate"
         :disabled="!!node.disabled"
+        @click.native.stop
         @change="handleCheckChange">
       </el-checkbox>
       <span

+ 1 - 1
packages/upload/README.md

@@ -36,7 +36,7 @@ Vue.component('el-upload', ElUpload)
 | data | 可选参数, 上传时附带的额外参数 | object | — | — |
 | name | 可选参数, 上传的文件字段名 | string | — | file |
 | with-credentials | 支持发送 cookie 凭证信息 | boolean | — | false |
-| show-upload-list | 是否显示已上传文件列表 | boolean | — | true |
+| show-file-list | 是否显示已上传文件列表 | boolean | — | true |
 | type | 上传控件类型 | string | select,drag | select |
 | accept | 可选参数, 接受上传的[文件类型](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept)(thumbnail-mode 模式下此参数无效)| string | — | — |
 | on-preview | 可选参数, 点击已上传的文件链接时的钩子, 可以通过 file.response 拿到服务端返回数据 | function(file) | — | — |

+ 1 - 1
src/index.js

@@ -158,7 +158,7 @@ if (typeof window !== 'undefined' && window.Vue) {
 };
 
 module.exports = {
-  version: '1.4.0-beta.1',
+  version: '1.4.0',
   locale: locale.use,
   i18n: locale.i18n,
   install,