Browse Source

Merge remote-tracking branch 'eleme/dev' into carbon

# Conflicts:
#	CHANGELOG.en-US.md
#	CHANGELOG.zh-CN.md
#	examples/app.vue
#	examples/index.tpl
#	examples/versions.json
#	package.json
#	packages/dropdown/src/dropdown.vue
#	packages/theme-default/package.json
#	packages/theme-default/src/date-picker/date-picker.css
#	src/index.js
Leopoldthecoder 7 years ago
parent
commit
6d3636fbac

+ 123 - 116
CHANGELOG.en-US.md

@@ -6,42 +6,42 @@
 
 #### New features
 - General
-  - Added TypeScript typings
-  - All existing icons are redesigned. Some new icons are added.
-  - To help you migrate from Element 1.x, we added some console warnings against deprecated APIs. When you use a
-  removed or renamed attribute or event in your project, you'll get a warning like this:
-  ```
-  [Element Migrating][ElSwitch][Attribute]: on-color is renamed to active-color.
-  ```
-  - Added a series of breakpoint-based utility classes that hide elements when the viewport size meets certain conditions
+- Added TypeScript typings
+- All existing icons are redesigned. Some new icons are added.
+- To help you migrate from Element 1.x, we added some console warnings against deprecated APIs. When you use a
+removed or renamed attribute or event in your project, you'll get a warning like this:
+```
+[Element Migrating][ElSwitch][Attribute]: on-color is renamed to active-color.
+```
+- Added a series of breakpoint-based utility classes that hide elements when the viewport size meets certain conditions
 - Layout
-  - Added a new breakpoint `xl` for viewport wider than 1920px
+- Added a new breakpoint `xl` for viewport wider than 1920px
 - Table
-  - Added `span-method` attribute for merging cells
-  - Added `clearSort` method to clear sorting programmatically
-  - Added `clearFilter` method to clear filter programmatically
-  - For expandable rows, when a row is expanded, a `.expanded` class will be added to its class list, so that you can customize its styles
+- Added `span-method` attribute for merging cells
+- Added `clearSort` method to clear sorting programmatically
+- Added `clearFilter` method to clear filter programmatically
+- For expandable rows, when a row is expanded, a `.expanded` class will be added to its class list, so that you can customize its styles
 - DatePicker
-  - Added `unlink-panels` attribute to unlink the two date panels when selecting a date range
+- Added `unlink-panels` attribute to unlink the two date panels when selecting a date range
 - Select
-  - Added `reserve-keyword` attribute for reserving current search keyword after selecting an option
+- Added `reserve-keyword` attribute for reserving current search keyword after selecting an option
 
 #### Fixes
 - Table
-  - Now `header-align` of TableColumn works properly
-  - Fixed a bug that Table remains hiding when its parent element appears from `display: none`
-  - Fixed Table expanding its width when its parent element has `display: flex`
-  - Fixed a bug that fixed columns of a Table with `append` slot would disappear when data is dynamically fetched
-  - Fixed `expand-row-keys` attribute not working with initial value
-  - Fixed filter failing when `data` updates
-  - Fixed a calculation error of fixed columns layout with grouped headers
+- Now `header-align` of TableColumn works properly
+- Fixed a bug that Table remains hiding when its parent element appears from `display: none`
+- Fixed Table expanding its width when its parent element has `display: flex`
+- Fixed a bug that fixed columns of a Table with `append` slot would disappear when data is dynamically fetched
+- Fixed `expand-row-keys` attribute not working with initial value
+- Fixed filter failing when `data` updates
+- Fixed a calculation error of fixed columns layout with grouped headers
 
 #### Breaking changes
 - Switch
-  - Attributes starting with `on-*` will be parsed to events in JSX, making all `on-*` attributes of Switch not
+- Attributes starting with `on-*` will be parsed to events in JSX, making all `on-*` attributes of Switch not
 able to work in JSX. So `on-*` attributes are renamed to `active-*`, and accordingly `off-*` attributes are renamed to `inactive-*`. This change affects the following attributes: `on-icon-class`, `off-icon-class`, `on-text`, `off-text`, `on-color`, `off-color`, `on-value`, `off-value`
 - Table
