From bffe20978a50aad735cb6af4b6b0a9fa5cf4d45a Mon Sep 17 00:00:00 2001 From: Grzegorz Leoniec Date: Tue, 19 Feb 2019 16:40:30 +0100 Subject: [PATCH] Extract SearchInput logic into parent --- components/SearchInput.vue | 19 ++++++++----------- layouts/default.vue | 7 +++++++ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/components/SearchInput.vue b/components/SearchInput.vue index e1472b7da..d3abdf4c8 100644 --- a/components/SearchInput.vue +++ b/components/SearchInput.vue @@ -36,6 +36,7 @@ @blur.capture.native="onBlur" @keyup.delete.native="onDelete" @keyup.esc.native="clear" + @input.exact="onSelect" @input.native="handleInput" @click.capture.native="isOpen = true" > @@ -134,17 +135,6 @@ export default { : this.$t('search.hint') } }, - watch: { - searchValue(item) { - if (item && item.slug) { - this.isOpen = false - this.$router.push(`/post/${item.slug}`) - this.$nextTick(() => { - this.searchValue = this.lastSearchTerm - }) - } - } - }, methods: { async query(value) { if (isEmpty(value) || value.length < 3) { @@ -163,6 +153,13 @@ export default { this.query(value) }, this.delay) }, + onSelect(item) { + this.isOpen = false + this.$emit('select', item) + this.$nextTick(() => { + this.searchValue = this.lastSearchTerm + }) + }, onFocus(e) { clearTimeout(this.searchProcess) this.isOpen = true diff --git a/layouts/default.vue b/layouts/default.vue index efb9ec8bb..e860bc386 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -19,6 +19,7 @@ :results="quickSearchResults" @clear="quickSearchClear" @search="value => quickSearch({ value })" + @select="goToPost" />