From 62a711ee2310b01bc0988a6becae1f51745a7bba Mon Sep 17 00:00:00 2001 From: Jeff Date: Fri, 22 Mar 2019 12:28:11 -0700 Subject: [PATCH] WIP: adds a watcher for this.open, listens for touch events --- src/components/Select.vue | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/components/Select.vue b/src/components/Select.vue index 49e6cbd..d2bcbf5 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -806,6 +806,31 @@ */ multiple(val) { this.mutableValue = val ? [] : null + }, + + /** + * Ensure that iOS closes the dropdown when + * touch events occur outside the element. + * + * @see https://github.com/sagalbot/vue-select/issues/738 + * @param isOpen + */ + open(isOpen) { + /** + * @param event {TouchEvent} + * @return {boolean} + */ + const touchAway = event => { + if( isOpen && !this.$el.contains(event.target) ) { + this.$refs.search.blur(); + } + }; + + if (isOpen) { + return document.addEventListener('touchend', touchAway); + } else { + return document.removeEventListener('touchend', touchAway); + } } },