diff --git a/src/layouts/sidebar/index.tsx b/src/layouts/sidebar/index.tsx index 7818690d8..37efb2c12 100644 --- a/src/layouts/sidebar/index.tsx +++ b/src/layouts/sidebar/index.tsx @@ -1,16 +1,17 @@ -import { GATEWAY_URL } from '~/constants/env' -import { KBarWrapper } from '~/components/k-bar' -import $RouterView from '~/layouts/router-view' import { NLayoutContent } from 'naive-ui' -import { RESTManager } from '~/utils' import { computed, defineComponent, watchEffect } from 'vue' import { RouterLink } from 'vue-router' +import type { CSSProperties } from 'vue' + +import { KBarWrapper } from '~/components/k-bar' +import { GATEWAY_URL } from '~/constants/env' +import $RouterView from '~/layouts/router-view' +import { RESTManager } from '~/utils' import { Sidebar } from '../../components/sidebar' import { useStoreRef } from '../../hooks/use-store-ref' import { UIStore } from '../../stores/ui' import styles from './index.module.css' -import type { CSSProperties } from 'vue' export const SidebarLayout = defineComponent({ name: 'SidebarLayout', @@ -21,7 +22,18 @@ export const SidebarLayout = defineComponent({ const { meta, b } = useMagicKeys() watchEffect(() => { if (meta.value && b.value) { - collapse.value = !collapse.value + // is the focus in the input box? + const activeElement = document.activeElement + const isInEditor = + activeElement?.tagName === 'TEXTAREA' || + activeElement?.tagName === 'INPUT' || + activeElement?.getAttribute('contenteditable') === 'true' || + activeElement?.closest('.monaco-editor') || + activeElement?.closest('[role="textbox"]') + + if (!isInEditor) { + collapse.value = !collapse.value + } } })