增加代码编辑器表单组件

This commit is contained in:
dengqichen 2025-11-12 22:50:49 +08:00
parent 826c2d1a76
commit e5e20a4dbb

View File

@ -162,7 +162,13 @@ export const TemplateEditor: React.FC<TemplateEditorProps> = ({
// 设置自动完成 // 设置自动完成
monaco.languages.registerCompletionItemProvider('freemarker', { monaco.languages.registerCompletionItemProvider('freemarker', {
provideCompletionItems: (model, position) => { // 使用宽松的类型以兼容不同版本的 monaco 类型定义
provideCompletionItems: (
model: any,
position: any,
context?: any,
token?: any
) => {
const suggestions = [ const suggestions = [
// FreeMarker 指令 // FreeMarker 指令
...['if', 'list', 'assign', 'include', 'macro'].map(keyword => ({ ...['if', 'list', 'assign', 'include', 'macro'].map(keyword => ({
@ -183,7 +189,7 @@ export const TemplateEditor: React.FC<TemplateEditorProps> = ({
})) }))
]; ];
return { suggestions }; return { suggestions } as any; // 兼容 CompletionList 类型
} }
}); });
} }
@ -192,8 +198,12 @@ export const TemplateEditor: React.FC<TemplateEditorProps> = ({
registerFreeMarker(); registerFreeMarker();
}, [variables]); }, [variables]);
const handleEditorDidMount = (editor: editor.IStandaloneCodeEditor) => { const handleEditorDidMount = (
editorRef.current = editor; ed: editor.IStandaloneCodeEditor,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
monacoInstance?: unknown
) => {
editorRef.current = ed;
}; };
const getVariableTypeColor = (type: string) => { const getVariableTypeColor = (type: string) => {
@ -220,11 +230,11 @@ export const TemplateEditor: React.FC<TemplateEditorProps> = ({
<div className="flex-1 overflow-hidden"> <div className="flex-1 overflow-hidden">
<Editor <Editor
ref={editorRef}
value={value} value={value}
onChange={onChange} onChange={onChange}
language="freemarker" language="freemarker"
theme="vs-light" theme="vs-light"
onMount={handleEditorDidMount as any}
options={{ options={{
minimap: { enabled: false }, minimap: { enabled: false },
scrollBeyondLastLine: false, scrollBeyondLastLine: false,