Files
windmill/frontend/src/lib/components/apps/editor/component/ComponentNavigation.svelte
T
Faton Ramadani afedbc89ad feat(frontend): app editor right click menu (#3050)
* fix(frontend): app editor right click menu

* feat(frontend): fix actions

* feat(frontend): fix delete

* fix(frontend): Fix menus

* feat(frontend): fix right-click menu

* feat(frontend): fix build

* feat(frontend): correctly delete multiple components
2024-01-24 17:08:30 +01:00

61 lines
1.2 KiB
Svelte

<script lang="ts">
import ComponentCallbacks from './ComponentCallbacks.svelte'
let componentCallbacks: ComponentCallbacks | undefined = undefined
function keydown(event: KeyboardEvent) {
// Ignore keydown events if the user is typing in monaco
let classes = event.target?.['className']
if (
(typeof classes === 'string' && classes.includes('inputarea')) ||
['INPUT', 'TEXTAREA'].includes(document.activeElement?.tagName!)
) {
return
}
switch (event.key) {
case 'Escape':
componentCallbacks?.handleEscape(event)
break
case 'ArrowUp': {
componentCallbacks?.handleArrowUp(event)
break
}
case 'ArrowDown': {
componentCallbacks?.down(event)
break
}
case 'ArrowRight': {
componentCallbacks?.right(event)
break
}
case 'ArrowLeft': {
componentCallbacks?.left(event)
break
}
case 'c':
if (event.ctrlKey || event.metaKey) {
componentCallbacks?.handleCopy(event)
}
break
case 'x':
if (event.ctrlKey || event.metaKey) {
componentCallbacks?.handleCut(event)
}
break
default:
break
}
}
</script>
<ComponentCallbacks bind:this={componentCallbacks} />
<svelte:window on:keydown={keydown} on:paste={componentCallbacks?.handlePaste} />