From a035f02f839032774c6698bc10cc163585faeb1e Mon Sep 17 00:00:00 2001 From: moonszhang Date: Mon, 11 Mar 2024 20:11:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20=E4=BD=BF=E7=94=A8=20floatbox?= =?UTF-8?q?=20=E6=9B=BF=E6=8D=A2=E5=8E=9F=E6=8A=BD=E5=B1=89=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/src/components/CodeBlockEditor.vue | 8 +-- .../editor/src/components/FloatingBox.vue | 13 +++- .../editor/src/hooks/use-code-block-edit.ts | 1 - packages/editor/src/layouts/NavMenu.vue | 23 ++++++- .../editor/src/layouts/sidebar/Sidebar.vue | 5 ++ .../sidebar/code-block/CodeBlockListPanel.vue | 65 +++++++++++++++---- packages/editor/src/services/ui.ts | 20 ++---- packages/editor/src/theme/code-editor.scss | 6 ++ packages/editor/src/theme/sidebar.scss | 9 ++- packages/editor/src/type.ts | 20 +++--- packages/form/src/theme/form-box.scss | 2 +- .../src/PageFragmentContainer.tsx | 21 +++--- .../src/page-fragment/src/PageFragment.tsx | 1 - 13 files changed, 128 insertions(+), 66 deletions(-) diff --git a/packages/editor/src/components/CodeBlockEditor.vue b/packages/editor/src/components/CodeBlockEditor.vue index 4e849f48..f99922b7 100644 --- a/packages/editor/src/components/CodeBlockEditor.vue +++ b/packages/editor/src/components/CodeBlockEditor.vue @@ -1,6 +1,5 @@ - +
@@ -55,7 +54,7 @@ import { ColumnConfig, FormConfig, FormState, MFormBox, MFormDrawer } from '@tma import type { CodeBlockContent } from '@tmagic/schema'; import CodeEditor from '@editor/layouts/CodeEditor.vue'; -import type { Services, SlideType } from '@editor/type'; +import type { Services } from '@editor/type'; import { getConfig } from '@editor/utils/config'; defineOptions({ @@ -67,7 +66,6 @@ const props = defineProps<{ disabled?: boolean; isDataSource?: boolean; dataSourceType?: string; - slideType?: SlideType; }>(); const emit = defineEmits<{ diff --git a/packages/editor/src/components/FloatingBox.vue b/packages/editor/src/components/FloatingBox.vue index 468594e7..ba1cf007 100644 --- a/packages/editor/src/components/FloatingBox.vue +++ b/packages/editor/src/components/FloatingBox.vue @@ -1,6 +1,6 @@ diff --git a/packages/editor/src/services/ui.ts b/packages/editor/src/services/ui.ts index 772ca1f0..b4c04ed9 100644 --- a/packages/editor/src/services/ui.ts +++ b/packages/editor/src/services/ui.ts @@ -47,8 +47,13 @@ const state = reactive({ showRule: true, propsPanelSize: 'small', showAddPageButton: true, - floatBox: new Map(), hideSlideBar: false, + navMenuRect: { + left: 0, + top: 0, + width: 0, + height: 0, + }, }); const canUsePluginMethods = { @@ -110,19 +115,6 @@ class Ui extends BaseService { return Math.min((width - 60) / stageWidth || 1, (height - 80) / stageHeight || 1); } - public async setFloatBox(keys: string[]) { - const map = state.floatBox; - for (const key of keys) { - if (map.get(key)) continue; - map.set(key, { - status: false, - zIndex: 99, - top: 0, - left: 0, - }); - } - } - public resetState() { this.set('showSrc', false); this.set('uiSelectMode', false); diff --git a/packages/editor/src/theme/code-editor.scss b/packages/editor/src/theme/code-editor.scss index 8e2e0b1e..9132c495 100644 --- a/packages/editor/src/theme/code-editor.scss +++ b/packages/editor/src/theme/code-editor.scss @@ -1,3 +1,9 @@ +.m-container-vs-code { + .el-form-item { + margin-bottom: 0; + } +} + .magic-code-editor { width: 100%; } diff --git a/packages/editor/src/theme/sidebar.scss b/packages/editor/src/theme/sidebar.scss index 30c75a1d..d594f978 100644 --- a/packages/editor/src/theme/sidebar.scss +++ b/packages/editor/src/theme/sidebar.scss @@ -72,12 +72,15 @@ } .m-editor-slide-list-box { - min-width: 270px; + display: flex; + min-width: 240px; min-height: 500px; - max-height: 1024px; > div { &:first-child { - width: 100%; + min-width: 240px; } } + .m-form-box { + border-left: 1px solid #e0e0e0; + } } diff --git a/packages/editor/src/type.ts b/packages/editor/src/type.ts index 26fa0667..5ce8589a 100644 --- a/packages/editor/src/type.ts +++ b/packages/editor/src/type.ts @@ -236,20 +236,16 @@ export interface UiState { propsPanelSize: 'large' | 'default' | 'small'; /** 是否显示新增页面按钮 */ showAddPageButton: boolean; - - /** slide 拖拽悬浮窗 state */ - floatBox: Map< - string, - { - status: boolean; - zIndex: number; - top: number; - left: number; - } - >; - /** 是否隐藏侧边栏 */ hideSlideBar: boolean; + + // navMenu 的宽高 + navMenuRect: { + left: number; + top: number; + width: number; + height: number; + }; } export interface EditorNodeInfo { diff --git a/packages/form/src/theme/form-box.scss b/packages/form/src/theme/form-box.scss index 9ec14dfd..10413cb9 100644 --- a/packages/form/src/theme/form-box.scss +++ b/packages/form/src/theme/form-box.scss @@ -2,7 +2,7 @@ display: flex; flex-direction: column; padding: 16px; - width: 100%; + max-width: 90%; .el-box__header { margin: 0; } diff --git a/packages/ui-react/src/page-fragment-container/src/PageFragmentContainer.tsx b/packages/ui-react/src/page-fragment-container/src/PageFragmentContainer.tsx index 01587c23..27c24477 100644 --- a/packages/ui-react/src/page-fragment-container/src/PageFragmentContainer.tsx +++ b/packages/ui-react/src/page-fragment-container/src/PageFragmentContainer.tsx @@ -1,4 +1,3 @@ - import React, { constructor, useEffect, useMemo, useState } from 'react'; import type { MComponent, MContainer, MNode, MPage, MPageFragment } from '@tmagic/schema'; @@ -16,24 +15,24 @@ const PageFragmentContainer: React.FC = ({ config }) if (!app) return null; const MagicUiContainer = app.resolveComponent('container'); - let containerConfig = {} - const fragment = app?.dsl?.items?.find((page) => page.id === config.pageFragmentId) - if(fragment) { + let containerConfig = {}; + const fragment = app?.dsl?.items?.find((page) => page.id === config.pageFragmentId); + if (fragment) { const { id, type, items, ...others } = fragment; const itemsWithoutId = items.map((item: MNode) => { const { id, ...otherConfig } = item; return otherConfig; }); if (app?.platform === 'editor') { - containerConfig ={ + containerConfig = { ...others, items: itemsWithoutId, }; - }else { + } else { containerConfig = { ...others, - items - } + items, + }; } } @@ -43,13 +42,11 @@ const PageFragmentContainer: React.FC = ({ config }) className="magic-ui-page-fragment-container" style={app.transformStyle(config.style || {})} > - +
); }; PageFragmentContainer.displayName = 'magic-ui-page-fragment-container'; -export default PageFragmentContainer; \ No newline at end of file +export default PageFragmentContainer; diff --git a/packages/ui-react/src/page-fragment/src/PageFragment.tsx b/packages/ui-react/src/page-fragment/src/PageFragment.tsx index 5e3eb3c3..ee0ae24d 100644 --- a/packages/ui-react/src/page-fragment/src/PageFragment.tsx +++ b/packages/ui-react/src/page-fragment/src/PageFragment.tsx @@ -1,4 +1,3 @@ - import React from 'react'; import type { MComponent, MContainer, MPageFragment } from '@tmagic/schema';