diff --git a/packages/cascader/src/main.vue b/packages/cascader/src/main.vue
index 402569712..17b63ec36 100644
--- a/packages/cascader/src/main.vue
+++ b/packages/cascader/src/main.vue
@@ -48,7 +48,7 @@
{{ label }}
- {{ separator }}
+ {{ separator }}
@@ -178,7 +178,9 @@ export default {
menuVisible: false,
inputHover: false,
inputValue: '',
- flatOptions: null
+ flatOptions: null,
+ id: generateId(),
+ needFocus: true
};
},
@@ -215,9 +217,6 @@ export default {
},
cascaderDisabled() {
return this.disabled || (this.elForm || {}).disabled;
- },
- id() {
- return generateId();
}
},
@@ -280,7 +279,11 @@ export default {
hideMenu() {
this.inputValue = '';
this.menu.visible = false;
- this.$refs.input.focus();
+ if (this.needFocus) {
+ this.$refs.input.focus();
+ } else {
+ this.needFocus = true;
+ }
},
handleActiveItemChange(value) {
this.$nextTick(_ => {
@@ -387,6 +390,9 @@ export default {
this.handlePick([], true);
},
handleClickoutside() {
+ if (this.menuVisible) {
+ this.needFocus = false;
+ }
this.menuVisible = false;
},
handleClick() {
diff --git a/packages/cascader/src/menu.vue b/packages/cascader/src/menu.vue
index d814941ff..826c6bd7c 100644
--- a/packages/cascader/src/menu.vue
+++ b/packages/cascader/src/menu.vue
@@ -42,7 +42,8 @@
changeOnSelect: false,
popperClass: '',
hoverTimer: 0,
- clicking: false
+ clicking: false,
+ id: generateId()
};
},
@@ -97,9 +98,6 @@
formatOptions(optionsCopy);
return loadActiveOptions(optionsCopy);
}
- },
- id() {
- return generateId();
}
},
diff --git a/packages/dropdown/src/dropdown.vue b/packages/dropdown/src/dropdown.vue
index 30ab862fa..2daa55030 100644
--- a/packages/dropdown/src/dropdown.vue
+++ b/packages/dropdown/src/dropdown.vue
@@ -66,16 +66,14 @@
menuItems: null,
menuItemsArray: null,
dropdownElm: null,
- focusing: false
+ focusing: false,
+ listId: `dropdown-menu-${generateId()}`
};
},
computed: {
dropdownSize() {
return this.size || (this.$ELEMENT || {}).size;
- },
- listId() {
- return `dropdown-menu-${generateId()}`;
}
},