feat: support online tree title extra

This commit is contained in:
huoteng 2022-12-13 18:58:51 +08:00 committed by 刘菊萍(絮黎)
parent d9e1203eeb
commit 778ba32a14
4 changed files with 31 additions and 0 deletions

View File

@ -172,6 +172,9 @@ engineConfig.set('isOpenSource', isOpenSource);
keepVisibleWhileDragging: true,
...engineConfig.get('defaultOutlinePaneProps'),
},
contentProps: {
treeTitleExtra: engineConfig.get('treeTitleExtra'),
},
});
skeleton.add({
area: 'rightArea',

View File

@ -0,0 +1,20 @@
import { globalContext } from '@alilc/lowcode-editor-core';
import { ReactElement } from 'react';
const TREE_TITLE_EXTRA_KEY = 'TREE_TITLE_EXTRA_KEY';
export const registerTreeTitleExtra = (extra: ReactElement) => {
if (extra && !globalContext.has(TREE_TITLE_EXTRA_KEY)) {
globalContext.register(extra, TREE_TITLE_EXTRA_KEY);
}
};
export const getTreeTitleExtra = () => {
try {
return globalContext.get(TREE_TITLE_EXTRA_KEY);
} catch (e) {
// console.error('getTreeTitleExtra Error', e);
}
return null;
};

View File

@ -6,6 +6,7 @@ import TreeView from './tree';
import './style.less';
import { IEditor } from '@alilc/lowcode-types';
import Filter from './filter';
import { registerTreeTitleExtra } from '../helper/tree-title-extra';
@observer
export class OutlinePane extends Component<{ config: any; editor: IEditor }> {
@ -15,6 +16,10 @@ export class OutlinePane extends Component<{ config: any; editor: IEditor }> {
this.main.purge();
}
componentDidMount() {
registerTreeTitleExtra(this.props?.config?.contentProps?.treeTitleExtra);
}
render() {
const tree = this.main.currentTree;

View File

@ -13,6 +13,7 @@ import { IconLoop } from '../icons/loop';
import { IconRadioActive } from '../icons/radio-active';
import { IconRadio } from '../icons/radio';
import { IconLock, IconUnlock } from '../icons';
import { getTreeTitleExtra } from '../helper/tree-title-extra';
function emitOutlineEvent(type: string, treeNode: TreeNode, rest?: Record<string, unknown>) {
@ -97,6 +98,7 @@ export default class TreeTitle extends Component<{
};
}
const { filterWorking, matchSelf, keywords } = treeNode.filterReult;
const Extra = getTreeTitleExtra();
return (
<div
@ -153,6 +155,7 @@ export default class TreeTitle extends Component<{
match={filterWorking && matchSelf}
keywords={keywords}
/>
{Extra && <Extra node={treeNode?.node} />}
{node.slotFor && (
<a className="tree-node-tag slot">
{/* todo: click redirect to prop */}