mirror of
https://github.com/mathuo/dockview
synced 2025-05-04 10:38:24 +00:00
add window-lifecycle callbacks
This commit is contained in:
parent
502a984d2b
commit
23b1edb003
@ -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);
|
||||
|
@ -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
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -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';
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user