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:
parent
b870e28608
commit
0363ba208a
@ -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: {},
|
||||||
|
@ -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>
|
||||||
|
|
||||||
<!-- 以下的样式作用于渲染容器中-->
|
<!-- 以下的样式作用于渲染容器中-->
|
||||||
|
@ -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(() => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user