Skip to content

Commit 778ba32

Browse files
huotengliujuping
authored andcommitted
feat: support online tree title extra
1 parent d9e1203 commit 778ba32

4 files changed

Lines changed: 31 additions & 0 deletions

File tree

packages/engine/src/engine-core.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ engineConfig.set('isOpenSource', isOpenSource);
172172
keepVisibleWhileDragging: true,
173173
...engineConfig.get('defaultOutlinePaneProps'),
174174
},
175+
contentProps: {
176+
treeTitleExtra: engineConfig.get('treeTitleExtra'),
177+
},
175178
});
176179
skeleton.add({
177180
area: 'rightArea',
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { globalContext } from '@alilc/lowcode-editor-core';
2+
import { ReactElement } from 'react';
3+
4+
const TREE_TITLE_EXTRA_KEY = 'TREE_TITLE_EXTRA_KEY';
5+
6+
export const registerTreeTitleExtra = (extra: ReactElement) => {
7+
if (extra && !globalContext.has(TREE_TITLE_EXTRA_KEY)) {
8+
globalContext.register(extra, TREE_TITLE_EXTRA_KEY);
9+
}
10+
};
11+
12+
export const getTreeTitleExtra = () => {
13+
try {
14+
return globalContext.get(TREE_TITLE_EXTRA_KEY);
15+
} catch (e) {
16+
// console.error('getTreeTitleExtra Error', e);
17+
}
18+
19+
return null;
20+
};

packages/plugin-outline-pane/src/views/pane.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import TreeView from './tree';
66
import './style.less';
77
import { IEditor } from '@alilc/lowcode-types';
88
import Filter from './filter';
9+
import { registerTreeTitleExtra } from '../helper/tree-title-extra';
910

1011
@observer
1112
export class OutlinePane extends Component<{ config: any; editor: IEditor }> {
@@ -15,6 +16,10 @@ export class OutlinePane extends Component<{ config: any; editor: IEditor }> {
1516
this.main.purge();
1617
}
1718

19+
componentDidMount() {
20+
registerTreeTitleExtra(this.props?.config?.contentProps?.treeTitleExtra);
21+
}
22+
1823
render() {
1924
const tree = this.main.currentTree;
2025

packages/plugin-outline-pane/src/views/tree-title.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { IconLoop } from '../icons/loop';
1313
import { IconRadioActive } from '../icons/radio-active';
1414
import { IconRadio } from '../icons/radio';
1515
import { IconLock, IconUnlock } from '../icons';
16+
import { getTreeTitleExtra } from '../helper/tree-title-extra';
1617

1718

1819
function emitOutlineEvent(type: string, treeNode: TreeNode, rest?: Record<string, unknown>) {
@@ -97,6 +98,7 @@ export default class TreeTitle extends Component<{
9798
};
9899
}
99100
const { filterWorking, matchSelf, keywords } = treeNode.filterReult;
101+
const Extra = getTreeTitleExtra();
100102

101103
return (
102104
<div
@@ -153,6 +155,7 @@ export default class TreeTitle extends Component<{
153155
match={filterWorking && matchSelf}
154156
keywords={keywords}
155157
/>
158+
{Extra && <Extra node={treeNode?.node} />}
156159
{node.slotFor && (
157160
<a className="tree-node-tag slot">
158161
{/* todo: click redirect to prop */}

0 commit comments

Comments
 (0)