Skip to content

Commit 078d750

Browse files
author
Jeff
committed
- openIndicator opens dropdown
- improved toggleDropdown function
1 parent f95b118 commit 078d750

File tree

4 files changed

+33
-16
lines changed

4 files changed

+33
-16
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"main": "dist/vue-select.js",
88
"license": "MIT",
99
"scripts": {
10-
"start": "npm run dev",
10+
"start": "npm run serve",
1111
"serve": "webpack-dev-server --config build/webpack.dev.conf.js --hot --progress -d",
1212
"serve:docs": "vuepress dev docs",
1313
"build": "cross-env NODE_ENV=production webpack --config build/webpack.prod.conf.js --progress",

src/components/Select.vue

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@
3434
:disabled="disabled"
3535
@click="clearSelection"
3636
type="button"
37-
class="vs__clear"
37+
class="vs__clear vs__btn-reset"
3838
title="Clear selection"
3939
>
4040
<deselect />
4141
</button>
4242

43-
<open-indicator v-if="!noDrop" ref="openIndicator" role="presentation" class="vs__open-indicator" />
43+
<button v-if="!noDrop" ref="openIndicator" role="presentation" class="vs__open-indicator vs__btn-reset">
44+
<open-indicator />
45+
</button>
4446

4547
<slot name="spinner" v-bind="scope.spinner">
4648
<div class="vs__spinner" v-show="mutableLoading">Loading...</div>
@@ -591,19 +593,30 @@
591593
592594
/**
593595
* Toggle the visibility of the dropdown menu.
594-
* @param {Event} e
596+
* @param {MouseEvent} e
595597
* @return {void}
596598
*/
597-
toggleDropdown(e) {
598-
if (e.target === this.$refs.openIndicator || e.target === this.searchEl || e.target === this.$refs.toggle ||
599-
e.target.classList.contains('vs__selected') || e.target === this.$el) {
599+
toggleDropdown (e) {
600+
if (this.disabled) {
601+
return;
602+
}
603+
604+
const target = e.target;
605+
606+
const toggleableElements = [
607+
this.$refs.openIndicator,
608+
this.$refs.toggle,
609+
this.searchEl,
610+
this.$el,
611+
];
612+
613+
if (toggleableElements.includes(target) || target.classList.contains('vs__selected') ) {
600614
if (this.open) {
601-
this.searchEl.blur() // dropdown will close on blur
615+
// dropdown will close on blur
616+
this.searchEl.blur();
602617
} else {
603-
if (!this.disabled) {
604-
this.open = true
605-
this.searchEl.focus()
606-
}
618+
this.open = true;
619+
this.searchEl.focus();
607620
}
608621
}
609622
},

src/scss/global/_button.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.vs__btn-reset {
2+
appearance: none;
3+
border: none;
4+
padding: 0;
5+
border: 0;
6+
cursor: pointer;
7+
background-color: transparent;
8+
}

src/scss/modules/_clear.scss

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,5 @@
22

33
.vs__clear {
44
fill: $vs-controls-color;
5-
padding: 0;
6-
border: 0;
7-
background-color: transparent;
8-
cursor: pointer;
95
margin-right: 8px;
106
}

0 commit comments

Comments
 (0)