fixed: 右键启用状态.

This commit is contained in:
lijiahang
2024-01-16 09:59:27 +08:00
parent 0977ef0703
commit 419b364c9e
2 changed files with 7 additions and 31 deletions

View File

@@ -8,10 +8,10 @@
<!-- 终端插槽 -->
<slot />
<!-- 右键菜单 -->
<template v-if="preference.interactSetting.enableRightClickMenu" #content>
<template v-if="session && preference.interactSetting.enableRightClickMenu" #content>
<a-doption v-for="(action, index) in actions"
:key="index"
:disabled="enabledStatus[action.item] === false"
:disabled="!session.handler.enabledStatus(action.item)"
@click="emits('click', action.item)">
<!-- 图标 -->
<div class="action-icon">
@@ -31,12 +31,12 @@
</script>
<script lang="ts" setup>
import type { ContextMenuItem } from '../../types/terminal.type';
import type { ContextMenuItem, ITerminalSession } from '../../types/terminal.type';
import { ActionBarItems } from '../../types/terminal.const';
import { useTerminalStore } from '@/store';
defineProps<{
enabledStatus: Record<string, boolean | undefined>
session: ITerminalSession | undefined
}>();
const emits = defineEmits(['click']);

View File

@@ -37,8 +37,8 @@
</div>
</div>
<!-- 终端右键菜单 -->
<terminal-context-menu :enabled-status="actionsEnabledStatus"
@click="action => actionsClickHandler[action] && actionsClickHandler[action]()">
<terminal-context-menu :session="session"
@click="doTerminalHandle">
<!-- 终端容器 -->
<div class="terminal-wrapper"
:style="{ background: preference.theme.schema.background }">
@@ -84,7 +84,7 @@
const { copy } = useCopy();
const { getDictValue } = useDictStore();
const { preference, tabManager, sessionManager } = useTerminalStore();
const { preference, sessionManager } = useTerminalStore();
const editorModal = ref();
const searchModal = ref();
@@ -123,36 +123,12 @@
session.value?.find(word, next, options);
};
// 操作启用状态
const actionsEnabledStatus = computed<Record<string, boolean | undefined>>(() => {
return {
paste: !!session.value?.canWrite,
interrupt: !!session.value?.canWrite,
enter: !!session.value?.canWrite,
commandEditor: !!session.value?.canWrite,
disconnect: !!session.value?.connected,
};
});
// 执行终端操作
const doTerminalHandle = (handle: string) => {
// 处理器
const handler = session.value?.handler[handle as keyof ITerminalSessionHandler] as () => void;
handler && handler.call(session.value?.handler);
};
// 操作点击逻辑
const actionsClickHandler: Record<string, () => void> = {
// 搜索
search: () => searchModal.value.toggle(),
// 命令编辑器
commandEditor: () => editorModal.value.open('', ''),
// 断开连接
disconnect: () => session.value?.disconnect(),
// 关闭
close: () => tabManager.deleteTab(props.tab.key),
};
// 右侧操作
const rightActions = computed<Array<SidebarAction>>(() => {
return ActionBarItems.map(s => {