Skip to content

Commit 0363ba2

Browse files
author
shangbin
committed
update: 支持全屏预览
1 parent b870e28 commit 0363ba2

File tree

3 files changed

+56
-12
lines changed

3 files changed

+56
-12
lines changed

src/components-v2/ToolsBar.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ export default {
7878
onEditModeChange() {
7979
this.editMode = !this.editMode;
8080
this.$emit('onEditModeChange', this.editMode);
81+
82+
setTimeout(() => {
83+
this.editMode = true;
84+
}, 500);
8185
}
8286
},
8387
fillter: {},

src/components-v2/VCC.vue

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@
6060
<div class="x"></div>
6161
</div>
6262
</div>
63+
64+
<div id="fullScreen" v-if="!editMode">
65+
<div style="margin: 20px; font-weight: bold;">按下ESC退出预览模式</div>
66+
<div id="mountedEle"></div>
67+
</div>
6368
</template>
6469

6570
<script>
@@ -73,6 +78,7 @@ import keymaster from "keymaster"
7378
export default {
7479
name: "vcc",
7580
props: ['initCodeEntity'],
81+
emits: ['updateCodeEntity'],
7682
components: {
7783
RawComponents: defineAsyncComponent(() => import("@/components/RawComponents.vue")),
7884
ToolsBar: defineAsyncComponent(() => import("./ToolsBar")),
@@ -93,7 +99,7 @@ export default {
9399
iconCode: ("https://static.imonkey.xueersi.com/download/vcc-resource/icon/code-working-outline.svg"),
94100
iconClear: ("https://static.imonkey.xueersi.com/download/vcc-resource/icon/trash-outline.svg"),
95101
96-
viewMode: false
102+
editMode: true
97103
};
98104
},
99105
watch: {
@@ -138,6 +144,13 @@ export default {
138144
this.undo();
139145
return false
140146
});
147+
148+
149+
keymaster('esc', () => {
150+
this.editMode = true;
151+
this.mainPanelProvider.setEditMode(true);
152+
return false
153+
});
141154
},
142155
143156
init() {
@@ -204,7 +217,11 @@ export default {
204217
},
205218
206219
onEditModeChange(newValue) {
207-
this.mainPanelProvider.setEditMode(newValue);
220+
this.editMode = newValue;
221+
222+
this.$nextTick(() => {
223+
this.mainPanelProvider.setEditMode(newValue, document.querySelector("#mountedEle"));
224+
})
208225
},
209226
210227
renderCode() {
@@ -369,6 +386,21 @@ export default {
369386
pointer-events: none;
370387
}
371388
}
389+
390+
#fullScreen {
391+
width: 100%;
392+
height: 100%;
393+
position: fixed;
394+
z-index: 3;
395+
top: 0;
396+
background: white;
397+
}
398+
399+
#mountedEle {
400+
border: 1px dashed rgb(126, 126, 128);
401+
border-radius: 10px;
402+
margin: 20px;
403+
}
372404
</style>
373405

374406
<!-- 以下的样式作用于渲染容器中-->

src/libs/main-panel.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,20 @@ export class MainPanelProvider {
6666
const componentOptions = (new Function(`return ${newScript}`))();
6767

6868
componentOptions.template = template.content;
69-
70-
// 渲染当前代码
71-
createBaseApp(componentOptions).mount(readyForMoutedElement);
72-
73-
// 拍平数据结构
74-
this.editMode && this.flatDataStructure(rawDataStructure);
75-
76-
// 开启编辑模式
77-
this.editMode && this.enableEditMode();
69+
70+
if (this.editMode) {
71+
// 渲染当前代码
72+
createBaseApp(componentOptions).mount(readyForMoutedElement);
73+
74+
// 拍平数据结构
75+
this.flatDataStructure(rawDataStructure);
76+
77+
// 开启编辑模式
78+
this.enableEditMode();
79+
} else {
80+
// 渲染当前代码
81+
createBaseApp(componentOptions).mount(this.mountedEle);
82+
}
7883

7984
return this;
8085
}
@@ -88,8 +93,9 @@ export class MainPanelProvider {
8893
return this;
8994
}
9095

91-
setEditMode(editMode) {
96+
setEditMode(editMode, mountedEle) {
9297
this.editMode = editMode;
98+
this.mountedEle = mountedEle;
9399
this.reRender();
94100
}
95101

@@ -117,6 +123,7 @@ export class MainPanelProvider {
117123
createMountedElement() {
118124
const renderControlPanel = this.getControlPanelRoot();
119125
const child = document.createElement('div');
126+
child.style = "background-color: white;"
120127

121128
// 清空子节点
122129
while (renderControlPanel.firstChild) {
@@ -253,6 +260,7 @@ export class MainPanelProvider {
253260
* 开启编辑模式,并禁用默认的事件,添加编辑事件
254261
*/
255262
enableEditMode() {
263+
debugger
256264
const renderControlPanel = this.getControlPanelRoot();
257265
// 加一个延迟的作用是:给el-table这种绘制需要时间的组件留出充足的时间,否则会造成el-table渲染不到页面上
258266
setTimeout(() => {

0 commit comments

Comments
 (0)