Skip to content

Commit d3cc39e

Browse files
JackLianliujuping
authored andcommitted
docs(selection): optimize api doc for model/selection, and fix related lint issues
1 parent f6771fe commit d3cc39e

8 files changed

Lines changed: 201 additions & 86 deletions

File tree

docs/docs/api/model/detecting.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ release(id: string): void;
6767
leave(): void;
6868
```
6969

70+
## 事件
7071
### onDetectingChange
7172
hover 节点变化事件
7273

@@ -81,6 +82,6 @@ onDetectingChange(fn: (node: IPublicModelNode) => void): IPublicTypeDisposable;
8182

8283
相关类型:
8384
- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)
84-
- [IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
85+
- [IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
8586

8687
**@since v1.1.0**

docs/docs/api/model/selection.md

Lines changed: 95 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,49 +14,110 @@ sidebar_position: 6
1414

1515
返回选中的节点 id
1616

17+
`@type {string[]}`
18+
19+
### node
20+
返回选中的节点(如多个节点只返回第一个)
21+
22+
`@type {IPublicModelNode | null}`
23+
24+
相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)
25+
26+
**@since v1.1.0**
27+
1728
## 方法签名
1829
### select
1930

20-
select(id: string)
21-
2231
选中指定节点(覆盖方式)
2332

24-
### selectAll
33+
```typescript
34+
/**
35+
* 选中指定节点(覆盖方式)
36+
* select node with id, this will override current selection
37+
* @param id
38+
*/
39+
select(id: string): void;
40+
```
2541

26-
selectAll(ids: string[])
42+
### selectAll
2743

2844
批量选中指定节点们
2945

30-
### remove
46+
```typescript
47+
/**
48+
* 批量选中指定节点们
49+
* select node with ids, this will override current selection
50+
*
51+
* @param ids
52+
*/
53+
selectAll(ids: string[]): void;
54+
```
3155

32-
remove(id: string)
56+
### remove
3357

3458
**取消选中**选中的指定节点,不会删除组件
3559

36-
### clear
60+
```typescript
61+
/**
62+
* 移除选中的指定节点
63+
* remove node from selection with node id
64+
* @param id
65+
*/
66+
remove(id: string): void;
67+
```
3768

38-
clear()
69+
### clear
3970

4071
**取消选中**所有选中节点,不会删除组件
4172

42-
### has
73+
```typescript
74+
/**
75+
* 清除所有选中节点
76+
* clear current selection
77+
*/
78+
clear(): void;
79+
```
4380

44-
has(id: string)
81+
### has
4582

4683
判断是否选中了指定节点
4784

48-
### add
85+
```typescript
86+
/**
87+
* 判断是否选中了指定节点
88+
* check if node with specific id is selected
89+
* @param id
90+
*/
91+
has(id: string): boolean;
92+
```
4993

50-
add(id: string)
94+
### add
5195

5296
选中指定节点(增量方式)
5397

54-
### getNodes
98+
```typescript
99+
/**
100+
* 选中指定节点(增量方式)
101+
* add node with specific id to selection
102+
* @param id
103+
*/
104+
add(id: string): void;
105+
```
55106

56-
getNodes()
107+
### getNodes
57108

58109
获取选中的节点实例
59110

111+
```typescript
112+
/**
113+
* 获取选中的节点实例
114+
* get selected nodes
115+
*/
116+
getNodes(): IPublicModelNode[];
117+
```
118+
119+
相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts)
120+
60121
### getTopNodes
61122
获取选区的顶层节点
62123
例如选中的节点为:
@@ -67,19 +128,34 @@ getNodes()
67128

68129
getNodes 返回的是 [DivA、ChildrenA、DivB],getTopNodes 返回的是 [DivA、DivB],其中 ChildrenA 由于是二层节点,getTopNodes 不会返回
69130

131+
```typescript
132+
/**
133+
* 获取选区的顶层节点
134+
* get seleted top nodes
135+
* for example:
136+
* getNodes() returns [A, subA, B], then
137+
* getTopNodes() will return [A, B], subA will be removed
138+
* @since v1.0.16
139+
*/
140+
getTopNodes(includeRoot?: boolean): IPublicModelNode[];
141+
```
142+
70143
**@since v1.0.16**
71144

145+
## 事件
72146
### onSelectionChange
73147

74148
注册 selection 变化事件回调
75149

76150
```typescript
77151
/**
78-
* 注册 selection 变化事件回调
79-
* set callback which will be called when selection is changed
80-
* @since v1.1.0
81-
*/
82-
onSelectionChange(fn: (ids: string[]) => void): () => void;
152+
* 注册 selection 变化事件回调
153+
* set callback which will be called when selection is changed
154+
* @since v1.1.0
155+
*/
156+
onSelectionChange(fn: (ids: string[]) => void): IPublicTypeDisposable;
83157
```
84158

159+
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
160+
85161
**@since v1.1.0**

packages/designer/src/document/document-model.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
IPublicTypeDragNodeObject,
99
IPublicTypeDragNodeDataObject,
1010
IPublicModelDocumentModel,
11-
IPublicModelSelection,
1211
IPublicModelHistory,
1312
IPublicModelModalNodesManager,
1413
IPublicModelNode,
@@ -22,7 +21,7 @@ import { ISimulatorHost } from '../simulator';
2221
import { ComponentMeta } from '../component-meta';
2322
import { IDropLocation, Designer } from '../designer';
2423
import { Node, insertChildren, insertChild, isNode, RootNode, INode } from './node/node';
25-
import { Selection } from './selection';
24+
import { Selection, ISelection } from './selection';
2625
import { History } from './history';
2726
import { ModalNodesManager } from './node';
2827
import { uniqueId, isPlainObject, compatStage, isJSExpression, isDOMText, isNodeSchema, isDragNodeObject, isDragNodeDataObject } from '@alilc/lowcode-utils';
@@ -35,10 +34,16 @@ export type GetDataType<T, NodeType> = T extends undefined
3534
? R
3635
: any
3736
: T;
38-
export interface IDocumentModel extends IPublicModelDocumentModel {
37+
38+
export interface IDocumentModel extends Omit< IPublicModelDocumentModel, 'selection' > {
3939

4040
readonly designer: Designer;
4141

42+
/**
43+
* 选区控制
44+
*/
45+
readonly selection: ISelection;
46+
4247
/**
4348
* 根据 id 获取节点
4449
*/
@@ -59,7 +64,7 @@ export class DocumentModel implements IDocumentModel {
5964
/**
6065
* 选区控制
6166
*/
62-
readonly selection: IPublicModelSelection = new Selection(this);
67+
readonly selection: ISelection = new Selection(this);
6368

6469
/**
6570
* 操作记录控制
@@ -489,7 +494,6 @@ export class DocumentModel implements IDocumentModel {
489494
);
490495
}
491496

492-
493497
/**
494498
* 切换激活,只有打开的才能激活
495499
* 不激活,打开之后切换到另外一个时发生,比如 tab 视图,切换到另外一个标签页

packages/designer/src/document/selection.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
import { obx, makeObservable, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core';
2-
import { Node, comparePosition, PositionNO } from './node/node';
2+
import { Node, INode, comparePosition, PositionNO } from './node/node';
33
import { DocumentModel } from './document-model';
44
import { IPublicModelSelection } from '@alilc/lowcode-types';
55

6-
export interface ISelection extends IPublicModelSelection {
6+
export interface ISelection extends Omit< IPublicModelSelection, 'getNodes' | 'getTopNodes' > {
77

8+
/**
9+
* 获取选中的节点实例
10+
* @returns
11+
*/
12+
getNodes(): INode[];
13+
14+
/**
15+
* 获取顶层选区节点,场景:拖拽时,建立蒙层,只蒙在最上层
16+
*/
17+
getTopNodes(includeRoot?: boolean): INode[];
818
}
919

1020
export class Selection implements ISelection {

0 commit comments

Comments
 (0)