-  - `sort-method` now aligns with `Array.sort`. It should return a number instead of a boolean
+- `sort-method` now aligns with `Array.sort`. It should return a number instead of a boolean
 
 ### 2.0.0-alpha.3
 
@@ -49,38 +49,38 @@ able to work in JSX. So `on-*` attributes are renamed to `active-*`, and accordi
 
 #### New features
 - General
-  - Configure component sizes globally. Now when you import Element, you can add a global config object with a `size` prop to configure default sizes for all components. For fully import:
-  ```JS
-  import Vue from 'vue'
-  import Element from 'element-ui'
-  Vue.use(Element, { size: 'small' })
-  ```
-  For partial import:
-  ```JS
-  import Vue from 'vue'
-  import { Button } from 'element-ui'
-  
-  Vue.prototype.$ELEMENT = { size: 'small' }
-  Vue.use(Button)
-  ```
-  With the above config, the default size of all components that have `size` attribute will be 'small'.
+- Configure component sizes globally. Now when you import Element, you can add a global config object with a `size` prop to configure default sizes for all components. For fully import:
+```JS
+import Vue from 'vue'
+import Element from 'element-ui'
+Vue.use(Element, { size: 'small' })
+```
+For partial import:
+```JS
+import Vue from 'vue'
+import { Button } from 'element-ui'
+
+Vue.prototype.$ELEMENT = { size: 'small' }
+Vue.use(Button)
+```
+With the above config, the default size of all components that have `size` attribute will be 'small'.
 - Loading
-  - Now you can customize spinner icon and background color with `spinner` and `background` prop, #7390
+- Now you can customize spinner icon and background color with `spinner` and `background` prop, #7390
 - Autocomplete
-  - Added `debounce` attribute, #7413
+- Added `debounce` attribute, #7413
 - Upload
-  - Added `limit` and `on-exceed` attributes to limit the amount of files, #7405
+- Added `limit` and `on-exceed` attributes to limit the amount of files, #7405
 - Menu
-  - Added `open` and `close` methods to open and close SubMenu programmatically, #7412
+- Added `open` and `close` methods to open and close SubMenu programmatically, #7412
 - DatePicker
-  - Added `value-format` attribute to customize the format of the binding value, #7367
+- Added `value-format` attribute to customize the format of the binding value, #7367
 - TimePicker
-  - Added `arrow-control` attribute to spin the time with arrows #7438
+- Added `arrow-control` attribute to spin the time with arrows #7438
 - DateTimePicker
-  - Added `time-arrow-control` attribute to activate `arrow-control` of the nesting TimePicker, #7438
+- Added `time-arrow-control` attribute to activate `arrow-control` of the nesting TimePicker, #7438
 - Form
-  - Form and Form-item now have a `size` attribute. Inner components will inherit this size if not specified on themselves, #7428
-  - `validate` method will now return a promise if the callback is omitted, #7405
+- Form and Form-item now have a `size` attribute. Inner components will inherit this size if not specified on themselves, #7428
+- `validate` method will now return a promise if the callback is omitted, #7405
 
 #### Fixes
 - Fixed the console warning `Injection "elFormItem" not found` of some components
@@ -106,121 +106,129 @@ able to work in JSX. So `on-*` attributes are renamed to `active-*`, and accordi
 
 #### New features
 - General
-  - A new theme: `theme-chalk`
-  - Accessibility of the following components are improved: Alert, AutoComplete, Breadcrumb, Button, Checkbox, Collapse, Input, InputNumber, Menu, Progress, Radio, Rate, Slider, Switch, Upload
-  - Layout components: Container, Header, Aside, Main, Footer
+- A new theme: `theme-chalk`
+- Accessibility of the following components are improved: Alert, AutoComplete, Breadcrumb, Button, Checkbox, Collapse, Input, InputNumber, Menu, Progress, Radio, Rate, Slider, Switch, Upload
+- Layout components: Container, Header, Aside, Main, Footer
 - Button
