Commit 33c826ec166c2efbb40aef493f4810baf2214eb2

Authored by Rookie_Zoe
1 parent de361437

fix #5150

examples/routers/auto-complete.vue
1 <template> 1 <template>
2 - <div style="margin: 100px;width: 200px;">  
3 - <AutoComplete placement="top" transfer v-model="value" icon="ios-search" :data="data" @on-search="handleSearch" @on-change="hc" :filter-method="fm">  
4 - <!--<Option v-for="item in data" :value="item" :label="item" :key="item">-->  
5 - <!--<span style="color: red">{{ item }}</span>-->  
6 - <!--</Option>-->  
7 - </AutoComplete>  
8 - </div> 2 + <div style="margin: 100px;width: 200px;">
  3 + <auto-complete v-model="value" :data="data" :disabled="disabled"></auto-complete>
  4 + </div>
9 </template> 5 </template>
10 <script> 6 <script>
11 -  
12 - export default {  
13 - props: {  
14 -  
15 - },  
16 - data () {  
17 - return {  
18 - value: '',  
19 - data: [],  
20 -// data: ['Burns Bay Road', 'Downing Street', 'Wall Street']  
21 - };  
22 - },  
23 - computed: {},  
24 - methods: {  
25 - handleSearch (value) {  
26 - this.data = !value ? [] : [  
27 - value + '@qq.com',  
28 - value + '@sina.com',  
29 - value + '@163.com'  
30 - ]  
31 - },  
32 - hc (v) {  
33 -// console.log(v)  
34 - },  
35 - fm (value, item) {  
36 - return item.toUpperCase().indexOf(value.toUpperCase()) !== -1;  
37 - }  
38 - } 7 +export default {
  8 + data() {
  9 + return {
  10 + value: "",
  11 + disabled: false,
  12 + data: []
39 }; 13 };
40 -</script>  
41 \ No newline at end of file 14 \ No newline at end of file
  15 + },
  16 + methods: {},
  17 + created() {
  18 + setTimeout(() => {
  19 + this.value = "1.0.0.5";
  20 + this.data = [
  21 + "12412515",
  22 + "123444",
  23 + "12355",
  24 + "12345",
  25 + "12312",
  26 + "1234",
  27 + "123",
  28 + "111",
  29 + "5.2.3.4",
  30 + "1.2.3.4",
  31 + "1.2.3.4.5",
  32 + "1.2.3.4.5.6",
  33 + "1.2.3.4.5.6.7",
  34 + "1.0.0.8",
  35 + "1.0.0.5",
  36 + "whb-03"
  37 + ];
  38 + // this.disabled = true;
  39 + }, 1000);
  40 + }
  41 +};
  42 +</script>
src/components/select/select.vue
@@ -635,7 +635,18 @@ @@ -635,7 +635,18 @@
635 }, ANIMATION_TIMEOUT); 635 }, ANIMATION_TIMEOUT);
636 }, 636 },
637 onQueryChange(query) { 637 onQueryChange(query) {
638 - if (query.length > 0 && query !== this.query) this.visible = true; 638 + if (query.length > 0 && query !== this.query) {
  639 + // in 'AutoComplete', when set an initial value asynchronously,
  640 + // the 'dropdown list' should be stay hidden.
  641 + // [issue #5150]
  642 + let isInputFocused =
  643 + document.hasFocus &&
  644 + document.hasFocus() &&
  645 + document.activeElement === this.$el.querySelector('input');
  646 +
  647 + this.visible = isInputFocused;
  648 + }
  649 +
639 this.query = query; 650 this.query = query;
640 this.unchangedQuery = this.visible; 651 this.unchangedQuery = this.visible;
641 this.filterQueryChange = true; 652 this.filterQueryChange = true;