mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-12-07 02:36:57 +08:00
refactor(editor): 新增数据源按钮封装成组件
This commit is contained in:
parent
a2a9556ab8
commit
70d730ca82
@ -92,6 +92,7 @@ export { default as KeyValue } from './fields/KeyValue.vue';
|
||||
export { default as CodeBlockList } from './layouts/sidebar/code-block/CodeBlockList.vue';
|
||||
export { default as CodeBlockListPanel } from './layouts/sidebar/code-block/CodeBlockListPanel.vue';
|
||||
export { default as DataSourceConfigPanel } from './layouts/sidebar/data-source/DataSourceConfigPanel.vue';
|
||||
export { default as DataSourceAddButton } from './layouts/sidebar/data-source/DataSourceAddButton.vue';
|
||||
export { default as PropsPanel } from './layouts/props-panel/PropsPanel.vue';
|
||||
export { default as PropsFormPanel } from './layouts/props-panel/FormPanel.vue';
|
||||
export { default as ToolButton } from './components/ToolButton.vue';
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
<template>
|
||||
<TMagicPopover
|
||||
placement="right"
|
||||
trigger="hover"
|
||||
popper-class="data-source-list-panel-add-menu"
|
||||
:destroy-on-close="true"
|
||||
>
|
||||
<template #reference>
|
||||
<TMagicButton v-bind="addButtonConfig || {}">{{ addButtonText || '' }}</TMagicButton>
|
||||
</template>
|
||||
<ToolButton
|
||||
v-for="(item, index) in datasourceTypeList"
|
||||
:data="{
|
||||
type: 'button',
|
||||
text: item.text,
|
||||
handler: () => {
|
||||
$emit('add', item.type);
|
||||
},
|
||||
}"
|
||||
:key="index"
|
||||
></ToolButton>
|
||||
</TMagicPopover>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { type ButtonProps, TMagicButton, TMagicPopover } from '@tmagic/design';
|
||||
|
||||
import ToolButton from '@editor/components/ToolButton.vue';
|
||||
|
||||
defineOptions({
|
||||
name: 'MEditorDataSourceAddButton',
|
||||
});
|
||||
|
||||
defineProps<{
|
||||
datasourceTypeList: {
|
||||
text: string;
|
||||
type: string;
|
||||
}[];
|
||||
addButtonConfig?: ButtonProps;
|
||||
addButtonText?: string;
|
||||
}>();
|
||||
|
||||
defineEmits<{
|
||||
add: [type: string];
|
||||
}>();
|
||||
</script>
|
||||
@ -2,28 +2,13 @@
|
||||
<TMagicScrollbar class="data-source-list-panel m-editor-layer-panel">
|
||||
<div class="search-wrapper">
|
||||
<SearchInput @search="filterTextChangeHandler"></SearchInput>
|
||||
<TMagicPopover
|
||||
<DataSourceAddButton
|
||||
v-if="editable"
|
||||
placement="right"
|
||||
trigger="hover"
|
||||
popper-class="data-source-list-panel-add-menu"
|
||||
:destroy-on-close="true"
|
||||
>
|
||||
<template #reference>
|
||||
<TMagicButton type="primary" size="small">新增</TMagicButton>
|
||||
</template>
|
||||
<ToolButton
|
||||
v-for="(item, index) in datasourceTypeList"
|
||||
:data="{
|
||||
type: 'button',
|
||||
text: item.text,
|
||||
handler: () => {
|
||||
addHandler(item.type);
|
||||
},
|
||||
}"
|
||||
:key="index"
|
||||
></ToolButton>
|
||||
</TMagicPopover>
|
||||
add-button-text="新增"
|
||||
:add-button-config="{ type: 'primary', size: 'small' }"
|
||||
:datasource-type-list="datasourceTypeList"
|
||||
@add="addHandler"
|
||||
></DataSourceAddButton>
|
||||
|
||||
<slot name="data-source-panel-search"></slot>
|
||||
</div>
|
||||
@ -63,15 +48,15 @@
|
||||
import { computed, inject, useTemplateRef, watch } from 'vue';
|
||||
import { mergeWith } from 'lodash-es';
|
||||
|
||||
import { TMagicButton, tMagicMessageBox, TMagicPopover, TMagicScrollbar } from '@tmagic/design';
|
||||
import { tMagicMessageBox, TMagicScrollbar } from '@tmagic/design';
|
||||
|
||||
import ContentMenu from '@editor/components/ContentMenu.vue';
|
||||
import SearchInput from '@editor/components/SearchInput.vue';
|
||||
import ToolButton from '@editor/components/ToolButton.vue';
|
||||
import { useDataSourceEdit } from '@editor/hooks/use-data-source-edit';
|
||||
import { useServices } from '@editor/hooks/use-services';
|
||||
import type { CustomContentMenuFunction, DataSourceListSlots, EventBus, MenuButton, MenuComponent } from '@editor/type';
|
||||
|
||||
import DataSourceAddButton from './DataSourceAddButton.vue';
|
||||
import DataSourceConfigPanel from './DataSourceConfigPanel.vue';
|
||||
import DataSourceList from './DataSourceList.vue';
|
||||
import { useContentMenu } from './useContentMenu';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user