mirror of https://github.com/ElemeFE/element
Merge remote-tracking branch 'eleme/dev' into carbon
# Conflicts: # examples/docs/en-US/input.md # examples/docs/zh-CN/input.mdpull/6214/head^2
commit
b922664aa6
|
@ -206,6 +206,7 @@ Currently Element ships with the following languages:
|
|||
<li>Estonian (ee)</li>
|
||||
<li>Slovenian (sl)</li>
|
||||
<li>Arabic (ar)</li>
|
||||
<li>Hebrew (he)</li>
|
||||
</ul>
|
||||
|
||||
If your target language is not included, you are more than welcome to contribute: just add another language config [here](https://github.com/ElemeFE/element/tree/master/src/locale/lang) and create a pull request.
|
||||
|
|
|
@ -669,7 +669,8 @@ Attribute | Description | Type | Options | Default
|
|||
| popper-class | custom class name for autocomplete's dropdown | string | — | — |
|
||||
| trigger-on-focus | whether show suggestions when input focus | boolean | — | true |
|
||||
| on-icon-click | hook function when clicking on the input icon | function | — | — |
|
||||
|name | same as `name` in native input | string | — | — |
|
||||
| name | same as `name` in native input | string | — | — |
|
||||
| select-when-unmatched | whether to emit a `select` event on enter when there is no autocomplete match | boolean | — | false |
|
||||
|
||||
### props
|
||||
| Attribute | Description | Type | Accepted Values | Default |
|
||||
|
|
|
@ -15,16 +15,42 @@
|
|||
width: 110px;
|
||||
}
|
||||
}
|
||||
.el-tooltip + .el-tooltip {
|
||||
margin-left: 15px;
|
||||
}
|
||||
.box {
|
||||
width: 400px;
|
||||
|
||||
.top {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
width: 110px;
|
||||
}
|
||||
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
width: 110px;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
clear: both;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.item {
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.left .el-tooltip__popper,
|
||||
.right .el-tooltip__popper {
|
||||
padding: 8px 10px;
|
||||
}
|
||||
.el-tooltip {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -218,6 +218,7 @@ ElementLocale.i18n((key, value) => i18n.t(key, value))
|
|||
<li>爱沙尼亚语(ee)</li>
|
||||
<li>斯洛文尼亚语(sl)</li>
|
||||
<li>阿拉伯语(ar)</li>
|
||||
<li>希伯来语(he)</li>
|
||||
</ul>
|
||||
|
||||
如果你需要使用其他的语言,欢迎贡献 PR:只需在 [这里](https://github.com/ElemeFE/element/tree/master/src/locale/lang) 添加一个语言配置文件即可。
|
||||
|
|
|
@ -825,6 +825,11 @@ export default {
|
|||
| focus | 在 Input 获得焦点时触发 | (event: Event) |
|
||||
| change | 在 Input 值改变时触发 | (value: string \| number) |
|
||||
|
||||
### Input Methods
|
||||
| 方法名 | 说明 | 参数 |
|
||||
| ---- | ---- | ---- |
|
||||
| focus | 使 input 获取焦点 | - |
|
||||
|
||||
### Autocomplete Attributes
|
||||
|
||||
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
||||
|
@ -840,8 +845,9 @@ export default {
|
|||
| on-icon-click | 点击图标的回调函数 | function | — | — |
|
||||
| icon | 输入框尾部图标 | string | — | — |
|
||||
| name | 原生属性 | string | — | — |
|
||||
| select-when-unmatched | 在输入没有任何匹配建议的情况下,按下回车是否触发 `select` 事件 | boolean | — | false |
|
||||
|
||||
### Props
|
||||
### props
|
||||
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
||||
| -------- | ----------------- | ------ | ------ | ------ |
|
||||
| value | 指定选项的值为选项对象的某个属性值 | string | — | value |
|
||||
|
@ -851,8 +857,3 @@ export default {
|
|||
| 事件名称 | 说明 | 回调参数 |
|
||||
|---------|--------|---------|
|
||||
| select | 点击选中建议项时触发 | 选中建议项 |
|
||||
|
||||
### Methods
|
||||
| 方法名 | 说明 | 参数 |
|
||||
| ---- | ---- | ---- |
|
||||
| focus | 使 input 获取焦点 | - |
|
||||
|
|
|
@ -215,3 +215,4 @@ tooltip 内不支持 disabled form 元素,参考[MDN](https://developer.mozill
|
|||
| manual | 手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效 | Boolean | — | false |
|
||||
| popper-class | 为 Tooltip 的 popper 添加类名 | String | — | — |
|
||||
| enterable | 鼠标是否可进入到 tooltip 中 | Boolean | — | true |
|
||||
| hide-after | Tooltip 出现后自动隐藏延时,单位毫秒,为 0 则不会自动隐藏 | number | — | 0 |
|
||||
|
|
|
@ -74,7 +74,11 @@
|
|||
},
|
||||
customItem: String,
|
||||
icon: String,
|
||||
onIconClick: Function
|
||||
onIconClick: Function,
|
||||
selectWhenUnmatched: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -142,6 +146,12 @@
|
|||
if (this.suggestionVisible && this.highlightedIndex >= 0 && this.highlightedIndex < this.suggestions.length) {
|
||||
e.preventDefault();
|
||||
this.select(this.suggestions[this.highlightedIndex]);
|
||||
} else if (this.selectWhenUnmatched) {
|
||||
this.$emit('select', {value: this.value});
|
||||
this.$nextTick(_ => {
|
||||
this.suggestions = [];
|
||||
this.highlightedIndex = -1;
|
||||
});
|
||||
}
|
||||
},
|
||||
select(item) {
|
||||
|
@ -149,11 +159,15 @@
|
|||
this.$emit('select', item);
|
||||
this.$nextTick(_ => {
|
||||
this.suggestions = [];
|
||||
this.highlightedIndex = -1;
|
||||
});
|
||||
},
|
||||
highlight(index) {
|
||||
if (!this.suggestionVisible || this.loading) { return; }
|
||||
if (index < 0) index = 0;
|
||||
if (index < 0) {
|
||||
this.highlightedIndex = -1;
|
||||
return;
|
||||
}
|
||||
if (index >= this.suggestions.length) {
|
||||
index = this.suggestions.length - 1;
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
var year = this.date.getFullYear();
|
||||
var date = new Date(0);
|
||||
date.setFullYear(year);
|
||||
date.setMonth(month);
|
||||
date.setMonth(month, 1);
|
||||
date.setHours(0);
|
||||
var nextMonth = new Date(date);
|
||||
nextMonth.setMonth(month + 1);
|
||||
|
|
|
@ -63,9 +63,7 @@
|
|||
getCellStyle(year) {
|
||||
const style = {};
|
||||
|
||||
var date = new Date(0);
|
||||
date.setFullYear(year);
|
||||
date.setHours(0);
|
||||
var date = new Date(year, 0, 1, 0);
|
||||
var nextYear = new Date(date);
|
||||
nextYear.setFullYear(year + 1);
|
||||
|
||||
|
|
|
@ -156,6 +156,14 @@
|
|||
import DateTable from '../basic/date-table';
|
||||
import ElInput from 'element-ui/packages/input';
|
||||
|
||||
const calcDefaultValue = defaultValue => {
|
||||
if (Array.isArray(defaultValue)) {
|
||||
return new Date(defaultValue[0]);
|
||||
} else {
|
||||
return new Date(defaultValue);
|
||||
}
|
||||
};
|
||||
|
||||
export default {
|
||||
mixins: [Locale],
|
||||
|
||||
|
@ -232,7 +240,7 @@
|
|||
popperClass: '',
|
||||
minPickerWidth: 0,
|
||||
maxPickerWidth: 0,
|
||||
date: new Date(),
|
||||
date: this.$options.defaultValue ? calcDefaultValue(this.$options.defaultValue) : new Date(),
|
||||
minDate: '',
|
||||
maxDate: '',
|
||||
rangeState: {
|
||||
|
@ -309,6 +317,7 @@
|
|||
handleClear() {
|
||||
this.minDate = null;
|
||||
this.maxDate = null;
|
||||
this.date = this.$options.defaultValue ? calcDefaultValue(this.$options.defaultValue) : new Date();
|
||||
this.handleConfirm(false);
|
||||
},
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<div class="el-table-filter" v-else v-show="showPopper">
|
||||
<ul class="el-table-filter__list">
|
||||
<li class="el-table-filter__list-item"
|
||||
:class="{ 'is-active': !filterValue }"
|
||||
:class="{ 'is-active': filterValue === undefined || filterValue === null }"
|
||||
@click="handleSelect(null)">{{ t('el.table.clearFilter') }}</li>
|
||||
<li class="el-table-filter__list-item"
|
||||
v-for="filter in filters"
|
||||
|
|
|
@ -88,16 +88,17 @@ export default {
|
|||
if (!this.$slots.default || !this.$slots.default.length) return this.$slots.default;
|
||||
|
||||
const vnode = getFirstComponentChild(this.$slots.default);
|
||||
if (!vnode || this.handlerAdded) return vnode;
|
||||
if (!vnode) return vnode;
|
||||
const data = vnode.data = vnode.data || {};
|
||||
const on = vnode.data.on = vnode.data.on || {};
|
||||
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(); });
|
||||
data.staticClass = this.concatClass(data.staticClass, 'el-tooltip');
|
||||
|
||||
return vnode;
|
||||
},
|
||||
|
|
|
@ -48,7 +48,7 @@ export default function upload(option) {
|
|||
const formData = new FormData();
|
||||
|
||||
if (option.data) {
|
||||
Object.keys(option.data).map(key => {
|
||||
Object.keys(option.data).forEach(key => {
|
||||
formData.append(key, option.data[key]);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -139,13 +139,13 @@ export default {
|
|||
this.onChange(file, this.uploadFiles);
|
||||
},
|
||||
handleProgress(ev, rawFile) {
|
||||
var file = this.getFile(rawFile);
|
||||
const file = this.getFile(rawFile);
|
||||
this.onProgress(ev, file, this.uploadFiles);
|
||||
file.status = 'uploading';
|
||||
file.percentage = ev.percent || 0;
|
||||
},
|
||||
handleSuccess(res, rawFile) {
|
||||
var file = this.getFile(rawFile);
|
||||
const file = this.getFile(rawFile);
|
||||
|
||||
if (file) {
|
||||
file.status = 'success';
|
||||
|
@ -156,8 +156,8 @@ export default {
|
|||
}
|
||||
},
|
||||
handleError(err, rawFile) {
|
||||
var file = this.getFile(rawFile);
|
||||
var fileList = this.uploadFiles;
|
||||
const file = this.getFile(rawFile);
|
||||
const fileList = this.uploadFiles;
|
||||
|
||||
file.status = 'fail';
|
||||
|
||||
|
@ -171,13 +171,13 @@ export default {
|
|||
file = this.getFile(raw);
|
||||
}
|
||||
this.abort(file);
|
||||
var fileList = this.uploadFiles;
|
||||
let fileList = this.uploadFiles;
|
||||
fileList.splice(fileList.indexOf(file), 1);
|
||||
this.onRemove(file, fileList);
|
||||
},
|
||||
getFile(rawFile) {
|
||||
var fileList = this.uploadFiles;
|
||||
var target;
|
||||
let fileList = this.uploadFiles;
|
||||
let target;
|
||||
fileList.every(item => {
|
||||
target = rawFile.uid === item.uid ? item : null;
|
||||
return !target;
|
||||
|
@ -209,7 +209,7 @@ export default {
|
|||
},
|
||||
|
||||
render(h) {
|
||||
var uploadList;
|
||||
let uploadList;
|
||||
|
||||
if (this.showFileList) {
|
||||
uploadList = (
|
||||
|
@ -223,7 +223,7 @@ export default {
|
|||
);
|
||||
}
|
||||
|
||||
var uploadData = {
|
||||
const uploadData = {
|
||||
props: {
|
||||
type: this.type,
|
||||
drag: this.drag,
|
||||
|
|
|
@ -90,12 +90,12 @@ export default {
|
|||
this.post(rawFile);
|
||||
}
|
||||
}, () => {
|
||||
this.onRemove(rawFile, true);
|
||||
this.onRemove(null, rawFile);
|
||||
});
|
||||
} else if (before !== false) {
|
||||
this.post(rawFile);
|
||||
} else {
|
||||
this.onRemove(rawFile, true);
|
||||
this.onRemove(null, rawFile);
|
||||
}
|
||||
},
|
||||
abort(file) {
|
||||
|
|
|
@ -95,10 +95,10 @@ export default {
|
|||
transfer: {
|
||||
noMatch: 'אין נתונים מתאימים',
|
||||
noData: 'ללא נתונים',
|
||||
titles: ['רשימה 1', 'רשימה 2'], // to be translated
|
||||
filterPlaceholder: 'הקלד', // to be translated
|
||||
noCheckedFormat: 'פריטים {total}', // to be translated
|
||||
hasCheckedFormat: ' אישור {checked}/{total}' // to be translated
|
||||
titles: ['רשימה 1', 'רשימה 2'],
|
||||
filterPlaceholder: 'הקלד',
|
||||
noCheckedFormat: 'פריטים {total}',
|
||||
hasCheckedFormat: ' אישור {checked}/{total}'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -358,23 +358,11 @@ describe('DatePicker', () => {
|
|||
});
|
||||
|
||||
it('default value', done => {
|
||||
const toDateStr = date => {
|
||||
let d = new Date(date);
|
||||
return `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;
|
||||
};
|
||||
let today = new Date();
|
||||
let nextMonth = new Date(today);
|
||||
nextMonth.setDate(1);
|
||||
if (nextMonth.getMonth() === 12) {
|
||||
nextMonth.setFullYear(today.getFullYear + 1);
|
||||
nextMonth.setMonth(1);
|
||||
} else {
|
||||
nextMonth.setMonth(today.getMonth() + 1);
|
||||
}
|
||||
let nextMonthStr = toDateStr(nextMonth);
|
||||
let defaultValue = '2000-01-01';
|
||||
let expectValue = new Date(2000, 0, 1);
|
||||
|
||||
vm = createVue({
|
||||
template: `<el-date-picker v-model="value" ref="compo" default-value="${nextMonthStr}" />`,
|
||||
template: `<el-date-picker v-model="value" ref="compo" default-value="${defaultValue}" />`,
|
||||
data() {
|
||||
return {
|
||||
value: ''
|
||||
|
@ -389,10 +377,10 @@ describe('DatePicker', () => {
|
|||
const $el = vm.$refs.compo.picker.$el;
|
||||
$el.querySelector('td.current').click();
|
||||
setTimeout(_ => {
|
||||
expect(vm.value).to.equal(nextMonthStr);
|
||||
});
|
||||
done();
|
||||
});
|
||||
expect(+vm.value).to.equal(+expectValue);
|
||||
done();
|
||||
}, 10);
|
||||
}, 10);
|
||||
});
|
||||
|
||||
describe('keydown', () => {
|
||||
|
|
Loading…
Reference in New Issue