From 2111e2293c9f68ca79f04b0bfb5ab94e54f0bd7f Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Mon, 15 Jul 2024 21:16:28 +0100 Subject: [PATCH] bug: fix dockview option --- .../dockview/dockviewComponent.spec.ts | 33 +++++++++++++++++++ .../dockview-core/src/api/component.api.ts | 4 +++ .../src/dockview/dockviewComponent.ts | 11 ++++++- 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts b/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts index de3ef63f3..c23b52c7f 100644 --- a/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts +++ b/packages/dockview-core/src/__tests__/dockview/dockviewComponent.spec.ts @@ -5604,4 +5604,37 @@ describe('dockviewComponent', () => { query = queryByTestId(container, 'watermark-component'); expect(query).toBeFalsy(); }); + + describe('updateOptions', () => { + test('gap', () => { + const container = document.createElement('div'); + + const dockview = new DockviewComponent({ + parentElement: container, + createComponent(options) { + switch (options.name) { + case 'default': + return new PanelContentPartTest( + options.id, + options.name + ); + default: + throw new Error(`unsupported`); + } + }, + gap: 6, + }); + + expect(dockview.gap).toBe(6); + + dockview.updateOptions({ gap: 10 }); + expect(dockview.gap).toBe(10); + + dockview.updateOptions({}); + expect(dockview.gap).toBe(10); + + dockview.updateOptions({ gap: 15 }); + expect(dockview.gap).toBe(15); + }); + }); }); diff --git a/packages/dockview-core/src/api/component.api.ts b/packages/dockview-core/src/api/component.api.ts index 713724ab1..53bf9092e 100644 --- a/packages/dockview-core/src/api/component.api.ts +++ b/packages/dockview-core/src/api/component.api.ts @@ -596,6 +596,10 @@ export class DockviewApi implements CommonApi { return this.component.totalPanels; } + get gap(): number { + return this.component.gap; + } + /** * Invoked when the active group changes. May be undefined if no group is active. */ diff --git a/packages/dockview-core/src/dockview/dockviewComponent.ts b/packages/dockview-core/src/dockview/dockviewComponent.ts index e64965f89..6b0cd13f9 100644 --- a/packages/dockview-core/src/dockview/dockviewComponent.ts +++ b/packages/dockview-core/src/dockview/dockviewComponent.ts @@ -186,6 +186,7 @@ export interface IDockviewComponent extends IBaseGrid { readonly totalPanels: number; readonly panels: IDockviewPanel[]; readonly orientation: Orientation; + readonly gap: number; readonly onDidDrop: Event; readonly onWillDrop: Event; readonly onWillShowOverlay: Event; @@ -349,6 +350,10 @@ export class DockviewComponent return this._api; } + get gap(): number { + return this.gridview.margin; + } + constructor(options: DockviewComponentOptions) { super({ proportionalLayout: true, @@ -1033,7 +1038,11 @@ export class DockviewComponent this._rootDropTarget.setOverlayModel(options.rootOverlayModel!); } - if (this.gridview.margin !== 0 && options.gap === undefined) { + if ( + // if explicitly set as `undefined` + 'gap' in options && + options.gap === undefined + ) { this.gridview.margin = 0; }