1
0
mirror of https://github.com/sahadev/vue-component-creater-ui.git synced 2025-06-07 21:54:05 +08:00

update: 支持全屏预览

This commit is contained in:
shangbin 2021-12-08 20:19:41 +08:00
parent b870e28608
commit 0363ba208a
3 changed files with 56 additions and 12 deletions

View File

@ -78,6 +78,10 @@ export default {
onEditModeChange() { onEditModeChange() {
this.editMode = !this.editMode; this.editMode = !this.editMode;
this.$emit('onEditModeChange', this.editMode); this.$emit('onEditModeChange', this.editMode);
setTimeout(() => {
this.editMode = true;
}, 500);
} }
}, },
fillter: {}, fillter: {},

View File

@ -60,6 +60,11 @@
<div class="x"></div> <div class="x"></div>
</div> </div>
</div> </div>
<div id="fullScreen" v-if="!editMode">
<div style="margin: 20px; font-weight: bold;">按下ESC退出预览模式</div>
<div id="mountedEle"></div>
</div>
</template> </template>
<script> <script>
@ -73,6 +78,7 @@ import keymaster from "keymaster"
export default { export default {
name: "vcc", name: "vcc",
props: ['initCodeEntity'], props: ['initCodeEntity'],
emits: ['updateCodeEntity'],
components: { components: {
RawComponents: defineAsyncComponent(() => import("@/components/RawComponents.vue")), RawComponents: defineAsyncComponent(() => import("@/components/RawComponents.vue")),
ToolsBar: defineAsyncComponent(() => import("./ToolsBar")), ToolsBar: defineAsyncComponent(() => import("./ToolsBar")),
@ -93,7 +99,7 @@ export default {
iconCode: ("https://static.imonkey.xueersi.com/download/vcc-resource/icon/code-working-outline.svg"), iconCode: ("https://static.imonkey.xueersi.com/download/vcc-resource/icon/code-working-outline.svg"),
iconClear: ("https://static.imonkey.xueersi.com/download/vcc-resource/icon/trash-outline.svg"), iconClear: ("https://static.imonkey.xueersi.com/download/vcc-resource/icon/trash-outline.svg"),
viewMode: false editMode: true
}; };
}, },
watch: { watch: {
@ -138,6 +144,13 @@ export default {
this.undo(); this.undo();
return false return false
}); });
keymaster('esc', () => {
this.editMode = true;
this.mainPanelProvider.setEditMode(true);
return false
});
}, },
init() { init() {
@ -204,7 +217,11 @@ export default {
}, },
onEditModeChange(newValue) { onEditModeChange(newValue) {
this.mainPanelProvider.setEditMode(newValue); this.editMode = newValue;
this.$nextTick(() => {
this.mainPanelProvider.setEditMode(newValue, document.querySelector("#mountedEle"));
})
}, },
renderCode() { renderCode() {
@ -369,6 +386,21 @@ export default {
pointer-events: none; pointer-events: none;
} }
} }
#fullScreen {
width: 100%;
height: 100%;
position: fixed;
z-index: 3;
top: 0;
background: white;
}
#mountedEle {
border: 1px dashed rgb(126, 126, 128);
border-radius: 10px;
margin: 20px;
}
</style> </style>
<!-- 以下的样式作用于渲染容器中--> <!-- 以下的样式作用于渲染容器中-->

View File

@ -67,14 +67,19 @@ export class MainPanelProvider {
componentOptions.template = template.content; componentOptions.template = template.content;
// 渲染当前代码 if (this.editMode) {
createBaseApp(componentOptions).mount(readyForMoutedElement); // 渲染当前代码
createBaseApp(componentOptions).mount(readyForMoutedElement);
// 拍平数据结构 // 拍平数据结构
this.editMode && this.flatDataStructure(rawDataStructure); this.flatDataStructure(rawDataStructure);
// 开启编辑模式 // 开启编辑模式
this.editMode && this.enableEditMode(); this.enableEditMode();
} else {
// 渲染当前代码
createBaseApp(componentOptions).mount(this.mountedEle);
}
return this; return this;
} }
@ -88,8 +93,9 @@ export class MainPanelProvider {
return this; return this;
} }
setEditMode(editMode) { setEditMode(editMode, mountedEle) {
this.editMode = editMode; this.editMode = editMode;
this.mountedEle = mountedEle;
this.reRender(); this.reRender();
} }
@ -117,6 +123,7 @@ export class MainPanelProvider {
createMountedElement() { createMountedElement() {
const renderControlPanel = this.getControlPanelRoot(); const renderControlPanel = this.getControlPanelRoot();
const child = document.createElement('div'); const child = document.createElement('div');
child.style = "background-color: white;"
// 清空子节点 // 清空子节点
while (renderControlPanel.firstChild) { while (renderControlPanel.firstChild) {
@ -253,6 +260,7 @@ export class MainPanelProvider {
* 开启编辑模式并禁用默认的事件添加编辑事件 * 开启编辑模式并禁用默认的事件添加编辑事件
*/ */
enableEditMode() { enableEditMode() {
debugger
const renderControlPanel = this.getControlPanelRoot(); const renderControlPanel = this.getControlPanelRoot();
// 加一个延迟的作用是给el-table这种绘制需要时间的组件留出充足的时间否则会造成el-table渲染不到页面上 // 加一个延迟的作用是给el-table这种绘制需要时间的组件留出充足的时间否则会造成el-table渲染不到页面上
setTimeout(() => { setTimeout(() => {