Merge branch '469-add-window-lifecycle-callbacks' of https://github.com/mathuo/dockview into 469-add-window-lifecycle-callbacks-1

This commit is contained in:
mathuo 2024-01-28 13:38:02 +00:00
commit a8472e8b71
No known key found for this signature in database
GPG Key ID: C6EEDEFD6CA07281
4 changed files with 22 additions and 0 deletions

View File

@ -830,6 +830,8 @@ export class DockviewApi implements CommonApi<SerializedDockview> {
options?: { options?: {
position?: Box; position?: Box;
popoutUrl?: string; popoutUrl?: string;
onOpened?: (id: string, window: Window) => void;
onClosing?: (id: string, window: Window) => void;
} }
): void { ): void {
this.component.addPopoutGroup(item, options); this.component.addPopoutGroup(item, options);

View File

@ -287,6 +287,8 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
options?: { options?: {
position?: Box; position?: Box;
popoutUrl?: string; popoutUrl?: string;
onOpened?: (id: string, window: Window) => void;
onClosing?: (id: string, window: Window) => void;
} }
): void; ): void;
} }
@ -514,6 +516,8 @@ export class DockviewComponent
skipRemoveGroup?: boolean; skipRemoveGroup?: boolean;
position?: Box; position?: Box;
popoutUrl?: string; popoutUrl?: string;
onOpened?: (id: string, window: Window) => void;
onClosing?: (id: string, window: Window) => void;
} }
): void { ): void {
let group: DockviewGroupPanel; let group: DockviewGroupPanel;
@ -562,6 +566,8 @@ export class DockviewComponent
width: box.width, width: box.width,
height: box.height, height: box.height,
}, },
onOpened: options?.onOpened,
onClosing: options?.onClosing
} }
); );

View File

@ -13,6 +13,8 @@ export class DockviewPopoutGroupPanel extends CompositeDisposable {
className: string; className: string;
popoutUrl: string; popoutUrl: string;
box: Box; box: Box;
onOpened?: (id: string, window: Window) => void;
onClosing?: (id: string, window: Window) => void;
} }
) { ) {
super(); super();
@ -23,6 +25,8 @@ export class DockviewPopoutGroupPanel extends CompositeDisposable {
top: this.options.box.top, top: this.options.box.top,
width: this.options.box.width, width: this.options.box.width,
height: this.options.box.height, height: this.options.box.height,
onOpened: this.options.onOpened,
onClosing: this.options.onClosing,
}); });
group.model.location = { group.model.location = {

View File

@ -5,6 +5,8 @@ import { Box } from './types';
export type PopoutWindowOptions = { export type PopoutWindowOptions = {
url: string; url: string;
onOpened?: (id: string, window: Window) => void;
onClosing?: (id: string, window: Window) => void;
} & Box; } & Box;
export class PopoutWindow extends CompositeDisposable { export class PopoutWindow extends CompositeDisposable {
@ -51,6 +53,10 @@ export class PopoutWindow extends CompositeDisposable {
if (this._window) { if (this._window) {
this._onWillClose.fire(); this._onWillClose.fire();
if (this.options.onClosing) {
this.options.onClosing(this.target, this._window.value);
}
this._window.disposable.dispose(); this._window.disposable.dispose();
this._window.value.close(); this._window.value.close();
this._window = null; this._window = null;
@ -125,6 +131,10 @@ export class PopoutWindow extends CompositeDisposable {
this.close(); this.close();
}); });
}); });
if (this.options.onOpened) {
this.options.onOpened(this.target, externalWindow);
}
} }
private createPopoutWindowContainer(): HTMLElement { private createPopoutWindowContainer(): HTMLElement {