Skip to content

Commit 7fdc559

Browse files
authored
Merge pull request #17 from yhlchao/master
fix(core): move the tool overlay out of the graph
2 parents d163497 + fcc586d commit 7fdc559

File tree

9 files changed

+57
-55
lines changed

9 files changed

+57
-55
lines changed

Diff for: docs/guide/extension/extension-components.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
```ts
88
import LogicFlow from '@logicflow/core';
9-
import { Control, Menu, Dnd } from '@logicflow/extension';
9+
import { Control, Menu, DndPanel } from '@logicflow/extension';
1010
import '@logicflow/extension/lib/style.css';
1111

1212
LogicFlow.use(Control);
1313
LogicFlow.use(Menu);
14-
LogicFlow.use(Dnd);
14+
LogicFlow.use(DndPanel);
1515
```
1616

1717
## 控制面板
@@ -249,15 +249,15 @@ lf.setDefaultEdgeType('custome_edge');
249249

250250
## 拖拽面板
251251

252-
注册`Dnd`组件后,Logic Flow 会在画布左上方创建一个拖拽面板,如下所示
252+
注册`DndPanel`组件后,Logic Flow 会在画布左上方创建一个拖拽面板,如下所示
253253

254-
<example href="/examples/#/extension/components/dnd"></example>
254+
<example href="/examples/#/extension/components/dnd-panel"></example>
255255

256-
`Dnd`组件在 Logic Flow 内置节点的基础上新增了三种类型,分别是`star`(五角星)、`triangle`(三角形)和`hexagon`(六边形),如果只想使用其中的某几个图形,可以通过`setShapeList`方法来实现。
256+
`DndPanel`组件在 Logic Flow 内置节点的基础上新增了三种类型,分别是`star`(五角星)、`triangle`(三角形)和`hexagon`(六边形),如果只想使用其中的某几个图形,可以通过`setShapeList`方法来实现。
257257

258258
```ts
259259
// 注册插件
260-
LogicFlow.use(Dnd);
260+
LogicFlow.use(DndPanel);
261261

262262
// 示例化 LogicFlow
263263
const lf = new LogicFlow();
@@ -325,4 +325,4 @@ const Dnd = {
325325
}
326326
```
327327

