From a0bad7742d01fb21fd2cde7d0491b2bba601c0c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=A4=E7=9F=97?= Date: Thu, 7 May 2020 15:12:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-skeleton/src/widget/panel.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/editor-skeleton/src/widget/panel.ts b/packages/editor-skeleton/src/widget/panel.ts index f03e6a130..5f43b8c89 100644 --- a/packages/editor-skeleton/src/widget/panel.ts +++ b/packages/editor-skeleton/src/widget/panel.ts @@ -1,3 +1,4 @@ +import { EventEmitter } from 'events'; import { createElement, ReactNode } from 'react'; import { obx } from '@ali/lowcode-editor-core'; import { uniqueId, createContent } from '@ali/lowcode-utils'; @@ -13,8 +14,9 @@ export default class Panel implements IWidget { readonly isWidget = true; readonly name: string; readonly id: string; - @obx.ref inited: boolean = false; - @obx.ref private _actived: boolean = false; + @obx.ref inited = false; + @obx.ref private _actived = false; + private emitter = new EventEmitter(); get actived(): boolean { return this._actived; } @@ -46,7 +48,7 @@ export default class Panel implements IWidget { readonly title: TitleContent; readonly help?: HelpTipConfig; - private plain: boolean = false; + private plain = false; private container?: WidgetContainer; private parent?: WidgetContainer; @@ -143,9 +145,11 @@ export default class Panel implements IWidget { } this._actived = true; this.parent?.active(this); + this.emitter.emit('activechange', true); } else if (this.inited) { this._actived = false; this.parent?.unactive(this); + this.emitter.emit('activechange', false); } } @@ -179,6 +183,16 @@ export default class Panel implements IWidget { * @deprecated */ setPosition(position: string) { + // noop + } + /** + * @deprecated + */ + onActiveChange(fn: (flag: boolean) => void): () => void { + this.emitter.on('activechange', fn); + return () => { + this.emitter.removeListener('activechange', fn); + }; } }