From 2201fbe80c5e14254c4f5746f1b82209711aef5e Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 30 Aug 2022 17:37:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(editor,stage,ui,runtime):=20=E6=B5=81?= =?UTF-8?q?=E5=BC=8F=E5=B8=83=E5=B1=80=E4=B8=8B=EF=BC=8Cheight=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=AE=BE=E7=BD=AE=E6=88=90auto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix #298 --- packages/editor/src/Editor.vue | 2 +- packages/editor/src/layouts/PropsPanel.vue | 104 +++++++++--------- packages/stage/src/StageDragResize.ts | 3 +- packages/stage/src/style.css | 4 + packages/ui-react/src/container/Container.tsx | 2 +- packages/ui-react/src/container/formConfig.ts | 11 ++ packages/ui-react/src/page/Page.tsx | 4 +- packages/ui-react/src/page/formConfig.ts | 11 ++ packages/ui-vue2/src/container/Container.vue | 2 +- packages/ui-vue2/src/container/formConfig.ts | 11 ++ packages/ui-vue2/src/container/initValue.ts | 8 +- packages/ui-vue2/src/page/Page.vue | 4 +- packages/ui-vue2/src/page/formConfig.ts | 11 ++ packages/ui/src/container/src/Container.vue | 2 +- packages/ui/src/container/src/formConfig.ts | 11 ++ packages/ui/src/page/src/formConfig.ts | 11 ++ packages/ui/src/page/src/index.vue | 4 +- runtime/vue2/playground/App.vue | 11 +- runtime/vue3/playground/App.vue | 10 ++ 19 files changed, 163 insertions(+), 63 deletions(-) diff --git a/packages/editor/src/Editor.vue b/packages/editor/src/Editor.vue index 8c6a8f07..95a1f5de 100644 --- a/packages/editor/src/Editor.vue +++ b/packages/editor/src/Editor.vue @@ -31,7 +31,7 @@ - diff --git a/packages/stage/src/StageDragResize.ts b/packages/stage/src/StageDragResize.ts index 67531c85..d135ded5 100644 --- a/packages/stage/src/StageDragResize.ts +++ b/packages/stage/src/StageDragResize.ts @@ -519,6 +519,7 @@ export default class StageDragResize extends EventEmitter { const isAbsolute = this.mode === Mode.ABSOLUTE; const isFixed = this.mode === Mode.FIXED; + const isSortable = this.mode === Mode.SORTABLE; let { moveableOptions = {} } = this.core.config; @@ -573,7 +574,7 @@ export default class StageDragResize extends EventEmitter { // 设置0的话无法移动到left为0,所以只能设置为-1 left: -1, right: this.container.clientWidth - 1, - bottom: this.container.clientHeight, + bottom: isSortable ? undefined : this.container.clientHeight, ...(moveableOptions.bounds || {}), }, ...options, diff --git a/packages/stage/src/style.css b/packages/stage/src/style.css index e381e107..e5d54a20 100644 --- a/packages/stage/src/style.css +++ b/packages/stage/src/style.css @@ -9,3 +9,7 @@ opacity: .1; pointer-events: none; } + +.magic-ui-container.magic-layout-relative { + min-height: 50px; +} diff --git a/packages/ui-react/src/container/Container.tsx b/packages/ui-react/src/container/Container.tsx index 9c2b86cb..dab1b071 100644 --- a/packages/ui-react/src/container/Container.tsx +++ b/packages/ui-react/src/container/Container.tsx @@ -37,7 +37,7 @@ const Container: React.FC = ({ config, id }) => { return (
{config.items?.map((item: MComponent | MContainer) => { diff --git a/packages/ui-react/src/container/formConfig.ts b/packages/ui-react/src/container/formConfig.ts index d9e97a47..20c71b84 100644 --- a/packages/ui-react/src/container/formConfig.ts +++ b/packages/ui-react/src/container/formConfig.ts @@ -26,5 +26,16 @@ export default [ { value: 'absolute', text: '绝对定位' }, { value: 'relative', text: '流式布局' }, ], + onChange: (formState: any, v: string, { model }: any) => { + if (!model.style) return v; + if (v === 'relative') { + model.style.height = 'auto'; + } else { + const el = formState.stage?.renderer?.contentWindow.document.getElementById(model.id); + if (el) { + model.style.height = el.getBoundingClientRect().height; + } + } + }, }, ]; diff --git a/packages/ui-react/src/page/Page.tsx b/packages/ui-react/src/page/Page.tsx index 1a8b3ac8..993effc0 100644 --- a/packages/ui-react/src/page/Page.tsx +++ b/packages/ui-react/src/page/Page.tsx @@ -39,7 +39,9 @@ const Page: React.FC = ({ config }) => { return (
{config.items?.map((item: MComponent | MContainer) => { diff --git a/packages/ui-react/src/page/formConfig.ts b/packages/ui-react/src/page/formConfig.ts index 54fd0012..d543b155 100644 --- a/packages/ui-react/src/page/formConfig.ts +++ b/packages/ui-react/src/page/formConfig.ts @@ -36,5 +36,16 @@ export default [ { value: 'absolute', text: '绝对定位' }, { value: 'relative', text: '流式布局' }, ], + onChange: (formState: any, v: string, { model }: any) => { + if (!model.style) return v; + if (v === 'relative') { + model.style.height = 'auto'; + } else { + const el = formState.stage?.renderer?.contentWindow.document.getElementById(model.id); + if (el) { + model.style.height = el.getBoundingClientRect().height; + } + } + }, }, ]; diff --git a/packages/ui-vue2/src/container/Container.vue b/packages/ui-vue2/src/container/Container.vue index e11cf880..4b6c372a 100644 --- a/packages/ui-vue2/src/container/Container.vue +++ b/packages/ui-vue2/src/container/Container.vue @@ -2,7 +2,7 @@
diff --git a/packages/ui-vue2/src/container/formConfig.ts b/packages/ui-vue2/src/container/formConfig.ts index d9e97a47..20c71b84 100644 --- a/packages/ui-vue2/src/container/formConfig.ts +++ b/packages/ui-vue2/src/container/formConfig.ts @@ -26,5 +26,16 @@ export default [ { value: 'absolute', text: '绝对定位' }, { value: 'relative', text: '流式布局' }, ], + onChange: (formState: any, v: string, { model }: any) => { + if (!model.style) return v; + if (v === 'relative') { + model.style.height = 'auto'; + } else { + const el = formState.stage?.renderer?.contentWindow.document.getElementById(model.id); + if (el) { + model.style.height = el.getBoundingClientRect().height; + } + } + }, }, ]; diff --git a/packages/ui-vue2/src/container/initValue.ts b/packages/ui-vue2/src/container/initValue.ts index 21dc884a..29663a51 100644 --- a/packages/ui-vue2/src/container/initValue.ts +++ b/packages/ui-vue2/src/container/initValue.ts @@ -16,4 +16,10 @@ * limitations under the License. */ -export default {}; +export default { + items: [], + style: { + width: '375', + height: '100', + }, +}; diff --git a/packages/ui-vue2/src/page/Page.vue b/packages/ui-vue2/src/page/Page.vue index 4896db85..d82c67d1 100644 --- a/packages/ui-vue2/src/page/Page.vue +++ b/packages/ui-vue2/src/page/Page.vue @@ -1,7 +1,9 @@