-  - Added `round` attribute. It's used for round-cornered Buttons #6643
+- Added `round` attribute. It's used for round-cornered Buttons #6643
 - TimeSelect
-  - Now can be navigated by `Up` and `Down`, and hitting `Enter` selects the time #6023
+- Now can be navigated by `Up` and `Down`, and hitting `Enter` selects the time #6023
 - TimePicker
-  - Now can be navigated by arrow keys, and hitting `Enter` selects the time #6050
-  - Added `start-placeholder` and `end-placeholder`. They're placeholders for the two input boxes in range mode #7169
+- Now can be navigated by arrow keys, and hitting `Enter` selects the time #6050
+- Added `start-placeholder` and `end-placeholder`. They're placeholders for the two input boxes in range mode #7169
 - Tree
-  - Now child nodes don't render before the first expand #6257
-  - Added `check-descendants` attribute. It determines if child nodes are checked when checking their parent node
+- Now child nodes don't render before the first expand #6257
+- Added `check-descendants` attribute. It determines if child nodes are checked when checking their parent node
 in `lazy` mode #6235
 - Tag
-  - Added `size` attribute #7203
+- Added `size` attribute #7203
 - Datepicker
-  - Now `timeFormat` can format the TimePicker when type is set to `datetimerange` #6052
-  - Added `start-placeholder` and `end-placeholder`. They're placeholders for the two input boxes in range mode #7169
+- Now `timeFormat` can format the TimePicker when type is set to `datetimerange` #6052
+- Added `start-placeholder` and `end-placeholder`. They're placeholders for the two input boxes in range mode #7169
 - MessageBox
-  - Added `closeOnHashChange` attribute #6043
-  - Added `center` attribute so that the content can be centered #7029
-  - Added `roundButton` attribute to display round Buttons #7029
-  - Added `dangerouslyUseHTMLString` attribute. When set to `true`, `message` will be parsed as HTML string<sup>*</sup> #6043
+- Added `closeOnHashChange` attribute #6043
+- Added `center` attribute so that the content can be centered #7029
+- Added `roundButton` attribute to display round Buttons #7029
+- Added `dangerouslyUseHTMLString` attribute. When set to `true`, `message` will be parsed as HTML string<sup>*</sup> #6043
 - Dialog
-  - Added `width`、`fullscreen`、`append-to-body` attributes. Now Dialog can be nested
-  - Added `center` attribute so that the content can be centered #7042
-  - Added `focus-after-closed`、`focus-after-open` to improve accessibility #6511
+- Added `width`、`fullscreen`、`append-to-body` attributes. Now Dialog can be nested
+- Added `center` attribute so that the content can be centered #7042
+- Added `focus-after-closed`、`focus-after-open` to improve accessibility #6511
 - ColorPicker
-  - Now you can type colors in the input box #6167
-  - Added `size` and `disabled` attributes #7026
+- Now you can type colors in the input box #6167
+- Added `size` and `disabled` attributes #7026
 - Message
-  - Now color of the icons can be overridden by CSS #6207
-  - Added `dangerouslyUseHTMLString` attribute. When set to `true`, `message` will be parsed as HTML string<sup>*</sup> #6207
-  - Added `center` attribute so that the content can be centered #6875
+- Now color of the icons can be overridden by CSS #6207
+- Added `dangerouslyUseHTMLString` attribute. When set to `true`, `message` will be parsed as HTML string<sup>*</sup> #6207
+- Added `center` attribute so that the content can be centered #6875
 - Notification
-  - Added `position` attribute to configure where Notification pops up #6231
-  - Added `dangerouslyUseHTMLString` attribute. When set to `true`, `message` will be parsed as HTML string<sup>*</sup> #6231
-  - Added `showClose` attribute to hide the close button #6402
+- Added `position` attribute to configure where Notification pops up #6231
+- Added `dangerouslyUseHTMLString` attribute. When set to `true`, `message` will be parsed as HTML string<sup>*</sup> #6231
+- Added `showClose` attribute to hide the close button #6402
 - Rate
