Skip to content

Commit 3ce6d87

Browse files
authored
Merge pull request #927 from borglin/896-add-on-did-block-popout-event
[896] Add onDidBlockPopout event
2 parents b50c950 + 477bf14 commit 3ce6d87

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

packages/dockview-core/src/api/component.api.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,10 @@ export class DockviewApi implements CommonApi<SerializedDockview> {
749749
return this.component.onDidPopoutGroupPositionChange;
750750
}
751751

752+
get onDidBlockPopout(): Event<void> {
753+
return this.component.onDidBlockPopout;
754+
}
755+
752756
/**
753757
* All panel objects.
754758
*/

packages/dockview-core/src/dockview/dockviewComponent.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
226226
readonly onDidMaximizedGroupChange: Event<DockviewMaximizedGroupChanged>;
227227
readonly onDidPopoutGroupSizeChange: Event<PopoutGroupChangeSizeEvent>;
228228
readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent>;
229+
readonly onDidBlockPopout: Event<void>;
229230
readonly options: DockviewComponentOptions;
230231
updateOptions(options: DockviewOptions): void;
231232
moveGroupOrPanel(options: MoveGroupOrPanelOptions): void;
@@ -319,6 +320,9 @@ export class DockviewComponent
319320
readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent> =
320321
this._onDidPopoutGroupPositionChange.event;
321322

323+
private readonly _onDidBlockPopout = new Emitter<void>();
324+
readonly onDidBlockPopout: Event<void> = this._onDidBlockPopout.event;
325+
322326
private readonly _onDidLayoutFromJSON = new Emitter<void>();
323327
readonly onDidLayoutFromJSON: Event<void> = this._onDidLayoutFromJSON.event;
324328

@@ -505,6 +509,7 @@ export class DockviewComponent
505509
this._onDidOptionsChange,
506510
this._onDidPopoutGroupSizeChange,
507511
this._onDidPopoutGroupPositionChange,
512+
this._onDidBlockPopout,
508513
this.onDidViewVisibilityChangeMicroTaskQueue(() => {
509514
this.updateWatermark();
510515
}),
@@ -715,6 +720,7 @@ export class DockviewComponent
715720

716721
if (popoutContainer === null) {
717722
popoutWindowDisposable.dispose();
723+
this._onDidBlockPopout.fire();
718724
return false;
719725
}
720726

@@ -734,7 +740,7 @@ export class DockviewComponent
734740
const referenceLocation = itemToPopout.api.location.type;
735741

736742
/**
737-
* The group that is being added doesn't already exist within the DOM, the most likely occurance
743+
* The group that is being added doesn't already exist within the DOM, the most likely occurrence
738744
* of this case is when being called from the `fromJSON(...)` method
739745
*/
740746
const isGroupAddedToDom =

packages/docs/sandboxes/react/dockview/popout-group/src/app.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ export const App = (props: { theme?: string }) => {
143143

144144
const load = (api: DockviewApi) => {
145145
api.clear();
146+
api.onDidBlockPopout(() => {
147+
console.log('Popout blocked');
148+
});
146149
if (layout) {
147150
try {
148151
api.fromJSON(layout);

0 commit comments

Comments
 (0)