Сделаем метод, который будет обрабатывать клики по всему документу. Логика такая - если целевой элемент не лежит внутри корневого элемента экземпляра компонента, значит можно закрывать:
onClickOutside(e) {
if (!this.$el.contains(e.target)) {
// закрываем дропдаун
}
},
Назначаем обработчик при создании экземпляра, перед уничтожением снимаем:
created() {
const { onClickOutside } = this;
document.addEventListener('click', onClickOutside);
this.$on('hook:beforeDestroy', () => document.removeEventListener('click', onClickOutside));
},
https://jsfiddle.net/8ugxwf7k/