mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-05-11 21:39:01 +08:00
feat(editor): 代码块功能新增slot
This commit is contained in:
parent
2a8cfe58c4
commit
452c80d829
@ -26,6 +26,10 @@
|
|||||||
<template #code-block-panel-header>
|
<template #code-block-panel-header>
|
||||||
<slot name="code-block-panel-header"></slot>
|
<slot name="code-block-panel-header"></slot>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template #code-block-panel-tool>
|
||||||
|
<slot name="code-block-panel-tool"></slot>
|
||||||
|
</template>
|
||||||
</sidebar>
|
</sidebar>
|
||||||
</slot>
|
</slot>
|
||||||
</template>
|
</template>
|
||||||
|
@ -26,6 +26,10 @@
|
|||||||
<template #code-block-panel-header v-if="item === 'code-block'">
|
<template #code-block-panel-header v-if="item === 'code-block'">
|
||||||
<slot name="code-block-panel-header"></slot>
|
<slot name="code-block-panel-header"></slot>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template #code-block-panel-tool v-if="item === 'code-block'">
|
||||||
|
<slot name="code-block-panel-tool"></slot>
|
||||||
|
</template>
|
||||||
</tab-pane>
|
</tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</template>
|
</template>
|
||||||
|
@ -35,6 +35,11 @@
|
|||||||
<component v-else-if="config.slots?.codeBlockPanelHeader" :is="config.slots.codeBlockPanelHeader" />
|
<component v-else-if="config.slots?.codeBlockPanelHeader" :is="config.slots.codeBlockPanelHeader" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template #code-block-panel-tool v-if="data === 'code-block' || config.slots?.codeBlockPanelTool">
|
||||||
|
<slot v-if="data === 'code-block'" name="code-block-panel-tool"></slot>
|
||||||
|
<component v-else-if="config.slots?.codeBlockPanelTool" :is="config.slots.codeBlockPanelTool" />
|
||||||
|
</template>
|
||||||
|
|
||||||
<template
|
<template
|
||||||
#layer-node-content="{ data: nodeData, node }"
|
#layer-node-content="{ data: nodeData, node }"
|
||||||
v-if="data === 'layer' || config.slots?.layerNodeContent"
|
v-if="data === 'layer' || config.slots?.layerNodeContent"
|
||||||
|
@ -1,19 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="m-editor-code-block-list">
|
<div class="m-editor-code-block-list">
|
||||||
<slot name="code-block-panel-header"></slot>
|
<slot name="code-block-panel-header">
|
||||||
<div class="create-code-button">
|
<div class="create-code-button">
|
||||||
<el-button type="primary" size="small" @click="createCodeBlock">新增代码块</el-button>
|
<el-button type="primary" size="small" @click="createCodeBlock">新增代码块</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-divider class="divider" />
|
<el-divider class="divider" />
|
||||||
|
</slot>
|
||||||
|
|
||||||
<!-- 代码块列表 -->
|
<!-- 代码块列表 -->
|
||||||
<div class="list-container" v-if="state.codeBlockMap">
|
<div class="list-container" v-if="state.codeBlockMap">
|
||||||
<div v-for="(value, key) in state.codeBlockMap" :key="key">
|
<div v-for="(value, key) in state.codeBlockMap" :key="key">
|
||||||
<div class="list-item">
|
<div class="list-item">
|
||||||
<div class="code-name">{{ value.name }}({{ key }})</div>
|
<div class="code-name">{{ value.name }}({{ key }})</div>
|
||||||
<el-tooltip class="box-item" effect="dark" content="编辑代码" placement="top">
|
<div class="right-tool">
|
||||||
<el-icon class="edit-icon" @click="editCode(key)"><EditPen /></el-icon>
|
<el-tooltip effect="dark" content="编辑代码" placement="top">
|
||||||
</el-tooltip>
|
<el-icon class="edit-icon" @click="editCode(key)"><Edit /></el-icon>
|
||||||
|
</el-tooltip>
|
||||||
|
<slot name="code-block-panel-tool"></slot>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -25,7 +29,7 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { inject, reactive, watchEffect } from 'vue';
|
import { inject, reactive, watchEffect } from 'vue';
|
||||||
import { EditPen } from '@element-plus/icons-vue';
|
import { Edit } from '@element-plus/icons-vue';
|
||||||
|
|
||||||
import type { CodeBlockConfig, Services, State } from '../../../type';
|
import type { CodeBlockConfig, Services, State } from '../../../type';
|
||||||
|
|
||||||
|
@ -16,11 +16,16 @@
|
|||||||
.list-item {
|
.list-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
.edit-icon {
|
.right-tool {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 15px;
|
right: 15px;
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.edit-icon {
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.code-name {
|
.code-name {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@ -28,7 +33,7 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
margin-right: 15px;
|
margin-right: 60px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user