Skip to content

Commit e79f686

Browse files
liujupingJackLian
authored andcommitted
feat(skeleton): add onDisableWidget & onEnableWidget APIs
1 parent 4a502f8 commit e79f686

File tree

3 files changed

+68
-21
lines changed

3 files changed

+68
-21
lines changed

docs/docs/api/skeleton.md

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ export default controlPanelWidthPlugin;
387387
* @param listener
388388
* @returns
389389
*/
390-
onShowPanel(listener: (...args: any[]) => void): IPublicTypeDisposable;
390+
onShowPanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
391391
```
392392

393393
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
@@ -403,11 +403,38 @@ onShowPanel(listener: (...args: any[]) => void): IPublicTypeDisposable;
403403
* @param listener
404404
* @returns
405405
*/
406-
onHidePanel(listener: (...args: any[]) => void): IPublicTypeDisposable;
406+
onHidePanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
407407
```
408408

409409
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
410410

411+
### onDisableWidget
412+
413+
监听 Widget 实例 Disable 事件
414+
415+
```typescript
416+
/**
417+
* 监听 Widget 实例 Disable 事件
418+
* @param listener
419+
*/
420+
onDisableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
421+
```
422+
423+
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
424+
425+
### onEnableWidget
426+
427+
监听 Widget 实例 Enable 事件
428+
429+
```typescript
430+
/**
431+
* 监听 Widget 实例 Enable 事件
432+
* @param listener
433+
*/
434+
onEnableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
435+
```
436+
437+
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
411438

412439
### onShowWidget
413440

@@ -420,7 +447,7 @@ onHidePanel(listener: (...args: any[]) => void): IPublicTypeDisposable;
420447
* @param listener
421448
* @returns
422449
*/
423-
onShowWidget(listener: (...args: any[]) => void): IPublicTypeDisposable;
450+
onShowWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
424451
```
425452

426453
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)
@@ -436,7 +463,7 @@ onShowWidget(listener: (...args: any[]) => void): IPublicTypeDisposable;
436463
* @param listener
437464
* @returns
438465
*/
439-
onHideWidget(listener: (...args: any[]) => void): IPublicTypeDisposable;
466+
onHideWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
440467
```
441468

442469
相关类型:[IPublicTypeDisposable](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/disposable.ts)

