diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index 09f51f9..2bbdbd3 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -19,6 +19,10 @@
@change="e => search({value: e.target.value})"
:value="searchValue"
:maxLength="selected && selected.key !== 'plugin-container' ? 0 : 1000"
+ @keydown.down="(e) => changeCurrent(1)"
+ @keydown.up="() => changeCurrent(-1)"
+ @keypress.enter="(e) => targetSearch({value: e.target.value, type: 'enter'})"
+ @keypress.space="(e) => targetSearch({value: e.target.value, type: 'space'})"
>
@@ -29,7 +33,12 @@
- item.click($router)" class="op-item" slot="renderItem" slot-scope="item, index">
+ item.click($router)"
+ :class="currentSelect === index ? 'active op-item' : 'op-item'"
+ slot="renderItem"
+ slot-scope="item, index"
+ >
@@ -51,8 +60,10 @@
onSearch({value: e.target.value, searchType: $route.query.searchType})"
+ @change="(e) => search({value: e.target.value, searchType: $route.query.searchType})"
:value="searchValue"
+ @keypress.enter="(e) => targetSearch({value: e.target.value, type: 'enter'})"
+ @keypress.space="(e) => targetSearch({value: e.target.value, type: 'space'})"
>
@@ -68,7 +79,7 @@
import {mapActions, mapMutations, mapState} from "vuex";
import {ipcRenderer, remote} from "electron";
import {getWindowHeight, debounce} from "./assets/common/utils";
-
+const opConfig = remote.getGlobal('opConfig');
const {Menu, MenuItem} = remote;
export default {
@@ -77,6 +88,8 @@ export default {
searchType: this.$route.query.searchType ? 'subWindow' : '',
query: this.$route.query,
searchFn: null,
+ config: opConfig.get(),
+ currentSelect: 0,
}
},
mounted() {
@@ -104,6 +117,26 @@ export default {
}
this.searchFn(v);
},
+ targetSearch(action) {
+ // 在插件界面唤起搜索功能
+ if((this.selected && this.selected.key === 'plugin-container') || this.searchType === 'subWindow') {
+ const webview = document.getElementById('webview');
+ if (action.type === 'space') {
+ if (this.config.perf.common.space) {
+ webview.send('msg-back-setSubInput', this.searchValue);
+ }
+ return;
+ }
+ webview.send('msg-back-setSubInput', this.searchValue);
+ } else if (this.showOptions) {
+ const item = this.options[this.currentSelect]
+ item.click(this.$router);
+ }
+ },
+ changeCurrent(index) {
+ this.currentSelect = this.currentSelect + index;
+ },
+
renderTitle(title) {
const result = title.split(this.searchValue);
return `
${result[0]}${this.searchValue}${result[1]}
`
@@ -242,6 +275,9 @@ export default {
max-height: 500px;
overflow: auto;
background: #fafafa;
+ &.active {
+ background: #DEE2E8;
+ }
}
}
}
diff --git a/src/renderer/pages/plugins/index.vue b/src/renderer/pages/plugins/index.vue
index 2d7b895..5438094 100644
--- a/src/renderer/pages/plugins/index.vue
+++ b/src/renderer/pages/plugins/index.vue
@@ -87,11 +87,6 @@ export default {
pluginDetail() {
return (this.devPlugins.filter(plugin => plugin.name === this.query.name)[0] || {}).features
},
- },
- watch: {
- searchValue() {
- this.webview.send('msg-back-setSubInput', this.searchValue);
- }
}
}
diff --git a/src/renderer/store/modules/main.js b/src/renderer/store/modules/main.js
index eb667f1..357e790 100644
--- a/src/renderer/store/modules/main.js
+++ b/src/renderer/store/modules/main.js
@@ -97,9 +97,9 @@ const actions = {
return;
}
const value = paylpad.value;
- // 在插件界面
+ // 在插件界面不触发其他功能
if((state.selected && state.selected.key === 'plugin-container') || paylpad.searchType === 'subWindow') {
- commit('commonUpdate', {searchValue: value})
+ commit('commonUpdate', {searchValue: value});
return;
}
const fileUrl = clipboard.read('public.file-url').replace('file://', '');