Merge pull request #3747 from SergioCrisostomo/select-patches

Select fixes
This commit is contained in:
Aresn 2018-05-30 09:47:15 +08:00 committed by GitHub
commit 427b869297
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View file

@ -2,6 +2,7 @@
<li <li
:class="classes" :class="classes"
@click.stop="select" @click.stop="select"
@touchend.stop="select"
@mousedown.prevent @mousedown.prevent
@touchstart.prevent @touchstart.prevent
><slot>{{ showLabel }}</slot></li> ><slot>{{ showLabel }}</slot></li>

View file

@ -411,7 +411,7 @@
clearSingleSelect(){ // PUBLIC API clearSingleSelect(){ // PUBLIC API
this.$emit('on-clear'); this.$emit('on-clear');
this.hideMenu(); this.hideMenu();
if (this.clearable) this.values = []; if (this.clearable) this.reset();
}, },
getOptionData(value){ getOptionData(value){
const option = this.flatOptions.find(({componentOptions}) => componentOptions.propsData.value === value); const option = this.flatOptions.find(({componentOptions}) => componentOptions.propsData.value === value);
@ -427,7 +427,7 @@
let initialValue = Array.isArray(value) ? value : [value]; let initialValue = Array.isArray(value) ? value : [value];
if (!multiple && (typeof initialValue[0] === 'undefined' || (String(initialValue[0]).trim() === '' && !Number.isFinite(initialValue[0])))) initialValue = []; if (!multiple && (typeof initialValue[0] === 'undefined' || (String(initialValue[0]).trim() === '' && !Number.isFinite(initialValue[0])))) initialValue = [];
return initialValue.filter((item) => { return initialValue.filter((item) => {
return Boolean(item) || item === 0 return Boolean(item) || item === 0;
}); });
}, },
processOption(option, values, isFocused){ processOption(option, values, isFocused){
@ -488,6 +488,14 @@
return; return;
} }
if (this.transfer) {
const {$el} = this.$refs.dropdown;
if ($el === event.target || $el.contains(event.target)) {
return;
}
}
if (this.filterable) { if (this.filterable) {
const input = this.$el.querySelector('input[type="text"]'); const input = this.$el.querySelector('input[type="text"]');
this.caretPosition = input.selectionStart; this.caretPosition = input.selectionStart;
@ -507,6 +515,8 @@
} }
}, },
reset(){ reset(){
this.query = '';
this.focusIndex = -1;
this.unchangedQuery = true; this.unchangedQuery = true;
this.values = []; this.values = [];
}, },