328-
自定义组件的详细案例请参考拖拽面板的实现[源码]()
328+
自定义组件的详细案例请参考拖拽面板的实现[源码](https://github.com/didi/LogicFlow/blob/master/packages/extension/src/components/dnd-panel/index.ts)

Diff for: examples/src/pages/extension/adapter/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useEffect } from 'react';
22
import LogicFlow from '@logicflow/core';
3-
import { BpmnAdapter, Control, Dnd } from '@logicflow/extension';
3+
import { BpmnAdapter, Control, DndPanel } from '@logicflow/extension';
44
import ExampleHeader from '../../../components/example-header';
55
import { Button } from 'antd';
66
import { ExportOutlined } from '@ant-design/icons';
@@ -23,7 +23,7 @@ export default function AdapterExample() {
2323
// 注册插件
2424
LogicFlow.use(BpmnAdapter);
2525
LogicFlow.use(Control);
26-
LogicFlow.use(Dnd);
26+
LogicFlow.use(DndPanel);
2727

2828
lf = new LogicFlow({
2929
container: document.querySelector('#graph') as HTMLElement,

Diff for: examples/src/pages/extension/components/dnd/index.tsx renamed to examples/src/pages/extension/components/dnd-panel/index.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import React, { useEffect } from 'react';
22
import LogicFlow from '@logicflow/core';
3-
import { Dnd } from '@logicflow/extension'
3+
import { DndPanel } from '@logicflow/extension'
44

55
const config = {
66
stopScrollGraph: true,
77
stopZoomGraph: true,
88
};
99

10-
export default function DndPanleExample() {
10+
export default function DndPanelExample() {
1111
useEffect(() => {
12-
LogicFlow.use(Dnd);
12+
LogicFlow.use(DndPanel);
1313
const lf = new LogicFlow({
1414
...config,
1515
grid: {

Diff for: examples/src/routes.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Theme from './pages/advance/theme';
1414
import Snapshot from './pages/extension/snapshot';
1515
import Control from './pages/extension/components/control';
1616
import Menu from './pages/extension/components/menu';
17-
import DndPandel from './pages/extension/components/dnd/index';
17+
import DndPanel from './pages/extension/components/dnd-panel';
1818
import CustomMenu from './pages/extension/components/custom-menu';
1919
import CustomDnd from './pages/extension/components/custom-dnd';
2020
import UserTaskNode from './pages/advance/custom-node/userTask';
@@ -49,7 +49,7 @@ export default (
4949
<Route path="/extension/snapshot" exact component={Snapshot} />
5050
<Route path="/extension/components/control" exact component={Control} />
5151
<Route path="/extension/components/menu" exact component={Menu} />
52-
<Route path="/extension/components/dnd" exact component={DndPandel} />
52+
<Route path="/extension/components/dnd-panel" exact component={DndPanel} />
5353
<Route path="/extension/components/custom-menu" exact component={CustomMenu} />
5454
<Route path="/extension/components/custom-dnd" exact component={CustomDnd} />
5555
<Route path="/extension/bpmn-elements" exact component={BpmnElements} />

Diff for: packages/core/src/view/Graph.tsx

+26-24
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, h } from 'preact';
1+
import { Component, Fragment, h } from 'preact';
22
import { observer, inject } from 'mobx-react';
33
import { map } from 'lodash-es';
44
import GraphModel from '../model/GraphModel';
@@ -69,33 +69,35 @@ class Graph extends Component<IProps> {
6969
const { adjustEdge } = editConfig;
7070

7171
return (
72-
<div
73-
className="lf-graph"
74-
{...dnd.eventMap()}
75-
style={style}
76-
>
77-
<CanvasOverlay
78-
graphModel={graphModel}
79-
eventCenter={eventCenter}
72+
<Fragment>
73+
<div
74+
className="lf-graph"
75+
{...dnd.eventMap()}
76+
style={style}
8077
>
81-
<g className="lf-base">
78+
<CanvasOverlay
79+
graphModel={graphModel}
80+
eventCenter={eventCenter}
81+
>
82+
<g className="lf-base">
83+
{
84+
map(graphModel.sortElements, (nodeModel) => (
85+
this.getComponent(nodeModel, graphModel, eventCenter)
86+
))
87+
}
88+
</g>
8289
{
83-
map(graphModel.sortElements, (nodeModel) => (
84-
this.getComponent(nodeModel, graphModel, eventCenter)
85-
))
90+
fakerNode ? this.getComponent(fakerNode, graphModel, eventCenter) : ''
8691
}
87-
</g>
88-
{
89-
fakerNode ? this.getComponent(fakerNode, graphModel, eventCenter) : ''
90-
}
91-
{adjustEdge ? <BezierAdjustOverlay graphModel={graphModel} /> : ''}
92-
<OutlineOverlay graphModel={graphModel} />
93-
{!options.isSilentMode && options.snapline !== false ? <SnaplineOverlay snaplineModel={snaplineModel} /> : ''}
94-
</CanvasOverlay>
92+
{adjustEdge ? <BezierAdjustOverlay graphModel={graphModel} /> : ''}
93+
<OutlineOverlay graphModel={graphModel} />
94+
{!options.isSilentMode && options.snapline !== false ? <SnaplineOverlay snaplineModel={snaplineModel} /> : ''}
95+
</CanvasOverlay>
96+
{options.background && <BackgroundOverlay background={options.background} />}
97+
{options.grid && <Grid {...options.grid} graphModel={graphModel} />}
98+
</div>
9599
<ToolOverlay graphModel={graphModel} tool={tool} />
96-
{options.background && <BackgroundOverlay background={options.background} />}
97-
{options.grid && <Grid {...options.grid} graphModel={graphModel} />}
98-
</div>
100+
</Fragment>
99101
);
100102
}
101103
}

Diff for: packages/extension/scripts/webpack.config.base.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const packagesEntry = {
1010
ResizeNode: path.resolve(__dirname, "../src/resize-node/index.ts"),
1111
Control: path.resolve(__dirname, "../src/components/control/index.ts"),
1212
Menu: path.resolve(__dirname, "../src/components/menu/index.ts"),
13-
Dnd: path.resolve(__dirname, "../src/components/dnd/index.ts"),
13+
DndPanel: path.resolve(__dirname, "../src/components/dnd-panel/index.ts"),
1414
};
1515

1616
module.exports = {

Diff for: packages/extension/src/components/dnd/index.ts renamed to packages/extension/src/components/dnd-panel/index.ts

+13-13
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ type Shape = {
55
type: string;
66
};
77

8-
interface Dnd extends Extension {
8+
interface DndPanel extends Extension {
99
lf: LogicFlow;
1010
shapeList: Shape[];
1111
getDnd: () => HTMLElement;
1212
registerNode: () => void;
1313
handleMouseDown: (config: Shape) => void;
1414
}
1515

16-
const Dnd: Dnd = {
16+
const DndPanel: DndPanel = {
1717
lf: null,
1818
shapeList: [
1919
{
@@ -42,24 +42,24 @@ const Dnd: Dnd = {
4242
},
4343
],
4444
install(lf) {
45-
Dnd.lf = lf;
46-
Dnd.registerNode();
45+
DndPanel.lf = lf;
46+
DndPanel.registerNode();
4747
lf.setShapeList = (config) => {
4848
if (!Array.isArray(config)) {
49-
throw new TypeError('Dnd 的 ShapeList 必须是数组');
49+
throw new TypeError('DndPanel 的 ShapeList 必须是数组');
5050
} else if (config.length > 0) {
51-
Dnd.shapeList = config;
51+
DndPanel.shapeList = config;
5252
}
5353
};
5454
},
5555
render(lf, container) {
56-
container.appendChild(Dnd.getDnd());
56+
container.appendChild(DndPanel.getDnd());
5757
},
5858
getDnd() {
59-
const { handleMouseDown } = Dnd;
59+
const { handleMouseDown } = DndPanel;
6060
const dndContainer = document.createElement('div');
6161
dndContainer.className = 'lf-dnd';
62-
Dnd.shapeList.forEach((shape) => {
62+
DndPanel.shapeList.forEach((shape) => {
6363
const { type, text } = shape;
6464
const dndItem = document.createElement('div');
6565
const dndIcon = document.createElement('div');
@@ -74,7 +74,7 @@ const Dnd: Dnd = {
7474
return dndContainer;
7575
},
7676
registerNode() {
77-
const { lf } = Dnd;
77+
const { lf } = DndPanel;
7878
lf.register('star', ({ PolygonNode, PolygonNodeModel }) => {
7979
class StarNode extends PolygonNode {
8080
}
@@ -158,12 +158,12 @@ const Dnd: Dnd = {
158158
});
159159
},
160160
handleMouseDown(config) {
161-
const { lf } = Dnd;
161+
const { lf } = DndPanel;
162162
lf.dnd.startDrag(config);
163163
},
164164
};
165165

166-
export default Dnd;
166+
export default DndPanel;
167167
export {
168-
Dnd,
168+
DndPanel,
169169
};

Diff for: packages/extension/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ export * from './snapshot';
33
export * from './adapter';
44
export * from './components/control';
55
export * from './components/menu';
6-
export * from './components/dnd';
6+
export * from './components/dnd-panel';

Diff for: packages/site/src/app.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component, h } from 'preact';
22
import LogicFlow from '@logicflow/core';
3-
import { Snapshot, Dnd, Menu } from '@logicflow/extension';
3+
import { Snapshot, DndPanel, Menu } from '@logicflow/extension';
44
import Share from './component/Share';
55
import Setting from './component/Setting';
66
import Links from './component/Links';
@@ -9,7 +9,7 @@ import CustomNode from './utils/registerNode';
99
import CustomListener from './utils/addListener';
1010

1111
LogicFlow.use(Snapshot);
12-
LogicFlow.use(Dnd);
12+
LogicFlow.use(DndPanel);
1313
LogicFlow.use(Menu);
1414

1515
type IProps = {

0 commit comments

Comments
 (0)