packages/shell/src/api/skeleton.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,30 @@ export class Skeleton implements IPublicApiSkeleton {
154154
* @param listener
155155
* @returns
156156
*/
157-
onShowPanel(listener: (...args: any[]) => void): IPublicTypeDisposable {
157+
onShowPanel(listener: (paneName: string, panel: IPublicModelSkeletonItem) => void): IPublicTypeDisposable {
158158
const { editor } = this[skeletonSymbol];
159159
editor.eventBus.on(SkeletonEvents.PANEL_SHOW, (name: any, panel: any) => {
160-
// 不泄漏 skeleton
161-
const { skeleton, ...restPanel } = panel;
162-
listener(name, restPanel);
160+
listener(name, new SkeletonItem(panel));
163161
});
164162
return () => editor.eventBus.off(SkeletonEvents.PANEL_SHOW, listener);
165163
}
166164

165+
onDisableWidget(listener: (...args: any[]) => void): IPublicTypeDisposable {
166+
const { editor } = this[skeletonSymbol];
167+
editor.eventBus.on(SkeletonEvents.WIDGET_DISABLE, (name: any, panel: any) => {
168+
listener(name, new SkeletonItem(panel));
169+
});
170+
return () => editor.eventBus.off(SkeletonEvents.WIDGET_DISABLE, listener);
171+
}
172+
173+
onEnableWidget(listener: (...args: any[]) => void): IPublicTypeDisposable {
174+
const { editor } = this[skeletonSymbol];
175+
editor.eventBus.on(SkeletonEvents.WIDGET_ENABLE, (name: any, panel: any) => {
176+
listener(name, new SkeletonItem(panel));
177+
});
178+
return () => editor.eventBus.off(SkeletonEvents.WIDGET_ENABLE, listener);
179+
}
180+
167181
/**
168182
* 监听 panel 隐藏事件
169183
* @param listener
@@ -172,9 +186,7 @@ export class Skeleton implements IPublicApiSkeleton {
172186
onHidePanel(listener: (...args: any[]) => void): IPublicTypeDisposable {
173187
const { editor } = this[skeletonSymbol];
174188
editor.eventBus.on(SkeletonEvents.PANEL_HIDE, (name: any, panel: any) => {
175-
// 不泄漏 skeleton
176-
const { skeleton, ...restPanel } = panel;
177-
listener(name, restPanel);
189+
listener(name, new SkeletonItem(panel));
178190
});
179191
return () => editor.eventBus.off(SkeletonEvents.PANEL_HIDE, listener);
180192
}
@@ -187,9 +199,7 @@ export class Skeleton implements IPublicApiSkeleton {
187199
onShowWidget(listener: (...args: any[]) => void): IPublicTypeDisposable {
188200
const { editor } = this[skeletonSymbol];
189201
editor.eventBus.on(SkeletonEvents.WIDGET_SHOW, (name: any, panel: any) => {
190-
// 不泄漏 skeleton
191-
const { skeleton, ...rest } = panel;
192-
listener(name, rest);
202+
listener(name, new SkeletonItem(panel));
193203
});
194204
return () => editor.eventBus.off(SkeletonEvents.WIDGET_SHOW, listener);
195205
}
@@ -202,9 +212,7 @@ export class Skeleton implements IPublicApiSkeleton {
202212
onHideWidget(listener: (...args: any[]) => void): IPublicTypeDisposable {
203213
const { editor } = this[skeletonSymbol];
204214
editor.eventBus.on(SkeletonEvents.WIDGET_HIDE, (name: any, panel: any) => {
205-
// 不泄漏 skeleton
206-
const { skeleton, ...rest } = panel;
207-
listener(name, rest);
215+
listener(name, new SkeletonItem(panel));
208216
});
209217
return () => editor.eventBus.off(SkeletonEvents.WIDGET_HIDE, listener);
210218
}

packages/types/src/shell/api/skeleton.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,31 +95,43 @@ export interface IPublicApiSkeleton {
9595
* @param listener
9696
* @returns
9797
*/
98-
onShowPanel(listener: (...args: any[]) => void): IPublicTypeDisposable;
98+
onShowPanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
9999

100100
/**
101101
* 监听 Panel 实例隐藏事件
102102
* set callback for panel hidden event
103103
* @param listener
104104
* @returns
105105
*/
106-
onHidePanel(listener: (...args: any[]) => void): IPublicTypeDisposable;
106+
onHidePanel(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
107+
108+
/**
109+
* 监听 Widget 实例 Disable 事件
110+
* @param listener
111+
*/
112+
onDisableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
113+
114+
/**
115+
* 监听 Widget 实例 Enable 事件
116+
* @param listener
117+
*/
118+
onEnableWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
107119

108120
/**
109121
* 监听 Widget 显示事件
110122
* set callback for widget shown event
111123
* @param listener
112124
* @returns
113125
*/
114-
onShowWidget(listener: (...args: any[]) => void): IPublicTypeDisposable;
126+
onShowWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
115127

116128
/**
117129
* 监听 Widget 隐藏事件
118130
* set callback for widget hidden event
119131
* @param listener
120132
* @returns
121133
*/
122-
onHideWidget(listener: (...args: any[]) => void): IPublicTypeDisposable;
134+
onHideWidget(listener: (paneName?: string, panel?: IPublicModelSkeletonItem) => void): IPublicTypeDisposable;
123135

124136
/**
125137
* 注册一个面板的配置转换器(transducer)。

0 commit comments

Comments
 (0)