-  - Added `show-score` attribute to determine if current score is displayed #6295
+- Added `show-score` attribute to determine if current score is displayed #6295
 - Tabs
-  - Added `tab-position` attribute #6096
+- Added `tab-position` attribute #6096
 - Radio
-  - Improved accessibility #6101
-  - Added `border` and `size` attributes #6690
+- Improved accessibility #6101
+- Added `border` and `size` attributes #6690
 - Checkbox
-  - Added `border` and `size` attributes #6690
+- Added `border` and `size` attributes #6690
 - Alert
-  - Added `center` attribute so that the content can be centered #6876
+- Added `center` attribute so that the content can be centered #6876
 - Menu
-  - Added `background-color`, `text-color` and `active-text-color` attributes #7064
+- Added `background-color`, `text-color` and `active-text-color` attributes #7064
 - Form
-  - Added `inline-message` attribute to determine if the validation message is displayed in inline style #7032
-  - Added `status-icon` attribute to display a feedback icon when validated #7032
+- Added `inline-message` attribute to determine if the validation message is displayed in inline style #7032
+- Added `status-icon` attribute to display a feedback icon when validated #7032
 - Input
-  - Added `suffix` and `prefix` named slots, `suffixIcon` and `prefixIcon` attributes to add contents inside the input box #7032
+- Added `suffix` and `prefix` named slots, `suffixIcon` and `prefixIcon` attributes to add contents inside the input box #7032
 - Breadcrumb
-  - Added `separator-class` attribute to support icons as item separators #7203
+- Added `separator-class` attribute to support icons as item separators #7203
 - Steps
-  - Added `simple` attribute to activate simple-styled Steps #7274
+- Added `simple` attribute to activate simple-styled Steps #7274
 - Pagination
-  - Added `prev-text` and `next-text` attributes to customize texts of prev page and next page #7005
+- Added `prev-text` and `next-text` attributes to customize texts of prev page and next page #7005
 
 #### Bug fixes
 - DatePicker
-  - Fixed `v-model` returning the second day of the selected week in week mode #6038
-  - Fixed the first input being cleared in `daterange` type #6021
+- Fixed `v-model` returning the second day of the selected week in week mode #6038
+- Fixed the first input being cleared in `daterange` type #6021
 - DateTimePicker
-  - Fixed DateTimePicker and TimePicker affecting each other when picked #6090
-  - Fixed hour and second can be beyond limit when selecting time #6076
+- Fixed DateTimePicker and TimePicker affecting each other when picked #6090
+- Fixed hour and second can be beyond limit when selecting time #6076
 - TimePicker
-  - Fixed `v-model` not update correctly when blurred #6023
+- Fixed `v-model` not update correctly when blurred #6023
 - Dialog
-  - Fixed texts having blurry edges when opening and closing nesting dropdowns #6088
+- Fixed texts having blurry edges when opening and closing nesting dropdowns #6088
 - Select
-  - Improved performance. Now Vue dev-tool won't crash when a large number of Selects are destroyed #6151
+- Improved performance. Now Vue dev-tool won't crash when a large number of Selects are destroyed #6151
 
 #### Breaking changes
 - General
-  - Removed `theme-default`
-  - `change` event of form components and `current-change` event of Pagination now only trigger on user interaction
-  - `size` attribute of Button and form components can no longer be set to `large`. Now they accept `medium`, `small` and `mini`
-  - To facilitate the use of third-party icons, `icon` attribute of Button and Steps, `prefix-icon` and `suffix-icon` attributes of Input now require a full class name
+- Removed `theme-default`
+- `change` event of form components and `current-change` event of Pagination now only trigger on user interaction
+- `size` attribute of Button and form components can no longer be set to `large`. Now they accept `medium`, `small` and `mini`
+- To facilitate the use of third-party icons, `icon` attribute of Button and Steps, `prefix-icon` and `suffix-icon` attributes of Input now require a full class name
 - Dialog
