From a676ed89d1f29c78b0063731d3729d579c5774b8 Mon Sep 17 00:00:00 2001 From: asp_ly Date: Fri, 17 Jan 2025 21:36:34 +0800 Subject: [PATCH] 1 --- .../List/components/DeploymentConfigModal.tsx | 77 +++++++++++++++++-- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/frontend/src/pages/Deploy/Deployment/List/components/DeploymentConfigModal.tsx b/frontend/src/pages/Deploy/Deployment/List/components/DeploymentConfigModal.tsx index d89f5c18..10c9b573 100644 --- a/frontend/src/pages/Deploy/Deployment/List/components/DeploymentConfigModal.tsx +++ b/frontend/src/pages/Deploy/Deployment/List/components/DeploymentConfigModal.tsx @@ -1,5 +1,6 @@ -import React from 'react'; +import React, { useState, useEffect } from 'react'; import {Modal, Button} from 'antd'; +import { FullscreenOutlined, FullscreenExitOutlined } from '@ant-design/icons'; import type {DeploymentConfig} from '../types'; import './styles.less'; import {FormButtonGroup, FormItem, Select, Submit, FormGrid, Input, ArrayTable} from '@formily/antd-v5' @@ -9,6 +10,68 @@ import {action} from '@formily/reactive' import request from '@/utils/request'; import Editor from '@/components/Editor'; +// 定义 ScriptEditor 组件 +const ScriptEditor: React.FC = (props) => { + const [isFullscreen, setIsFullscreen] = useState(false); + + const toggleFullscreen = () => { + setIsFullscreen(!isFullscreen); + }; + + // 添加 ESC 键监听 + useEffect(() => { + const handleEsc = (event: KeyboardEvent) => { + if (event.key === 'Escape' && isFullscreen) { + setIsFullscreen(false); + } + }; + window.addEventListener('keydown', handleEsc); + return () => { + window.removeEventListener('keydown', handleEsc); + }; + }, [isFullscreen]); + + return ( +
+ + )} + +
+ + ); +}; + interface DeploymentConfigModalProps { open: boolean; onCancel: () => void; @@ -63,7 +126,7 @@ const DeploymentConfigModal: React.FC = ({ FormGrid, Input, ArrayTable, - Editor + ScriptEditor }, scope: { useAsyncDataSource @@ -331,13 +394,17 @@ const DeploymentConfigModal: React.FC = ({ marginBottom: '16px' } }, - 'x-component': 'Editor', + 'x-component': 'ScriptEditor', 'x-component-props': { - height: '240px', language: 'shell', theme: 'vs-dark', options: { - minimap: { enabled: false }, + minimap: { + enabled: true, + scale: 2, + showSlider: "mouseover", + renderCharacters: false + }, scrollBeyondLastLine: false, fontSize: 14, lineNumbers: 'on',