Commit ae7579e98d198b9bb067cc2fa6ad0cf1a616422c
1 parent
9ca6671c
Fix input getters and logic for AutoComplete
Showing
1 changed file
with
5 additions
and
8 deletions
Show diff stats
src/components/select/select.vue
| ... | ... | @@ -42,8 +42,6 @@ |
| 42 | 42 | @on-query-change="onQueryChange" |
| 43 | 43 | @on-input-focus="isFocused = true" |
| 44 | 44 | @on-input-blur="isFocused = false" |
| 45 | - | |
| 46 | - ref="selectHead" | |
| 47 | 45 | /> |
| 48 | 46 | </slot> |
| 49 | 47 | </div> |
| ... | ... | @@ -407,7 +405,7 @@ |
| 407 | 405 | if (this.visible) { |
| 408 | 406 | |
| 409 | 407 | if (this.filterable) { |
| 410 | - const input = this.$refs.selectHead.$refs.input; | |
| 408 | + const input = this.$el.querySelector('input[type="text"]'); | |
| 411 | 409 | this.caretPosition = input.selectionStart; |
| 412 | 410 | this.$nextTick(() => { |
| 413 | 411 | const caretPosition = this.caretPosition === -1 ? input.value.length : this.caretPosition; |
| ... | ... | @@ -415,7 +413,7 @@ |
| 415 | 413 | }); |
| 416 | 414 | } |
| 417 | 415 | |
| 418 | - event.stopPropagation(); | |
| 416 | + if (!this.autoComplete) event.stopPropagation(); | |
| 419 | 417 | event.preventDefault(); |
| 420 | 418 | this.hideMenu(); |
| 421 | 419 | this.isFocused = true; |
| ... | ... | @@ -513,8 +511,8 @@ |
| 513 | 511 | } |
| 514 | 512 | |
| 515 | 513 | if (this.filterable){ |
| 516 | - const inputField = this.$refs.selectHead.$refs.input; | |
| 517 | - this.$nextTick(() => inputField.focus()); | |
| 514 | + const inputField = this.$el.querySelector('input[type="text"]'); | |
| 515 | + if (!this.autoComplete) this.$nextTick(() => inputField.focus()); | |
| 518 | 516 | } |
| 519 | 517 | }, |
| 520 | 518 | onQueryChange(query) { |
| ... | ... | @@ -581,8 +579,7 @@ |
| 581 | 579 | } |
| 582 | 580 | }, |
| 583 | 581 | isFocused(focused){ |
| 584 | - const {selectHead, reference} = this.$refs; | |
| 585 | - const el = this.filterable ? selectHead.$el.querySelector('input') : reference; | |
| 582 | + const el = this.filterable ? this.$el.querySelector('input[type="text"]') : this.$el; | |
| 586 | 583 | el[this.isFocused ? 'focus' : 'blur'](); |
| 587 | 584 | |
| 588 | 585 | // restore query value in filterable single selects | ... | ... |