-  - Removed `size` attribute. Now the size of Dialog can be configured by `width` and `fullscreen`
-  - Now the visibility of Dialog cannot be controlled by `v-model`
+- Removed `size` attribute. Now the size of Dialog can be configured by `width` and `fullscreen`
+- Now the visibility of Dialog cannot be controlled by `v-model`
 - Rate
-  - `text-template` is renamed to `score-template`
+- `text-template` is renamed to `score-template`
 - Dropdown
-  - `menu-align` is renamed to `placement`. Now it supports more positions
+- `menu-align` is renamed to `placement`. Now it supports more positions
 - Transfer
-  - `footer-format` is renamed to `format`
+- `footer-format` is renamed to `format`
 - Switch
-  - `on-text` and `off-text` attributes now don't have default values
+- `on-text` and `off-text` attributes now don't have default values
 - Tag
-  - `type` attribute now accepts `success`, `info`, `warning` and `danger`
-  - `close-transition` is renamed to `disable-transitions`
+- `type` attribute now accepts `success`, `info`, `warning` and `danger`
+- `close-transition` is renamed to `disable-transitions`
 - Menu
-  - Removed `theme` attribute. The color of Menu can be configured using `background-color`, `text-color` and `active-text-color`
+- Removed `theme` attribute. The color of Menu can be configured using `background-color`, `text-color` and `active-text-color`
 - Input
-  - Removed `icon` attribute. Now the suffix icon can be configured using `suffix-icon` attribute or `suffix` named slot
-  - Removed `on-icon-click` attribute and `click` event. Now to add click handler on icons, please use named slots
+- Removed `icon` attribute. Now the suffix icon can be configured using `suffix-icon` attribute or `suffix` named slot
+- Removed `on-icon-click` attribute and `click` event. Now to add click handler on icons, please use named slots
 - Autocomplete
-  - Removed `icon` and `on-icon-click` attributes. Now the icons can be configured using `prefix` or `suffix` named slot
-  - Removed `custom-item` attribute. Now the template of input suggestions can be customized using `scoped slot`
+- Removed `icon` and `on-icon-click` attributes. Now the icons can be configured using `prefix` or `suffix` named slot
+- Removed `custom-item` attribute. Now the template of input suggestions can be customized using `scoped slot`
 - Table
-  - Removed support for customizing column template using `inline-template`
+- Removed support for customizing column template using `inline-template`
 - Steps
