add window-lifecycle callbacks

This commit is contained in:
sachnk 2024-01-22 19:02:53 +00:00
parent 502a984d2b
commit 23b1edb003
No known key found for this signature in database
GPG Key ID: EC1B6EEB8A0F88EB
4 changed files with 22 additions and 0 deletions

View File

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

View File

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

View File

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

View File

@ -5,6 +5,8 @@ import { Box } from './types';
export type PopoutWindowOptions = {
url: string;
onOpened?: (id: string, window: Window) => void;
onClosing?: (id: string, window: Window) => void;
} & Box;
export class PopoutWindow extends CompositeDisposable {
@ -42,6 +44,10 @@ export class PopoutWindow extends CompositeDisposable {
close(): void {
if (this._window) {
if (this.options.onClosing) {
this.options.onClosing(this.id, this._window.value);
}
this._window.disposable.dispose();
this._window.value.close();
this._window = null;
@ -114,5 +120,9 @@ export class PopoutWindow extends CompositeDisposable {
cleanUp();
});
});
if (this.options.onOpened) {
this.options.onOpened(this.id, externalWindow);
}
}
}