From 76cfd7cad923567cca86d9f287aa185bb771af2e Mon Sep 17 00:00:00 2001 From: Steven Harman Date: Wed, 18 Jul 2018 01:15:19 -0400 Subject: [PATCH] Clicking a selected tag toggles dropdown --- src/components/Select.vue | 3 ++- test/unit/specs/Select.spec.js | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/components/Select.vue b/src/components/Select.vue index 2abeafa..936c06f 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -847,7 +847,8 @@ * @return {void} */ toggleDropdown(e) { - if (e.target === this.$refs.openIndicator || e.target === this.$refs.search || e.target === this.$refs.toggle || e.target === this.$el) { + if (e.target === this.$refs.openIndicator || e.target === this.$refs.search || e.target === this.$refs.toggle || + e.target.classList.contains('selected-tag') || e.target === this.$el) { if (this.open) { this.$refs.search.blur() // dropdown will close on blur } else { diff --git a/test/unit/specs/Select.spec.js b/test/unit/specs/Select.spec.js index 348382f..af6947c 100644 --- a/test/unit/specs/Select.spec.js +++ b/test/unit/specs/Select.spec.js @@ -433,6 +433,26 @@ describe('Select.vue', () => { }) }) + it('should open the dropdown when the selected tag is clicked', (done) => { + const vm = new Vue({ + template: '
', + components: {vSelect}, + data: { + value: [{label: 'one'}], + options: [{label: 'one'}] + } + }).$mount() + + const selectedTag = vm.$children[0].$el.getElementsByClassName('selected-tag')[0] + vm.$children[0].toggleDropdown({target: selectedTag}) + Vue.nextTick(() => { + Vue.nextTick(() => { + expect(vm.$children[0].open).toEqual(true) + done() + }) + }) + }) + it('can close the dropdown when the el is clicked', (done) => { const vm = new Vue({ template: '
',