From 3bfae80fa7e0e29192efeeb598eeb5a7c369d204 Mon Sep 17 00:00:00 2001
From: takonomura <takonomura@users.noreply.github.com>
Date: Sat, 31 Oct 2020 09:43:28 +0900
Subject: 補完でタブが効かなくなるケースを修正 (#6779)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/client/components/autocomplete.vue | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

(limited to 'src/client/components/autocomplete.vue')

diff --git a/src/client/components/autocomplete.vue b/src/client/components/autocomplete.vue
index 7f4b565723..476be8ae78 100644
--- a/src/client/components/autocomplete.vue
+++ b/src/client/components/autocomplete.vue
@@ -122,6 +122,7 @@ export default defineComponent({
 			users: [],
 			hashtags: [],
 			emojis: [],
+			items: [],
 			select: -1,
 			emojilist,
 			emojiDb: [] as EmojiDef[]
@@ -129,10 +130,6 @@ export default defineComponent({
 	},
 
 	computed: {
-		items(): HTMLCollection {
-			return (this.$refs.suggests as Element).children;
-		},
-
 		useOsNativeEmojis(): boolean {
 			return this.$store.state.device.useOsNativeEmojis;
 		}
@@ -148,6 +145,7 @@ export default defineComponent({
 
 	updated() {
 		this.setPosition();
+		this.items = (this.$refs.suggests as Element | undefined)?.children || [];
 	},
 
 	mounted() {
@@ -371,6 +369,7 @@ export default defineComponent({
 
 		selectNext() {
 			if (++this.select >= this.items.length) this.select = 0;
+			if (this.items.length === 0) this.select = -1;
 			this.applySelect();
 		},
 
@@ -384,8 +383,10 @@ export default defineComponent({
 				el.removeAttribute('data-selected');
 			}
 
-			this.items[this.select].setAttribute('data-selected', 'true');
-			(this.items[this.select] as any).focus();
+			if (this.select !== -1) {
+				this.items[this.select].setAttribute('data-selected', 'true');
+				(this.items[this.select] as any).focus();
+			}
 		},
 
 		chooseUser() {
-- 
cgit v1.2.3-freya

