diff --git a/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts b/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts index 02689e075..8f72affee 100644 --- a/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts +++ b/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts @@ -5823,9 +5823,9 @@ describe('dockviewComponent', () => { }); }); - test('onDidBlockPopout event is emitted', async () => { + test('onDidOpenPoputWindowFail event is emitted', async () => { const onDidBlockPopoutHandler = jest.fn(); - dockview.onDidBlockPopout(onDidBlockPopoutHandler); + dockview.onDidOpenPopoutWindowFail(onDidBlockPopoutHandler); await dockview.addPopoutGroup(panel.group); diff --git a/packages/dockview-core/src/api/component.api.ts b/packages/dockview-core/src/api/component.api.ts index 555abf1f0..f919d779f 100644 --- a/packages/dockview-core/src/api/component.api.ts +++ b/packages/dockview-core/src/api/component.api.ts @@ -749,8 +749,8 @@ export class DockviewApi implements CommonApi { return this.component.onDidPopoutGroupPositionChange; } - get onDidBlockPopout(): Event { - return this.component.onDidBlockPopout; + get onDidOpenPopoutWindowFail(): Event { + return this.component.onDidOpenPopoutWindowFail; } /** diff --git a/packages/dockview-core/src/dockview/components/titlebar/tabs.ts b/packages/dockview-core/src/dockview/components/titlebar/tabs.ts index 062c1e683..53486ed7c 100644 --- a/packages/dockview-core/src/dockview/components/titlebar/tabs.ts +++ b/packages/dockview-core/src/dockview/components/titlebar/tabs.ts @@ -251,9 +251,6 @@ export class Tabs extends CompositeDisposable { delete(id: string): void { const index = this.indexOf(id); const tabToRemove = this._tabs.splice(index, 1)[0]; - if (!tabToRemove) { - return; - } const { value, disposable } = tabToRemove; diff --git a/packages/dockview-core/src/dockview/dockviewComponent.ts b/packages/dockview-core/src/dockview/dockviewComponent.ts index c06f1c776..2bed69abd 100644 --- a/packages/dockview-core/src/dockview/dockviewComponent.ts +++ b/packages/dockview-core/src/dockview/dockviewComponent.ts @@ -226,7 +226,7 @@ export interface IDockviewComponent extends IBaseGrid { readonly onDidMaximizedGroupChange: Event; readonly onDidPopoutGroupSizeChange: Event; readonly onDidPopoutGroupPositionChange: Event; - readonly onDidBlockPopout: Event; + readonly onDidOpenPopoutWindowFail: Event; readonly options: DockviewComponentOptions; updateOptions(options: DockviewOptions): void; moveGroupOrPanel(options: MoveGroupOrPanelOptions): void; @@ -320,8 +320,9 @@ export class DockviewComponent readonly onDidPopoutGroupPositionChange: Event = this._onDidPopoutGroupPositionChange.event; - private readonly _onDidBlockPopout = new Emitter(); - readonly onDidBlockPopout: Event = this._onDidBlockPopout.event; + private readonly _onDidOpenPopoutWindowFail = new Emitter(); + readonly onDidOpenPopoutWindowFail: Event = + this._onDidOpenPopoutWindowFail.event; private readonly _onDidLayoutFromJSON = new Emitter(); readonly onDidLayoutFromJSON: Event = this._onDidLayoutFromJSON.event; @@ -509,7 +510,7 @@ export class DockviewComponent this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, - this._onDidBlockPopout, + this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => { this.updateWatermark(); }), @@ -739,13 +740,17 @@ export class DockviewComponent } else { group = this.createGroup({ id: groupId }); if (popoutContainer) { - this._onDidAddGroup.fire(group); + this._onDidAddGroup.fire(group); } } if (popoutContainer === null) { + console.error( + 'dockview: failed to create popout. perhaps you need to allow pop-ups for this website' + ); + popoutWindowDisposable.dispose(); - this._onDidBlockPopout.fire(); + this._onDidOpenPopoutWindowFail.fire(); // if the popout window was blocked, we need to move the group back to the reference group // and set it to visible @@ -988,7 +993,7 @@ export class DockviewComponent return true; }) .catch((err) => { - console.error('dockview: failed to create popout window', err); + console.error('dockview: failed to create popout.', err); return false; }); } diff --git a/packages/docs/sandboxes/react/dockview/popout-group/src/app.tsx b/packages/docs/sandboxes/react/dockview/popout-group/src/app.tsx index 1af0cf9bc..ce4585bac 100644 --- a/packages/docs/sandboxes/react/dockview/popout-group/src/app.tsx +++ b/packages/docs/sandboxes/react/dockview/popout-group/src/app.tsx @@ -143,7 +143,7 @@ export const App = (props: { theme?: string }) => { const load = (api: DockviewApi) => { api.clear(); - api.onDidBlockPopout(() => { + api.onDidOpenPopoutWindowFail(() => { console.log('Popout blocked'); }); if (layout) {