Skip to content

Commit 03cae70

Browse files
committed
fix: improve keyboard shortcut logic, fix #1846
1 parent c5ce1ce commit 03cae70

File tree

5 files changed

+28
-18
lines changed

5 files changed

+28
-18
lines changed

packages/app-frontend/src/features/App.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export default defineComponent({
9696
:class="{
9797
'disconnected pointer-events-none': !isInitializing && !isConnected
9898
}"
99+
tabindex="0"
99100
>
100101
<AppConnecting
101102
v-if="isInitializing"

packages/app-frontend/src/features/components/ComponentsInspector.vue

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import ComponentTreeNode from './ComponentTreeNode.vue'
44
import SelectedComponentPane from './SelectedComponentPane.vue'
55
66
import { onMounted, ref, provide, defineComponent } from '@vue/composition-api'
7-
import { onKeyDown, onKeyUp } from '@front/util/keyboard'
7+
import { onKeyDown } from '@front/util/keyboard'
88
import { useComponentPick, useComponents, loadComponent } from './composable'
99
1010
export default defineComponent({
@@ -45,16 +45,17 @@ export default defineComponent({
4545
if (event.key === 'f' && event.altKey) {
4646
treeFilterInput.value.focus()
4747
return false
48-
}
49-
})
50-
51-
onKeyUp(event => {
52-
if (event.key === 's' && !pickingComponent.value) {
48+
} else if (event.key === 's' && event.altKey && !pickingComponent.value) {
5349
startPickingComponent()
50+
return false
5451
} else if (event.key === 'Escape' && pickingComponent.value) {
5552
stopPickingComponent()
53+
return false
54+
} else if (event.key === 'r' && (event.ctrlKey || event.metaKey) && event.altKey) {
55+
refresh()
56+
return false
5657
}
57-
})
58+
}, true)
5859
5960
// Refresh
6061
@@ -183,7 +184,10 @@ export default defineComponent({
183184
/>
184185

185186
<VueButton
186-
v-tooltip="'Force refresh'"
187+
v-tooltip="{
188+
content: $t('ComponentTree.refresh.tooltip'),
189+
html: true
190+
}"
187191
class="icon-button flat"
188192
icon-left="refresh"
189193
@click="refresh()"

packages/app-frontend/src/features/components/SelectedComponentPane.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default defineComponent({
3737
stateFilterInput.value.focus()
3838
return false
3939
}
40-
})
40+
}, true)
4141
4242
const sameApp = computed(() => selectedComponent.data.value?.id.split(':')[0] === selectedComponentId.value?.split(':')[0])
4343

packages/app-frontend/src/locales/en.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,14 @@ export default {
5454
},
5555
ComponentTree: {
5656
select: {
57-
tooltip: '[[S]] Select component in the page',
57+
tooltip: '[[{{keys.alt}}]] + [[S]] Select component in the page',
5858
},
5959
filter: {
6060
tooltip: '[[{{keys.alt}}]] + [[F]] Filter components by name',
6161
},
62+
refresh: {
63+
tooltip: '[[{{keys.ctrl}}]] + [[{{keys.alt}}]] + [[R]] Force refresh',
64+
},
6265
},
6366
ComponentInstance: {
6467
consoleId: {

packages/app-frontend/src/util/keyboard.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import { onMounted, onUnmounted } from '@vue/composition-api'
22

33
type KeyboardHandler = (event: KeyboardEvent) => boolean | void | Promise<boolean | void>
44

5-
function handleKeyboard (type: 'keyup' | 'keydown', cb: KeyboardHandler) {
5+
function handleKeyboard (type: 'keyup' | 'keydown', cb: KeyboardHandler, force: boolean) {
66
function handler (event: KeyboardEvent) {
7-
if (typeof HTMLElement !== 'undefined' && event.target instanceof HTMLElement && (
8-
event.target.tagName === 'INPUT' ||
9-
event.target.tagName === 'TEXTAREA'
7+
if (!force && (
8+
typeof HTMLElement !== 'undefined' && event.target instanceof HTMLElement && (
9+
event.target.tagName === 'INPUT' ||
10+
event.target.tagName === 'TEXTAREA'
11+
)
1012
)) {
1113
return
1214
}
@@ -26,10 +28,10 @@ function handleKeyboard (type: 'keyup' | 'keydown', cb: KeyboardHandler) {
2628
})
2729
}
2830

29-
export function onKeyUp (cb: KeyboardHandler) {
30-
handleKeyboard('keyup', cb)
31+
export function onKeyUp (cb: KeyboardHandler, force = false) {
32+
handleKeyboard('keyup', cb, force)
3133
}
3234

33-
export function onKeyDown (cb: KeyboardHandler) {
34-
handleKeyboard('keydown', cb)
35+
export function onKeyDown (cb: KeyboardHandler, force = false) {
36+
handleKeyboard('keydown', cb, force)
3537
}

0 commit comments

Comments
 (0)