-  - Removed `center` attribute
-  - Now the Steps will fill its parent container by default
+- Removed `center` attribute
+- Now the Steps will fill its parent container by default
 
 ##
 <i><sup>*</sup> Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to [XSS attacks](https://en.wikipedia.org/wiki/Cross-site_scripting). So when `dangerouslyUseHTMLString` is on, please make sure the content of `message` is trusted, and **never** assign `message` to user-provided content.</i>
 
+### 1.4.8
+
+*2017-10-24*
+
+- Fixed SubMenu retracting when moving the mouse rapidly on the SubMenu of collapsed Menu, #7579
+- Fixed hidden last shortcut of DateTimePicker when the shortcut menu is long, #7567 (by @DuLinRain)
+- Added `show-timeout` and `hide-timeout` attributes for Dropdown, #7621 (by @phongkt-dev)
+
 ### 1.4.7
 
 *2017-10-16*
@@ -228,7 +236,6 @@ in `lazy` mode #6235
 - Fixed compatibility of Autocomplete and Vue 2.5.x, #6942 (by @rennai)
 - Added `allow-focus` attribute for Switch, #7494 (by @breadadams)
 
-
 ### 1.4.6
 
 *2017-09-27*

+ 7 - 0
CHANGELOG.zh-CN.md

@@ -213,6 +213,13 @@
 ##
 <i><sup>*</sup> 在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 [XSS 攻击](https://en.wikipedia.org/wiki/Cross-site_scripting)。因此请在 `dangerouslyUseHTMLString` 打开的情况下,确保 `message` 的内容是可信的,**永远不要**将用户提交的内容赋值给 `message` 属性。</i>
 
+### 1.4.8
+*2017-10-24*
+
+- 修复鼠标在折叠的 Menu 子菜单中快速移动时会将菜单收起的问题,#7579
+- 修复 DateTimePicker 的快捷菜单过长时,最后一项会被隐藏的问题,#7567(by @DuLinRain)
+- 新增 Dropdown 的 `show-timeout` 和 `hide-timeout` 属性,#7621(by @phongkt-dev)
+
 ### 1.4.7
 *2017-10-16*
 

+ 3 - 3
README.md

@@ -18,9 +18,9 @@
 
 > A Vue.js 2.0 UI Toolkit for Web.
 
-<a target='_blank' rel='nofollow' href='https://app.codesponsor.io/link/bD3dKbdDE2F7Ky9LUN1kjTFK/ElemeFE/element'>
-  <img alt='Sponsor' width='888' height='68' src='https://app.codesponsor.io/embed/bD3dKbdDE2F7Ky9LUN1kjTFK/ElemeFE/element.svg' />
-</a >
+<!--<a target='_blank' rel='nofollow' href='https://app.codesponsor.io/link/bD3dKbdDE2F7Ky9LUN1kjTFK/ElemeFE/element'>-->
+  <!--<img alt='Sponsor' width='888' height='68' src='https://app.codesponsor.io/embed/bD3dKbdDE2F7Ky9LUN1kjTFK/ElemeFE/element.svg' />-->
+<!--</a >-->
 
 ## Links
 - [Home Page](http://element.eleme.io/)

+ 2 - 0
examples/docs/en-US/dropdown.md

@@ -328,6 +328,8 @@ Besides default size, Dropdown component provides three additional sizes for you
 | placement    | placement of pop menu | string | top/top-start/top-end/bottom/bottom-start/bottom-end  | bottom-end |
 | trigger       | how to trigger     | string  |    hover/click  |  hover |
 | hide-on-click | whether to hide menu after clicking menu-item     | boolean          | — | true |
+| show-timeout | Delay time before show a dropdown     | number          | — | 250 |
+| hide-timeout | Delay time before hide a dropdown     | number          | — | 150 |
 
 ### Dropdown Events
 | Event Name | Description | Parameters |

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

@@ -407,7 +407,7 @@ Depending on your design, there are several different ways to align your label e
 
 Form component allows you to verify your data, helping you find and correct errors.
 
-:::demo Just add the `rule` attribute for `Form` component, pass validation rules, and set `prop` attribute for `Form-Item` as a specific key that needs to be validated. See more information at [async-validator](https://github.com/yiminghe/async-validator).
+:::demo Just add the `rules` attribute for `Form` component, pass validation rules, and set `prop` attribute for `Form-Item` as a specific key that needs to be validated. See more information at [async-validator](https://github.com/yiminghe/async-validator).
 
 ```html
 <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">

+ 2 - 0
examples/docs/zh-CN/dropdown.md

@@ -334,6 +334,8 @@ Dropdown 组件提供除了默认值以外的三种尺寸,可以在不同场
 | placement    | 菜单弹出位置     | string | top/top-start/top-end/bottom/bottom-start/bottom-end  | bottom-end |
 | trigger       | 触发下拉的行为     | string          | hover, click  | hover |
 | hide-on-click | 是否在点击菜单项后隐藏菜单     | boolean          | — | true |
+| show-timeout  | 展开下拉菜单的延时     | number          | — | 250 |
+| hide-timeout  | 收起下拉菜单的延时     | number          | — | 150 |
 
 ### Dropdown Events
 | 事件名称      | 说明    | 回调参数      |

+ 1 - 1
examples/docs/zh-CN/form.md

@@ -399,7 +399,7 @@
 
 在防止用户犯错的前提下,尽可能让用户更早地发现并纠正错误。
 
-::: demo Form 组件提供了表单验证的功能,只需要通过 `rule` 属性传入约定的验证规则,并 Form-Item 的 `prop` 属性设置为需校验的字段名即可。校验规则参见 [async-validator](https://github.com/yiminghe/async-validator)
+::: demo Form 组件提供了表单验证的功能,只需要通过 `rules` 属性传入约定的验证规则,并 Form-Item 的 `prop` 属性设置为需校验的字段名即可。校验规则参见 [async-validator](https://github.com/yiminghe/async-validator)
 ```html
 <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
   <el-form-item label="活动名称" prop="name">

+ 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.7":"1.4","2.0.0-beta.1":"2.0"}
+{"1.0.9":"1.0","1.1.6":"1.1","1.2.9":"1.2","1.3.7":"1.3","1.4.8":"1.4","2.0.0-beta.1":"2.0"}

+ 10 - 2
packages/dropdown/src/dropdown.vue

@@ -46,6 +46,14 @@
       },
       visibleArrow: {
         default: true
+      },
+      showTimeout: {
+        type: Number,
+        default: 250
+      },
+      hideTimeout: {
+        type: Number,
+        default: 150
       }
     },
 
@@ -88,14 +96,14 @@
         clearTimeout(this.timeout);
         this.timeout = setTimeout(() => {
           this.visible = true;
-        }, 250);
+        }, this.showTimeout);
       },
       hide() {
         if (this.triggerElm.disabled) return;
         clearTimeout(this.timeout);
         this.timeout = setTimeout(() => {
           this.visible = false;
-        }, 150);
+        }, this.hideTimeout);
       },
       handleClick() {
         if (this.triggerElm.disabled) return;

+ 0 - 78
test/unit/specs/table.spec.js

@@ -805,84 +805,6 @@ describe('Table', () => {
       }, DELAY);
     });
 
