fixed: 右键启用状态.
This commit is contained in:
@@ -8,10 +8,10 @@
|
|||||||
<!-- 终端插槽 -->
|
<!-- 终端插槽 -->
|
||||||
<slot />
|
<slot />
|
||||||
<!-- 右键菜单 -->
|
<!-- 右键菜单 -->
|
||||||
<template v-if="preference.interactSetting.enableRightClickMenu" #content>
|
<template v-if="session && preference.interactSetting.enableRightClickMenu" #content>
|
||||||
<a-doption v-for="(action, index) in actions"
|
<a-doption v-for="(action, index) in actions"
|
||||||
:key="index"
|
:key="index"
|
||||||
:disabled="enabledStatus[action.item] === false"
|
:disabled="!session.handler.enabledStatus(action.item)"
|
||||||
@click="emits('click', action.item)">
|
@click="emits('click', action.item)">
|
||||||
<!-- 图标 -->
|
<!-- 图标 -->
|
||||||
<div class="action-icon">
|
<div class="action-icon">
|
||||||
@@ -31,12 +31,12 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<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 { ActionBarItems } from '../../types/terminal.const';
|
||||||
import { useTerminalStore } from '@/store';
|
import { useTerminalStore } from '@/store';
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
enabledStatus: Record<string, boolean | undefined>
|
session: ITerminalSession | undefined
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const emits = defineEmits(['click']);
|
const emits = defineEmits(['click']);
|
||||||
|
|||||||
@@ -37,8 +37,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 终端右键菜单 -->
|
<!-- 终端右键菜单 -->
|
||||||
<terminal-context-menu :enabled-status="actionsEnabledStatus"
|
<terminal-context-menu :session="session"
|
||||||
@click="action => actionsClickHandler[action] && actionsClickHandler[action]()">
|
@click="doTerminalHandle">
|
||||||
<!-- 终端容器 -->
|
<!-- 终端容器 -->
|
||||||
<div class="terminal-wrapper"
|
<div class="terminal-wrapper"
|
||||||
:style="{ background: preference.theme.schema.background }">
|
:style="{ background: preference.theme.schema.background }">
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
|
|
||||||
const { copy } = useCopy();
|
const { copy } = useCopy();
|
||||||
const { getDictValue } = useDictStore();
|
const { getDictValue } = useDictStore();
|
||||||
const { preference, tabManager, sessionManager } = useTerminalStore();
|
const { preference, sessionManager } = useTerminalStore();
|
||||||
|
|
||||||
const editorModal = ref();
|
const editorModal = ref();
|
||||||
const searchModal = ref();
|
const searchModal = ref();
|
||||||
@@ -123,36 +123,12 @@
|
|||||||
session.value?.find(word, next, options);
|
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 doTerminalHandle = (handle: string) => {
|
||||||
// 处理器
|
|
||||||
const handler = session.value?.handler[handle as keyof ITerminalSessionHandler] as () => void;
|
const handler = session.value?.handler[handle as keyof ITerminalSessionHandler] as () => void;
|
||||||
handler && handler.call(session.value?.handler);
|
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>>(() => {
|
const rightActions = computed<Array<SidebarAction>>(() => {
|
||||||
return ActionBarItems.map(s => {
|
return ActionBarItems.map(s => {
|
||||||
|
|||||||
Reference in New Issue
Block a user