mirror of
https://gitee.com/ElemeFE/element.git
synced 2024-11-29 18:57:36 +08:00
Merge remote-tracking branch 'eleme/dev' into carbon
# Conflicts: # examples/app.vue # examples/docs/en-US/tree.md # examples/docs/zh-CN/tree.md # examples/versions.json # packages/select/src/select.vue # packages/theme-default/package.json
This commit is contained in:
commit
257473f305
@ -1,5 +1,28 @@
|
||||
## Changelog
|
||||
|
||||
### 1.4.6
|
||||
|
||||
*2017-09-27*
|
||||
|
||||
- Fixed Slider's button jumping to previous position when clicked, #7190
|
||||
- Fixed Tooltip `disabled` regression, #7198
|
||||
- Fixed Cascader not correctly filter options when `props` is set, #7225
|
||||
- Fixed an error when range typed DatePicker has an initial value of `[]`, #7233
|
||||
|
||||
### 1.4.5
|
||||
|
||||
*2017-09-24*
|
||||
|
||||
- Rate's `colors` attribute now supports dynamic updates, #6872 @lukaszb
|
||||
- Fixed Tree not highlighting tree node whose value of `node-key` is 0, #6917
|
||||
- Fixed initially disabled Dropdown not showing menu when it's enabled, #6969
|
||||
- Added `hide-after` attribute for Tooltip, #6401 @ryatziv
|
||||
- Fixed cancel button of TimePicker not cancel picked value when clicked, #7028
|
||||
- Added `selectWhenUnmatched` attribute for Autocomplete, #6428 @ryatziv
|
||||
- Fixed when `beforeUpload` of a file returns false, other files are aborted by Upload, #7077
|
||||
- Fixed disabled dates of DatePicker in month view and year view not displayed correctly in the west hemisphere, #7114
|
||||
- `default-value` of DatePicker now supports daterange type, #7073 @wacky6
|
||||
|
||||
### 1.4.4
|
||||
|
||||
*2017-09-05*
|
||||
|
@ -1,5 +1,26 @@
|
||||
## 更新日志
|
||||
|
||||
### 1.4.6
|
||||
*2017-09-27*
|
||||
|
||||
- 修复点击 Slider 的按钮会使其返回上一个位置的问题,#7190
|
||||
- 修复 Tooltip 无法正确切换 `disabled` 的问题,#7198
|
||||
- 修复 Cascader 的过滤功能在配置了 `props` 的情况下的异常问题,#7225
|
||||
- 修复 DatePicker 的范围选择在初始值为空数组时会报错的问题,#7233
|
||||
|
||||
### 1.4.5
|
||||
*2017-09-24*
|
||||
|
||||
- Rate 的 `colors` 属性现在可以动态更新了,#6872 @lukaszb
|
||||
- 修复 Tree 无法高亮 `node-key` 值为 0 的节点的问题,#6917
|
||||
- 修复初始状态被禁用的 Dropdown 在取消禁用后无法弹出下拉菜单的问题,#6969
|
||||
- Tooltip 新增 `hide-after` 属性,#6401 @ryatziv
|
||||
- 修复 TimePicker 取消按钮无法正确取消所选值的问题,#7028
|
||||
- Autocomplete 新增 `selectWhenUnmatched` 属性,#6428 @ryatziv
|
||||
- 修复 Upload 中某个文件的 `beforeUpload` 返回 `false` 时会错误地取消其他文件上传的问题,#7077
|
||||
- 修复 DatePicker 在西半球使用时月视图和年视图禁用日期显示错误的问题,#7114
|
||||
- DatePicker 的 `default-value` 属性支持 daterange 模式,#7073 @wacky6
|
||||
|
||||
### 1.4.4
|
||||
*2017-09-05*
|
||||
|
||||
|
10
README.md
10
README.md
@ -18,13 +18,9 @@
|
||||
|
||||
> A Vue.js 2.0 UI Toolkit for Web.
|
||||
|
||||
<p align="center">
|
||||
<b>Special thanks to the generous sponsorship by:</b>
|
||||
<br><br>
|
||||
<a href="https://laravist.com">
|
||||
<img width="300px" src="https://fuss10.elemecdn.com/4/87/c072c1651b0efd1c5cde39bc8b422png.png">
|
||||
</a>
|
||||
</p>
|
||||
<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/)
|
||||
|
BIN
examples/assets/images/button-d-cn.png
Normal file
BIN
examples/assets/images/button-d-cn.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.6 KiB |
BIN
examples/assets/images/button-d-en.png
Normal file
BIN
examples/assets/images/button-d-en.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.9 KiB |
BIN
examples/assets/images/button-l-cn.png
Normal file
BIN
examples/assets/images/button-l-cn.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
examples/assets/images/button-l-en.png
Normal file
BIN
examples/assets/images/button-l-en.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
examples/assets/images/dialog-close.png
Normal file
BIN
examples/assets/images/dialog-close.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
@ -99,6 +99,10 @@
|
||||
line-height: 26px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
#code-sponsor-widget {
|
||||
margin: 50px 0 0 -20px;
|
||||
}
|
||||
}
|
||||
.nav-dropdown-list {
|
||||
width: 120px;
|
||||
@ -154,6 +158,7 @@
|
||||
</template>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="code-sponsor-widget"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -957,7 +957,7 @@ Only one node among the same level can be expanded at one time.
|
||||
| --------- | ---------------------------------------- | ------ | --------------- | ------- |
|
||||
| label | specify which key of node object is used as the node's label | string, function(data, node) | — | — |
|
||||
| children | specify which node object is used as the node's subtree | string, function(data, node) | — | — |
|
||||
| disabled | specify which node's checkbox disabled | boolean, function(data, node) | — | — |
|
||||
| disabled | specify which key of node object represents if node's checkbox is disabled | boolean, function(data, node) | — | — |
|
||||
| isLeaf | specify whether the node is a leaf node | boolean, function(data, node) | — | — |
|
||||
|
||||
### Method
|
||||
|
@ -270,8 +270,8 @@
|
||||
}
|
||||
},
|
||||
|
||||
handleClick() {
|
||||
console.log('click');
|
||||
handleClick(row) {
|
||||
console.log(row);
|
||||
},
|
||||
|
||||
handleEdit(index, row) {
|
||||
@ -707,7 +707,7 @@
|
||||
label="操作"
|
||||
width="100">
|
||||
<template scope="scope">
|
||||
<el-button @click="handleClick" type="text" size="small">查看</el-button>
|
||||
<el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
|
||||
<el-button type="text" size="small">编辑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -717,8 +717,8 @@
|
||||
<script>
|
||||
export default {
|
||||
methods: {
|
||||
handleClick() {
|
||||
console.log(1);
|
||||
handleClick(row) {
|
||||
console.log(row);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -956,7 +956,7 @@
|
||||
| -------- | ----------------- | ------ | ---- | ---- |
|
||||
| label | 指定节点标签为节点对象的某个属性值 | string, function(data, node) | — | — |
|
||||
| children | 指定子树为节点对象的某个属性值 | string, function(data, node) | — | — |
|
||||
| disabled | 指定节点选择框是否禁用 | boolean, function(data, node) | — | — |
|
||||
| disabled | 指定节点选择框是否禁用为节点对象的某个属性值 | boolean, function(data, node) | — | — |
|
||||
| isLeaf | 指定节点是否为叶子节点 | boolean, function(data, node) | — | — |
|
||||
|
||||
### 方法
|
||||
|
@ -9,6 +9,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div><% if (process.env.NODE_ENV === 'production') { %>
|
||||
<script src="https://app.codesponsor.io/scripts/qFcVkt4f3DQEg4zrwINGVg?theme=light&height=250&width=240"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/vue@2.3.0/dist/vue.runtime.min.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/vue-router@2.1.1/dist/vue-router.min.js"></script><% } %>
|
||||
</body>
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "element-ui",
|
||||
"version": "1.4.4",
|
||||
"version": "1.4.6",
|
||||
"description": "A Component Library for Vue.js.",
|
||||
"main": "lib/element-ui.common.js",
|
||||
"files": [
|
||||
|
@ -41,7 +41,6 @@
|
||||
options: {
|
||||
default() {
|
||||
return {
|
||||
forceAbsolute: true,
|
||||
gpuAcceleration: false
|
||||
};
|
||||
}
|
||||
|
@ -10,9 +10,13 @@
|
||||
arr.forEach(item => {
|
||||
const itemCopy = {};
|
||||
configurableProps.forEach(prop => {
|
||||
const propName = props[prop] || prop;
|
||||
const value = item[propName];
|
||||
if (value !== undefined) itemCopy[propName] = value;
|
||||
let name = props[prop];
|
||||
let value = item[name];
|
||||
if (value === undefined) {
|
||||
name = prop;
|
||||
value = item[name];
|
||||
}
|
||||
if (value !== undefined) itemCopy[name] = value;
|
||||
});
|
||||
if (Array.isArray(item[childrenProp])) {
|
||||
itemCopy[childrenProp] = copyArray(item[childrenProp], props);
|
||||
|
@ -155,7 +155,7 @@
|
||||
|
||||
const calcDefaultValue = defaultValue => {
|
||||
if (Array.isArray(defaultValue)) {
|
||||
return new Date(defaultValue[0]);
|
||||
return defaultValue[0] ? new Date(defaultValue[0]) : new Date();
|
||||
} else {
|
||||
return new Date(defaultValue);
|
||||
}
|
||||
|
@ -496,7 +496,7 @@
|
||||
|
||||
dateFormat() {
|
||||
if (this.format) {
|
||||
return this.format.replace('HH:mm', '').replace(':ss', '').trim();
|
||||
return this.format.replace('HH', '').replace(':mm', '').replace(':ss', '').trim();
|
||||
} else {
|
||||
return 'yyyy-MM-dd';
|
||||
}
|
||||
|
@ -217,11 +217,11 @@
|
||||
},
|
||||
getRules() {
|
||||
var formRules = this.form.rules;
|
||||
var selfRuels = this.rules;
|
||||
var selfRules = this.rules;
|
||||
|
||||
formRules = formRules ? formRules[this.prop] : [];
|
||||
|
||||
return [].concat(selfRuels || formRules || []);
|
||||
return [].concat(selfRules || formRules || []);
|
||||
},
|
||||
getFilteredRule(trigger) {
|
||||
var rules = this.getRules();
|
||||
|
@ -1,10 +1,10 @@
|
||||
import Vue from 'vue';
|
||||
import { addClass, removeClass, getStyle } from 'element-ui/src/utils/dom';
|
||||
let Mask = Vue.extend(require('./loading.vue'));
|
||||
const Mask = Vue.extend(require('./loading.vue'));
|
||||
|
||||
exports.install = Vue => {
|
||||
if (Vue.prototype.$isServer) return;
|
||||
let toggleLoading = (el, binding) => {
|
||||
const toggleLoading = (el, binding) => {
|
||||
if (binding.value) {
|
||||
Vue.nextTick(() => {
|
||||
if (binding.modifiers.fullscreen) {
|
||||
@ -20,7 +20,7 @@ exports.install = Vue => {
|
||||
el.originalPosition = getStyle(document.body, 'position');
|
||||
|
||||
['top', 'left'].forEach(property => {
|
||||
let scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
|
||||
const scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
|
||||
el.maskStyle[property] = el.getBoundingClientRect()[property] + document.body[scroll] + document.documentElement[scroll] + 'px';
|
||||
});
|
||||
['height', 'width'].forEach(property => {
|
||||
@ -51,7 +51,7 @@ exports.install = Vue => {
|
||||
}
|
||||
}
|
||||
};
|
||||
let insertDom = (parent, el, binding) => {
|
||||
const insertDom = (parent, el, binding) => {
|
||||
if (!el.domVisible && getStyle(el, 'display') !== 'none' && getStyle(el, 'visibility') !== 'hidden') {
|
||||
Object.keys(el.maskStyle).forEach(property => {
|
||||
el.mask.style[property] = el.maskStyle[property];
|
||||
@ -75,7 +75,7 @@ exports.install = Vue => {
|
||||
|
||||
Vue.directive('loading', {
|
||||
bind: function(el, binding) {
|
||||
let mask = new Mask({
|
||||
const mask = new Mask({
|
||||
el: document.createElement('div'),
|
||||
data: {
|
||||
text: el.getAttribute('element-loading-text'),
|
||||
|
@ -29,7 +29,6 @@
|
||||
popperOptions: {
|
||||
default() {
|
||||
return {
|
||||
forceAbsolute: true,
|
||||
gpuAcceleration: false
|
||||
};
|
||||
}
|
||||
|
@ -152,6 +152,7 @@
|
||||
this.startX = event.clientX;
|
||||
}
|
||||
this.startPosition = parseFloat(this.currentPosition);
|
||||
this.newPosition = this.startPosition;
|
||||
},
|
||||
|
||||
onDragging(event) {
|
||||
|
0
packages/theme-default/package.json
Normal file
0
packages/theme-default/package.json
Normal file
@ -48,8 +48,7 @@ export default {
|
||||
|
||||
data() {
|
||||
return {
|
||||
timeoutPending: null,
|
||||
handlerAdded: false
|
||||
timeoutPending: null
|
||||
};
|
||||
},
|
||||
|
||||
@ -94,11 +93,10 @@ export default {
|
||||
const nativeOn = vnode.data.nativeOn = vnode.data.nativeOn || {};
|
||||
|
||||
data.staticClass = this.concatClass(data.staticClass, 'el-tooltip');
|
||||
if (this.handlerAdded) return vnode;
|
||||
on.mouseenter = this.addEventHandle(on.mouseenter, () => { this.setExpectedState(true); this.handleShowPopper(); });
|
||||
on.mouseleave = this.addEventHandle(on.mouseleave, () => { this.setExpectedState(false); this.debounceClose(); });
|
||||
nativeOn.mouseenter = this.addEventHandle(nativeOn.mouseenter, () => { this.setExpectedState(true); this.handleShowPopper(); });
|
||||
nativeOn.mouseleave = this.addEventHandle(nativeOn.mouseleave, () => { this.setExpectedState(false); this.debounceClose(); });
|
||||
on.mouseenter = this.addEventHandle(on.mouseenter, this.show);
|
||||
on.mouseleave = this.addEventHandle(on.mouseleave, this.hide);
|
||||
nativeOn.mouseenter = this.addEventHandle(nativeOn.mouseenter, this.show);
|
||||
nativeOn.mouseleave = this.addEventHandle(nativeOn.mouseleave, this.hide);
|
||||
|
||||
return vnode;
|
||||
},
|
||||
@ -108,9 +106,24 @@ export default {
|
||||
},
|
||||
|
||||
methods: {
|
||||
show() {
|
||||
this.setExpectedState(true);
|
||||
this.handleShowPopper();
|
||||
},
|
||||
|
||||
hide() {
|
||||
this.setExpectedState(false);
|
||||
this.debounceClose();
|
||||
},
|
||||
|
||||
addEventHandle(old, fn) {
|
||||
this.handlerAdded = true;
|
||||
return old ? Array.isArray(old) ? old.concat(fn) : [old, fn] : fn;
|
||||
if (!old) {
|
||||
return fn;
|
||||
} else if (Array.isArray(old)) {
|
||||
return old.indexOf(fn) > -1 ? old : old.concat(fn);
|
||||
} else {
|
||||
return old === fn ? old : [old, fn];
|
||||
}
|
||||
},
|
||||
|
||||
concatClass(a, b) {
|
||||
|
@ -54,7 +54,8 @@ const getPropertyFromData = function(node, prop) {
|
||||
} else if (typeof config === 'string') {
|
||||
return data[config];
|
||||
} else if (typeof config === 'undefined') {
|
||||
return '';
|
||||
const dataProp = data[prop];
|
||||
return dataProp === undefined ? '' : dataProp;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -168,7 +168,7 @@ if (typeof window !== 'undefined' && window.Vue) {
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
version: '1.4.4',
|
||||
version: '1.4.6',
|
||||
locale: locale.use,
|
||||
i18n: locale.i18n,
|
||||
install,
|
||||
|
Loading…
Reference in New Issue
Block a user