-    it('reserve-selection', done => {
-      const getData = function(page = 0) {
-        let id = 0;
-        const rows = [];
-        const row = () => {
-          return {
-            id: ++id + page * 10,
-            date: new Date().getTime()
-          };
-        };
-        let count = 10;
-
-        while (--count) {
-          rows.push(row());
-        }
-        return rows;
-      };
-      const vm = createVue({
-        template: `
-          <el-table ref="table" :row-key="rowKey" :data="testData" @selection-change="change">
-            <el-table-column type="selection" reserve-selection />
-            <el-table-column prop="id" label="id" />
-            <el-table-column prop="date" label="date" />
-          </el-table>
-        `,
-
-        created() {
-          this.testData = getData();
-        },
-
-        data() {
-          return { selected: [], testData: [] };
-        },
-
-        methods: {
-          rowKey(row) {
-            return row.id;
-          },
-
-          change(rows) {
-            this.selected = rows;
-          }
-        }
-      }, true);
-
-      setTimeout(_ => {
-        // click first
-        vm.$el.querySelectorAll('.el-checkbox')[1].click();
-
-        setTimeout(_ => {
-          expect(vm.$el.querySelectorAll('.el-checkbox__input.is-checked')).to.length(1);
-          // go to second page
-          vm.testData = getData(1);
-          setTimeout(_ => {
-             // expect no checked
-            expect(vm.$el.querySelectorAll('.el-checkbox__input.is-checked')).to.length(0);
-            // click first checkbox
-            vm.$el.querySelectorAll('.el-checkbox')[1].click();
-            vm.$el.querySelectorAll('.el-checkbox')[2].click();
-            setTimeout(_ => {
-              // back first page
-              vm.testData = getData();
-              setTimeout(_ => {
-                expect(vm.$el.querySelectorAll('.el-checkbox__input.is-checked')).to.length(1);
-                // clear
-                vm.$refs.table.clearSelection();
-                setTimeout(_ => {
-                  expect(vm.$el.querySelectorAll('.el-checkbox__input.is-checked')).to.length(0);
-                  destroyVM(vm);
-                  done();
-                }, DELAY);
-              }, DELAY);
-            }, DELAY);
-          }, DELAY);
-        }, DELAY);
-      }, DELAY);
-    });
-
     describe('type', () => {
       const createTable = function(type) {
         return createVue({